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>2023-11-24 21:53:38 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-12-18 11:05:06 +0300
commit824ae39848e7ce68e49c305805727b12e93d26c6 (patch)
tree43f76d9c8ffefb74386986b567ce8b1908b71b61
parentfc02f5abd4d1ed71a8c12c3c900221f3830eba43 (diff)
webrtcsink: don't panic on failure to request pad from webrtcbin
webrtcbin will refuse pad requests for all sorts of reasons, and should be logging an error when doing so, simply post an error message and let the application deal with it, the reason for the refusal should hopefully be available in the logs to the user. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1410>
-rw-r--r--net/webrtc/src/webrtcsink/imp.rs24
1 files changed, 18 insertions, 6 deletions
diff --git a/net/webrtc/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs
index e8846cf7e..8d88b413c 100644
--- a/net/webrtc/src/webrtcsink/imp.rs
+++ b/net/webrtc/src/webrtcsink/imp.rs
@@ -1479,9 +1479,15 @@ impl BaseWebRTCSink {
let ssrc = BaseWebRTCSink::generate_ssrc(element, webrtc_pads);
let media_idx = webrtc_pads.len() as i32;
- let pad = webrtcbin
- .request_pad_simple(&format!("sink_{}", media_idx))
- .unwrap();
+ let Some(pad) = webrtcbin.request_pad_simple(&format!("sink_{}", media_idx)) else {
+ gst::error!(CAT, obj: element, "Failed to request pad from webrtcbin");
+ gst::element_error!(
+ element,
+ gst::StreamError::Failed,
+ ["Failed to request pad from webrtcbin"]
+ );
+ return;
+ };
let transceiver = pad.property::<gst_webrtc::WebRTCRTPTransceiver>("transceiver");
@@ -1574,9 +1580,15 @@ impl BaseWebRTCSink {
payloader_caps
);
- let pad = webrtcbin
- .request_pad_simple(&format!("sink_{}", media_idx))
- .unwrap();
+ let Some(pad) = webrtcbin.request_pad_simple(&format!("sink_{}", media_idx)) else {
+ gst::error!(CAT, obj: element, "Failed to request pad from webrtcbin");
+ gst::element_error!(
+ element,
+ gst::StreamError::Failed,
+ ["Failed to request pad from webrtcbin"]
+ );
+ return;
+ };
let transceiver = pad.property::<gst_webrtc::WebRTCRTPTransceiver>("transceiver");