From: Jan Alexander Steffens (heftig) Date: Fri, 7 May 2021 09:13:46 +0000 (+0200) Subject: rtpsink: Return proper pad from _request_new_pad X-Git-Tag: 1.19.3~507^2~452 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=88d7141ba404bf00d4c720fc66774be24e50b93e;p=platform%2Fupstream%2Fgstreamer.git rtpsink: Return proper pad from _request_new_pad Bizarrely, it returned a pad from the child rtpbin. I noticed because our application leaked the implicitly created ghost pad. Make an explicit ghost pad so this works properly. Part-of: --- diff --git a/gst/rtp/gstrtpsink.c b/gst/rtp/gstrtpsink.c index 83739fb..4ef6ca7 100644 --- a/gst/rtp/gstrtpsink.c +++ b/gst/rtp/gstrtpsink.c @@ -241,7 +241,7 @@ gst_rtp_sink_request_new_pad (GstElement * element, GstPadTemplate * templ, const gchar * name, const GstCaps * caps) { GstRtpSink *self = GST_RTP_SINK (element); - GstPad *pad = NULL; + GstPad *rpad, *pad = NULL; if (self->rtpbin == NULL) { GST_ELEMENT_ERROR (self, CORE, MISSING_PLUGIN, (NULL), @@ -253,7 +253,12 @@ gst_rtp_sink_request_new_pad (GstElement * element, return NULL; GST_RTP_SINK_LOCK (self); - pad = gst_element_request_pad_simple (self->rtpbin, "send_rtp_sink_%u"); + rpad = gst_element_request_pad_simple (self->rtpbin, "send_rtp_sink_%u"); + if (rpad) { + pad = gst_ghost_pad_new (GST_PAD_NAME (rpad), rpad); + gst_element_add_pad (element, pad); + gst_clear_object (&rpad); + } GST_RTP_SINK_UNLOCK (self); g_return_val_if_fail (pad != NULL, NULL);