jitterbuffer: remove lost timer when we get the packet
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 19 Aug 2013 12:58:01 +0000 (14:58 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 19 Aug 2013 20:04:50 +0000 (22:04 +0200)
When we receive a packet, also remove the LOST timer for it.

gst/rtpmanager/gstrtpjitterbuffer.c

index 3c1e23f..044ffff 100644 (file)
@@ -1584,14 +1584,21 @@ update_timers (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum,
     TimerData *test = &g_array_index (priv->timers, TimerData, i);
     gint gap;
 
-    if (test->type != TIMER_TYPE_EXPECTED)
-      continue;
-
     gap = gst_rtp_buffer_compare_seqnum (test->seqnum, seqnum);
 
     GST_DEBUG_OBJECT (jitterbuffer, "%d, #%d<->#%d gap %d", i,
         test->seqnum, seqnum, gap);
 
+    if (test->type == TIMER_TYPE_LOST) {
+      if (gap == 0) {
+        remove_timer (jitterbuffer, test);
+        len--;
+        i--;
+      }
+      continue;
+    } else if (test->type != TIMER_TYPE_EXPECTED)
+      continue;
+
     if (gap == 0) {
       /* the timer for the current seqnum */
       timer = test;