mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-09-03 10:13:47 +00:00
webrtcsrc: the webrtcbin get-transceiver index is not mlineindex
Instead search through the list of transceivers for the transceiver with the relevant mlineindex property. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1829 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2292>
This commit is contained in:
parent
0fba9bd61e
commit
083496d3bf
1 changed files with 20 additions and 4 deletions
|
@ -895,10 +895,26 @@ impl Session {
|
||||||
obj = element,
|
obj = element,
|
||||||
"Getting transceiver for {stream_id} and index {i} with caps: {caps:#?}"
|
"Getting transceiver for {stream_id} and index {i} with caps: {caps:#?}"
|
||||||
);
|
);
|
||||||
let transceiver = webrtcbin.emit_by_name::<Option<gst_webrtc::WebRTCRTPTransceiver>>(
|
let mut transceiver = None;
|
||||||
"get-transceiver",
|
let mut idx = 0i32;
|
||||||
&[&(i as i32)],
|
// find the transceiver with this mline
|
||||||
).unwrap_or_else(|| {
|
loop {
|
||||||
|
let Some(to_check) = webrtcbin
|
||||||
|
.emit_by_name::<Option<gst_webrtc::WebRTCRTPTransceiver>>(
|
||||||
|
"get-transceiver",
|
||||||
|
&[&idx],
|
||||||
|
)
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
let mline = to_check.property::<u32>("mlineindex");
|
||||||
|
if mline as usize == i {
|
||||||
|
transceiver = Some(to_check);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
let transceiver = transceiver.unwrap_or_else(|| {
|
||||||
gst::warning!(CAT, "Transceiver for idx {i} does not exist, GStreamer <= 1.24, adding it ourself");
|
gst::warning!(CAT, "Transceiver for idx {i} does not exist, GStreamer <= 1.24, adding it ourself");
|
||||||
webrtcbin.emit_by_name::<gst_webrtc::WebRTCRTPTransceiver>(
|
webrtcbin.emit_by_name::<gst_webrtc::WebRTCRTPTransceiver>(
|
||||||
"add-transceiver",
|
"add-transceiver",
|
||||||
|
|
Loading…
Reference in a new issue