Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2023-04-15 09:17:09 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-04-22 11:56:37 +0300
commita76330e76c1e5019939f46236d01657bd72713cf (patch)
tree36afc42ea9b2faf918f8f971154e606ec2ab4bb7 /net
parent1f26b9e336b6a0bfd4c943a1bac7a2f8c99579ee (diff)
rtpgccbwe: Don't process empty lists
The structure parsing could result in an empty vector. Don't do any processing since the loss code assumes it's non-empty for average estimates which would result in weird/invalid results. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1189>
Diffstat (limited to 'net')
-rw-r--r--net/rtp/src/gcc/imp.rs27
1 files changed, 15 insertions, 12 deletions
diff --git a/net/rtp/src/gcc/imp.rs b/net/rtp/src/gcc/imp.rs
index 479198ac..f56d0a78 100644
--- a/net/rtp/src/gcc/imp.rs
+++ b/net/rtp/src/gcc/imp.rs
@@ -1184,19 +1184,22 @@ impl ObjectSubclass for BandwidthEstimator {
})
.collect::<Vec<Packet>>();
- let bitrate_changed = {
- let mut state = this.state.lock().unwrap();
-
- state.detector.update(&mut packets);
- if !state.delay_control(&bwe) {
- state.loss_control(&bwe)
- } else {
- true
+ // The list of packets could be empty once parsed
+ if !packets.is_empty() {
+ let bitrate_changed = {
+ let mut state = this.state.lock().unwrap();
+
+ state.detector.update(&mut packets);
+ if !state.delay_control(&bwe) {
+ state.loss_control(&bwe)
+ } else {
+ true
+ }
+ };
+
+ if bitrate_changed {
+ bwe.notify("estimated-bitrate")
}
- };
-
- if bitrate_changed {
- bwe.notify("estimated-bitrate")
}
}
}