jitterbuffer: reset is only possible with a GAP
authorWim Taymans <wim.taymans@collabora.co.uk>
Thu, 1 Aug 2013 09:40:41 +0000 (11:40 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 1 Aug 2013 09:40:41 +0000 (11:40 +0200)
gst/rtpmanager/gstrtpjitterbuffer.c

index 9adda07..8491b01 100644 (file)
@@ -1352,10 +1352,11 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
   /* now check against our expected seqnum */
   if (G_LIKELY (priv->next_in_seqnum != -1)) {
     gint gap;
-    gboolean reset = FALSE;
 
     gap = gst_rtp_buffer_compare_seqnum (priv->next_in_seqnum, seqnum);
     if (G_UNLIKELY (gap != 0)) {
+      gboolean reset = FALSE;
+
       GST_DEBUG_OBJECT (jitterbuffer, "expected #%d, got #%d, gap of %d",
           priv->next_in_seqnum, seqnum, gap);
       /* priv->next_in_seqnum >= seqnum, this packet is too late or the
@@ -1372,14 +1373,14 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
       } else {
         GST_DEBUG_OBJECT (jitterbuffer, "tolerable gap");
       }
-    }
-    if (G_UNLIKELY (reset)) {
-      GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer");
-      rtp_jitter_buffer_flush (priv->jbuf);
-      rtp_jitter_buffer_reset_skew (priv->jbuf);
-      remove_all_timers (jitterbuffer);
-      priv->last_popped_seqnum = -1;
-      priv->next_seqnum = seqnum;
+      if (G_UNLIKELY (reset)) {
+        GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer");
+        rtp_jitter_buffer_flush (priv->jbuf);
+        rtp_jitter_buffer_reset_skew (priv->jbuf);
+        remove_all_timers (jitterbuffer);
+        priv->last_popped_seqnum = -1;
+        priv->next_seqnum = seqnum;
+      }
     }
   }
   priv->next_in_seqnum = (seqnum + 1) & 0xffff;