rtpbin: Factor out the code that exposes the src pad
authorOlivier Crête <olivier.crete@collabora.com>
Mon, 18 Mar 2019 19:27:21 +0000 (15:27 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Thu, 28 Mar 2019 20:24:12 +0000 (16:24 -0400)
gst/rtpmanager/gstrtpbin.c

index 012762e..a782003 100644 (file)
@@ -3272,23 +3272,16 @@ copy_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data)
   return TRUE;
 }
 
-/* a new pad (SSRC) was created in @session. This signal is emitted from the
- * payload demuxer. */
 static void
-new_payload_found (GstElement * element, guint pt, GstPad * pad,
-    GstRtpBinStream * stream)
+expose_recv_src_pad (GstRtpBin * rtpbin, GstPad * pad, GstRtpBinStream * stream,
+    guint8 pt)
 {
-  GstRtpBin *rtpbin;
   GstElementClass *klass;
   GstPadTemplate *templ;
   gchar *padname;
   GstPad *gpad;
 
-  rtpbin = stream->bin;
-
-  GST_DEBUG_OBJECT (rtpbin, "new payload pad %u", pt);
-
-  pad = gst_object_ref (pad);
+  gst_object_ref (pad);
 
   if (stream->session->storage) {
     GstElement *fec_decoder =
@@ -3367,6 +3360,21 @@ fec_decoder_link_failed:
   }
 }
 
+/* a new pad (SSRC) was created in @session. This signal is emited from the
+ * payload demuxer. */
+static void
+new_payload_found (GstElement * element, guint pt, GstPad * pad,
+    GstRtpBinStream * stream)
+{
+  GstRtpBin *rtpbin;
+
+  rtpbin = stream->bin;
+
+  GST_DEBUG_OBJECT (rtpbin, "new payload pad %u", pt);
+
+  expose_recv_src_pad (rtpbin, pad, stream, pt);
+}
+
 static void
 payload_pad_removed (GstElement * element, GstPad * pad,
     GstRtpBinStream * stream)