rtprtxsend: if no rtx is present, don't expose a rtx-ssrc in caps
authorHavard Graff <havard.graff@gmail.com>
Mon, 1 Feb 2021 15:07:08 +0000 (16:07 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 9 Mar 2022 15:30:37 +0000 (15:30 +0000)
The point here is that rtpsession will create a new rtpsource when
the field "rtx-ssrc" is present, and when not doing rtx, that means
a random ssrc will create a new rtpsource that will be included in RTCP
messages for the current session.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1882>

subprojects/gst-plugins-good/gst/rtpmanager/gstrtprtxsend.c

index 57e2a84..e873d45 100644 (file)
@@ -661,14 +661,16 @@ gst_rtp_rtx_send_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
 
       gst_structure_get_int (s, "clock-rate", &data->clock_rate);
 
-      /* The session might need to know the RTX ssrc */
       caps = gst_caps_copy (caps);
-      gst_caps_set_simple (caps, "rtx-ssrc", G_TYPE_UINT, data->rtx_ssrc,
-          "rtx-seqnum-offset", G_TYPE_UINT, data->seqnum_base, NULL);
 
-      if (GPOINTER_TO_INT (rtx_payload) != -1)
+      /* The session might need to know the RTX ssrc */
+      if (GPOINTER_TO_INT (rtx_payload) != -1) {
+        gst_caps_set_simple (caps, "rtx-ssrc", G_TYPE_UINT, data->rtx_ssrc,
+            "rtx-seqnum-offset", G_TYPE_UINT, data->seqnum_base, NULL);
+
         gst_caps_set_simple (caps, "rtx-payload", G_TYPE_INT,
             GPOINTER_TO_INT (rtx_payload), NULL);
+      }
 
       GST_DEBUG_OBJECT (rtx, "got clock-rate from caps: %d for ssrc: %u",
           data->clock_rate, ssrc);