jitterbuffer: Allow rtp caps without clock-rate
authorYouness Alaoui <kakaroto@kakaroto.homelinux.net>
Fri, 8 Aug 2014 01:58:14 +0000 (21:58 -0400)
committerOlivier CrĂȘte <olivier.crete@collabora.com>
Thu, 21 Aug 2014 22:32:58 +0000 (18:32 -0400)
The jitterbuffer shouldn't force clock-rate on its sink pad, this will cause a negotiation issue since rtpssrcdemux doesn't have the clock-rate and doesn't add it to the caps. The documentation states that the clock-rate can either be specified through the caps or through the request-pt-map signal, so we must remove clock-rate from the pad templates and we must accept the GST_EVENT_CAPS if the caps don't have the clock-rate.

https://bugzilla.gnome.org/show_bug.cgi?id=734322

gst/rtpmanager/gstrtpjitterbuffer.c

index c8c512e..0eccd1a 100644 (file)
@@ -342,9 +342,9 @@ static GstStaticPadTemplate gst_rtp_jitter_buffer_sink_template =
 GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("application/x-rtp"
-        "clock-rate = (int) [ 1, 2147483647 ]"
-        /* "payload = (int) , "
+    GST_STATIC_CAPS ("application/x-rtp"
+        /* "clock-rate = (int) [ 1, 2147483647 ], "
+         * "payload = (int) , "
          * "encoding-name = (string) "
          */ )
     );
@@ -1364,9 +1364,7 @@ queue_event (GstRtpJitterBuffer * jitterbuffer, GstEvent * event)
       GstCaps *caps;
 
       gst_event_parse_caps (event, &caps);
-      if (!gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps))
-        goto wrong_caps;
-
+      gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps);
       break;
     }
     case GST_EVENT_SEGMENT:
@@ -1397,12 +1395,6 @@ queue_event (GstRtpJitterBuffer * jitterbuffer, GstEvent * event)
   return TRUE;
 
   /* ERRORS */
-wrong_caps:
-  {
-    GST_DEBUG_OBJECT (jitterbuffer, "received invalid caps");
-    gst_event_unref (event);
-    return FALSE;
-  }
 newseg_wrong_format:
   {
     GST_DEBUG_OBJECT (jitterbuffer, "received non TIME newsegment");