jitterbuffer: rearrange timer update code
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 17 Sep 2013 21:01:17 +0000 (23:01 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 17 Sep 2013 21:29:56 +0000 (23:29 +0200)
Also update the timers when retransmission is disabled. We need to
do this because when we added LOST timers when we detected missing packets and
we need to remove those timers when the packet finally arrives.

gst/rtpmanager/gstrtpjitterbuffer.c

index 4b5cf83..f14bebd 100644 (file)
@@ -1611,9 +1611,6 @@ update_timers (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum,
   TimerData *timer = NULL;
   gint i, len;
 
-  if (!priv->do_retransmission)
-    return;
-
   /* go through all timers and unschedule the ones with a large gap, also find
    * the timer for the seqnum */
   len = priv->timers->len;
@@ -1626,9 +1623,6 @@ update_timers (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum,
     GST_DEBUG_OBJECT (jitterbuffer, "%d, #%d<->#%d gap %d", i,
         test->seqnum, seqnum, gap);
 
-    if (test->type == TIMER_TYPE_DEADLINE)
-      continue;
-
     if (gap == 0) {
       GST_DEBUG ("found timer for current seqnum");
       /* the timer for the current seqnum */
@@ -1641,7 +1635,7 @@ update_timers (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum,
     }
   }
 
-  if (priv->packet_spacing > 0 && do_next_seqnum) {
+  if (priv->packet_spacing > 0 && do_next_seqnum && priv->do_retransmission) {
     GstClockTime expected;
 
     /* calculate expected arrival time of the next seqnum */
@@ -1652,7 +1646,7 @@ update_timers (GstRtpJitterBuffer * jitterbuffer, guint16 seqnum,
     else
       add_timer (jitterbuffer, TIMER_TYPE_EXPECTED, priv->next_in_seqnum,
           expected);
-  } else if (timer) {
+  } else if (timer && timer->type != TIMER_TYPE_DEADLINE) {
     /* if we had a timer, remove it, we don't know when to expect the next
      * packet. */
     remove_timer (jitterbuffer, timer);