rtpjitterbuffer: When request retransmissions for future packets, consider the packet...
authorSebastian Dröge <sebastian@centricular.com>
Wed, 22 Apr 2015 18:24:20 +0000 (20:24 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 22 Apr 2015 18:27:18 +0000 (20:27 +0200)
We now take the maximum of 2*jitter and 0.5*packet_spacing for the extra
delay. If jitter is very low, this should prevent unnecessary retransmission
requests to some degree.

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

gst/rtpmanager/gstrtpjitterbuffer.c

index 673713e..ded09c1 100644 (file)
@@ -1889,11 +1889,13 @@ get_rtx_delay (GstRtpJitterBufferPrivate * priv)
   GstClockTime delay;
 
   if (priv->rtx_delay == -1) {
-    if (priv->avg_jitter == 0)
+    if (priv->avg_jitter == 0 && priv->packet_spacing == 0) {
       delay = DEFAULT_AUTO_RTX_DELAY;
-    else
-      /* jitter is in nanoseconds, 2x jitter is a good margin */
-      delay = priv->avg_jitter * 2;
+    } else {
+      /* jitter is in nanoseconds, maximum of 2x jitter and half the
+       * packet spacing is a good margin */
+      delay = MAX (priv->avg_jitter * 2, priv->packet_spacing / 2);
+    }
   } else {
     delay = priv->rtx_delay * GST_MSECOND;
   }