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
path: root/net
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2023-05-24 14:33:52 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-06-06 22:52:43 +0300
commit8248425905e7ec4ea2d45f9eff0d9c587c54d615 (patch)
tree63764332157ef0f1a61081e57e356a629c7791cc /net
parente9d32fb221a9ae87b5f26288324e769134e7d248 (diff)
webrtcsink: further refactor connection to stats signals
- Stop passing webrtcbin around without using it - Stop using glib::closure as clippy complains when using a unit type default-return Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234>
Diffstat (limited to 'net')
-rw-r--r--net/webrtc/src/webrtcsink/imp.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/net/webrtc/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs
index b786c78eb..0895381ec 100644
--- a/net/webrtc/src/webrtcsink/imp.rs
+++ b/net/webrtc/src/webrtcsink/imp.rs
@@ -1618,7 +1618,7 @@ impl WebRTCSink {
}
});
- let session = Session::new(
+ let mut session = Session::new(
session_id.clone(),
pipeline.clone(),
webrtcbin.clone(),
@@ -1644,21 +1644,24 @@ impl WebRTCSink {
if session.congestion_controller.is_some() {
let session_id_str = session_id.to_string();
rtpbin.connect_closure("on-new-ssrc", true,
- glib::closure!(@weak-allow-none element, @weak-allow-none webrtcbin
+ glib::closure!(@weak-allow-none element,
=> move |rtpbin: gst::Object, session_id: u32, _src: u32| {
let rtp_session = rtpbin.emit_by_name::<gst::Element>("get-session", &[&session_id]);
let element = element.expect("on-new-ssrc emited when webrtcsink has been disposed?");
- let webrtcbin = webrtcbin.unwrap();
let mut state = element.imp().state.lock().unwrap();
if let Some(mut session) = state.sessions.get_mut(&session_id_str) {
if session.stats_sigid.is_none() {
+ let session_id_str = session_id_str.clone();
+ let element = element.downgrade();
session.stats_sigid = Some(rtp_session.connect_notify(Some("twcc-stats"),
- glib::clone!(@strong session_id_str, @weak webrtcbin, @weak element => @default-return (), move |sess, pspec| {
- // Run the Loss-based control algorithm on new peer TWCC feedbacks
- element.imp().process_loss_stats(&element, &session_id_str, &sess.property::<gst::Structure>(pspec.name()));
- })
+ move |sess, pspec| {
+ if let Some(element) = element.upgrade() {
+ // Run the Loss-based control algorithm on new peer TWCC feedbacks
+ element.imp().process_loss_stats(&element, &session_id_str, &sess.property::<gst::Structure>(pspec.name()));
+ }
+ }
));
}
}