Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-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
committerMathieu Duponchelle <mathieu@centricular.com>2023-11-24 21:53:38 +0300
commitcf1c7600a2dc3db8770b100c730b618a843729d6 (patch)
treefc24e701b829168a815f79e9a06b9e7220e3659d
parentd644bcd79a7ad8ce52e6882b5abd4056daaa463c (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/1399>
-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 453e5e12..ee3e4bc1 100644
--- a/net/webrtc/src/webrtcsink/imp.rs
+++ b/net/webrtc/src/webrtcsink/imp.rs
@@ -1472,9 +1472,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");
@@ -1567,9 +1573,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");