From 9d88ac9cbb47e32ea185a477cd893a993b0d6bd5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 1 Aug 2013 11:40:41 +0200 Subject: [PATCH] jitterbuffer: reset is only possible with a GAP --- gst/rtpmanager/gstrtpjitterbuffer.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 9adda07..8491b01 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -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; -- 2.7.4