rtpjitterbuffer: Fix stall when receiving already lost packet
authorHavard Graff <havard.graff@gmail.com>
Tue, 3 May 2016 09:45:01 +0000 (11:45 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 6 May 2016 11:32:42 +0000 (14:32 +0300)
commit8f7962e1c3178bb6f84c7d9d06e3172ae7dfd273
tree31c24ad1e8fb702f0e7cd46810ce9147a75d4111
parent2e960e70750a0cb7e1117d0c09d08597866a29ee
rtpjitterbuffer: Fix stall when receiving already lost packet

When a packet arrives that has already been considered lost as part of a
large gap the "lost timer" for this will be cancelled. If the remaining
packets of this large gap never arrives, there will be missing entries
in the queue and the loop function will keep waiting for these packets
to arrive and never push another packet, effectively stalling the
pipeline.

The proposed fix conciders parts of a large gap definitely lost (since
they are calculated from latency) and ignores the late arrivals.

In practice the issue is rare since large gaps are scheduled immediately,
and for the stall to happen the late arrival needs to be processed
before this times out.

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