rtpjitterbuffer: fix timer-reuse bug
authorHavard Graff <havard.graff@gmail.com>
Thu, 3 Nov 2016 14:03:59 +0000 (15:03 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 4 Nov 2016 14:56:56 +0000 (16:56 +0200)
commit1a4393fb4d29a296b8c131041b46f25de8698c1b
tree4cd6a23ec8718a9abdcd51bcd7f5b9f2e8536456
parentfb9c75db360ff1aa61710804b08788b6c35f44df
rtpjitterbuffer: fix timer-reuse bug

When doing rtx, the jitterbuffer will always add an rtx-timer for the next
sequence number.

In the case of the packet corresponding to that sequence number arriving,
that same timer will be reused, and simply moved on to wait for the
following sequence number etc.

Once an rtx-timer expires (after all retries), it will be rescheduled as
a lost-timer instead for the same sequence number.

Now, if this particular sequence-number now arrives (after the timer has
become a lost-timer), the reuse mechanism *should* now set a new
rtx-timer for the next sequence number, but the bug is that it does
not change the timer-type, and hence schedules a lost-timer for that
following sequence number, with the result that you will have a very
early lost-event for a packet that might still arrive, and you will
never be able to send any rtx for this packet.

Found by Erlend Graff - erlend@pexip.com

https://bugzilla.gnome.org/show_bug.cgi?id=773891
gst/rtpmanager/gstrtpjitterbuffer.c
tests/check/elements/rtpjitterbuffer.c