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

gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2022-05-11 02:42:10 +0300
committerSebastian Dröge <sebastian@centricular.com>2022-06-07 20:57:09 +0300
commit11a1bbbe6984a3a5e8b38039b587a3b7698efdc9 (patch)
tree9da5d4eb3ffda4f47055658256dc1c901a205fd2
parent71877934b52563327bbdee003cc3a0369513ed7c (diff)
ts-jitterbuffer: set jbuf delay when instantiating it
The internal (C) jitterbuffer needs to know about the configured latency when calculating a PTS, as it otherwise may consider that the packet is too late, trigger a resync and cause the element to discard the packet altogether. I could not identify when this was broken, but the net effect was that in the current state, ts-jitterbuffer was discarding up to half of all the incoming packets.
-rw-r--r--generic/threadshare/src/jitterbuffer/imp.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/generic/threadshare/src/jitterbuffer/imp.rs b/generic/threadshare/src/jitterbuffer/imp.rs
index c84d8050c..2dca50371 100644
--- a/generic/threadshare/src/jitterbuffer/imp.rs
+++ b/generic/threadshare/src/jitterbuffer/imp.rs
@@ -1080,7 +1080,12 @@ impl TaskImpl for JitterBufferTask {
self.sink_pad_handler.clear();
let jb = self.element.imp();
- *jb.state.lock().unwrap() = State::default();
+
+ let latency = jb.settings.lock().unwrap().latency;
+ let state = State::default();
+
+ state.jbuf.borrow().set_delay(latency);
+ *jb.state.lock().unwrap() = state;
gst_log!(CAT, obj: &self.element, "Task started");
Ok(())