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:
-rw-r--r--generic/threadshare/src/jitterbuffer/jitterbuffer.rs27
1 files changed, 17 insertions, 10 deletions
diff --git a/generic/threadshare/src/jitterbuffer/jitterbuffer.rs b/generic/threadshare/src/jitterbuffer/jitterbuffer.rs
index 07ece7952..273cba426 100644
--- a/generic/threadshare/src/jitterbuffer/jitterbuffer.rs
+++ b/generic/threadshare/src/jitterbuffer/jitterbuffer.rs
@@ -450,16 +450,23 @@ impl SinkHandler {
}
}
- if state.clock_rate.is_none() {
- let caps = element
- .emit("request-pt-map", &[&(pt as u32)])
- .map_err(|_| gst::FlowError::Error)?
- .ok_or(gst::FlowError::Error)?
- .get::<gst::Caps>()
- .map_err(|_| gst::FlowError::Error)?
- .ok_or(gst::FlowError::Error)?;
- self.parse_caps(inner, &mut state, element, &caps, pt)?;
- }
+ let mut state = {
+ if state.clock_rate.is_none() {
+ drop(state);
+ let caps = element
+ .emit("request-pt-map", &[&(pt as u32)])
+ .map_err(|_| gst::FlowError::Error)?
+ .ok_or(gst::FlowError::Error)?
+ .get::<gst::Caps>()
+ .map_err(|_| gst::FlowError::Error)?
+ .ok_or(gst::FlowError::Error)?;
+ let mut state = jb.state.lock().unwrap();
+ self.parse_caps(inner, &mut state, element, &caps, pt)?;
+ state
+ } else {
+ state
+ }
+ };
inner.packet_rate_ctx.update(seq, rtptime);