From 92050d6a596a9896238c19714e9cd8438b4ed948 Mon Sep 17 00:00:00 2001 From: Bernhard Jung Date: Thu, 9 May 2019 18:39:28 +0200 Subject: [PATCH] do no use gst_element_link but gst_pad_link in pad-added callbacks to prevent situations where on multiple incoming streams they might not get linked correctly and leave a stream unconnected --- webrtc/multiparty-sendrecv/gst/mp-webrtc-sendrecv.c | 5 ++++- webrtc/sendrecv/gst/webrtc-sendrecv.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/webrtc/multiparty-sendrecv/gst/mp-webrtc-sendrecv.c b/webrtc/multiparty-sendrecv/gst/mp-webrtc-sendrecv.c index 2016b5e..32c9a08 100644 --- a/webrtc/multiparty-sendrecv/gst/mp-webrtc-sendrecv.c +++ b/webrtc/multiparty-sendrecv/gst/mp-webrtc-sendrecv.c @@ -171,6 +171,7 @@ static void on_incoming_stream (GstElement * webrtc, GstPad * pad, GstElement * pipe) { GstElement *decodebin; + GstPad *sinkpad; if (GST_PAD_DIRECTION (pad) != GST_PAD_SRC) return; @@ -180,7 +181,9 @@ on_incoming_stream (GstElement * webrtc, GstPad * pad, GstElement * pipe) G_CALLBACK (on_incoming_decodebin_stream), pipe); gst_bin_add (GST_BIN (pipe), decodebin); gst_element_sync_state_with_parent (decodebin); - gst_element_link (webrtc, decodebin); + + sinkpad = gst_element_get_static_pad (decodebin, "sink"); + gst_pad_link (pad, sinkpad); } static void diff --git a/webrtc/sendrecv/gst/webrtc-sendrecv.c b/webrtc/sendrecv/gst/webrtc-sendrecv.c index 7039618..867b25a 100644 --- a/webrtc/sendrecv/gst/webrtc-sendrecv.c +++ b/webrtc/sendrecv/gst/webrtc-sendrecv.c @@ -172,6 +172,7 @@ static void on_incoming_stream (GstElement * webrtc, GstPad * pad, GstElement * pipe) { GstElement *decodebin; + GstPad *sinkpad; if (GST_PAD_DIRECTION (pad) != GST_PAD_SRC) return; @@ -181,7 +182,9 @@ on_incoming_stream (GstElement * webrtc, GstPad * pad, GstElement * pipe) G_CALLBACK (on_incoming_decodebin_stream), pipe); gst_bin_add (GST_BIN (pipe), decodebin); gst_element_sync_state_with_parent (decodebin); - gst_element_link (webrtc, decodebin); + + sinkpad = gst_element_get_static_pad (decodebin, "sink"); + gst_pad_link (pad, sinkpad); } static void -- 2.7.4