jitterbuffer: avoid throwing reordered buffers with same timestamps

When we receive a reordered packet with the same timestamp as the previous one
(which can happen for fragmented packets) don't consider the packet as lost but
instead wait for the reordered packet to arrive.

Switch the warning-level, so that a reordering does not get a warning, only
an actual produced lost-packet.

Fixes #594251
This commit is contained in:
Håvard Graff 2009-09-08 13:39:31 +02:00 committed by Wim Taymans
parent 6108024838
commit 40549278c3

View file

@ -1486,7 +1486,7 @@ again:
if (gap > 0) {
/* we have a gap */
GST_WARNING_OBJECT (jitterbuffer,
GST_DEBUG_OBJECT (jitterbuffer,
"Sequence number GAP detected: expected %d instead of %d (%d missing)",
next_seqnum, seqnum, gap);
@ -1498,7 +1498,7 @@ again:
* number of packets we are missing, this is the estimated duration
* for the missing packet based on equidistant packet spacing. Also make
* sure we never go negative. */
if (out_time > priv->last_out_time)
if (out_time >= priv->last_out_time)
duration = (out_time - priv->last_out_time) / (gap + 1);
else
goto lost;
@ -1567,7 +1567,7 @@ again:
GstEvent *event;
/* we had a gap and thus we lost a packet. Create an event for this. */
GST_DEBUG_OBJECT (jitterbuffer, "Packet #%d lost", next_seqnum);
GST_WARNING_OBJECT (jitterbuffer, "Packet #%d lost", next_seqnum);
priv->num_late++;
discont = TRUE;