jitterbuffer: do skew estimation only for new timestamps
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 6 Feb 2013 16:15:11 +0000 (17:15 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 6 Feb 2013 16:15:11 +0000 (17:15 +0100)
Only run the skew estimation code when we have a new RTP timestamp. If we have
the same RTP timestamp, we simply use the previous estimation. This works
because the new observation with the same RTP timestamp has to have a bigger
receiver time and is thus not going to influence the estimation except for
causing more jitter.

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

gst/rtpmanager/rtpjitterbuffer.c

index a6bcd99..f3e85e1 100644 (file)
@@ -373,6 +373,9 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time,
 
   ext_rtptime = gst_rtp_buffer_ext_timestamp (&jbuf->ext_rtptime, rtptime);
 
+  if (jbuf->last_rtptime != -1 && ext_rtptime == jbuf->last_rtptime)
+    return jbuf->prev_out_time;
+
   gstrtptime = gst_util_uint64_scale_int (ext_rtptime, GST_SECOND, clock_rate);
 
   /* keep track of the last extended rtptime */