From ef06421a25877cf7f7823300221c6060739ab14a Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Wed, 16 Oct 2024 14:05:13 +0200 Subject: [PATCH] webrtcsrc: make updated transceiver retrieval backward compatible In 1.24 and before transceivers for remote sendonly medias are only created at answer time. If that is the case, we can add the transceiver ourself, it will get associated when creating the answer. Part-of: --- net/webrtc/src/webrtcsrc/imp.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/net/webrtc/src/webrtcsrc/imp.rs b/net/webrtc/src/webrtcsrc/imp.rs index 17fff28ae..584c9934c 100644 --- a/net/webrtc/src/webrtcsrc/imp.rs +++ b/net/webrtc/src/webrtcsrc/imp.rs @@ -844,10 +844,15 @@ impl Session { obj = element, "Getting transceiver for {stream_id} and index {i} with caps: {caps:#?}" ); - let transceiver = webrtcbin.emit_by_name::( + let transceiver = webrtcbin.emit_by_name::>( "get-transceiver", &[&(i as i32)], - ); + ).unwrap_or_else(|| { + gst::warning!(CAT, "Transceiver for idx {i} does not exist, GStreamer <= 1.24, adding it ourself"); + webrtcbin.emit_by_name::( + "add-transceiver", + &[&gst_webrtc::WebRTCRTPTransceiverDirection::Recvonly, &caps]) + }); transceiver.set_property("do_nack", do_retransmission); transceiver.set_property("fec-type", gst_webrtc::WebRTCFECType::UlpRed);