gst/rtpmanager/gstrtpjitterbuffer.c: Try to get the new clock-rate from the buffer...
authorThijs Vermeir <thijsvermeir@gmail.com>
Tue, 29 Jan 2008 18:57:27 +0000 (18:57 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 29 Jan 2008 18:57:27 +0000 (18:57 +0000)
Original commit message from CVS:
Patch by: Thijs Vermeir  <thijsvermeir at gmail dot com>
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain):
Try to get the new clock-rate from the buffer caps when we receive a new
payload type instead of always firing the signal. Fixes #512774.

ChangeLog
gst/rtpmanager/gstrtpjitterbuffer.c

index 9ce784e6b0a31ea6cd66b6e57e4fa6a73543a91c..6dc80baaaceea8f97769aefb73f11a56d4584d78 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-01-29  Wim Taymans  <wim.taymans@collabora.co.uk>
+
+       Patch by: Thijs Vermeir  <thijsvermeir at gmail dot com>
+
+       * gst/rtpmanager/gstrtpjitterbuffer.c:
+       (gst_rtp_jitter_buffer_chain):
+       Try to get the new clock-rate from the buffer caps when we receive a new
+       payload type instead of always firing the signal. Fixes #512774.
+
 2008-01-29  Sebastian Dröge  <slomo@circular-chaos.org>
 
        * ext/mpeg2enc/gstmpeg2enc.cc:
        (gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop):
        Remove old unused variable.
        Track pt on input buffers and get the clock-rate when it changes.
-       Ignore packets with unknown clock-rate. See #511686.
+       Ignore packets with unknown clock-rate. Fixes #511146.
 
 2008-01-25  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
 
index 142cc95f5b778e812f3a98dd49a2b2078315fb0e..3d2e77974b56c82a188d8f49bfe9e6722ff14a6f 100644 (file)
@@ -806,9 +806,16 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstBuffer * buffer)
   priv = jitterbuffer->priv;
 
   if (priv->last_pt != gst_rtp_buffer_get_payload_type (buffer)) {
+    GstCaps *caps;
+
     priv->last_pt = gst_rtp_buffer_get_payload_type (buffer);
     /* reset clock-rate so that we get a new one */
     priv->clock_rate = -1;
+    /* Try to get the clock-rate from the caps first if we can. If there are no
+     * caps we must fire the signal to get the clock-rate. */
+    if ((caps = GST_BUFFER_CAPS (buffer))) {
+      gst_jitter_buffer_sink_parse_caps (jitterbuffer, caps);
+    }
   }
 
   if (priv->clock_rate == -1) {