GNOME Bugzilla – Bug 556520
jitterbuffer seqnum gap detection is wrong
Last modified: 2008-10-16 13:06:13 UTC
The jitterbuffer use the wrong variable to detect gaps in the seqnum of input packets. The last_popped_seqnum variable is used to check for big gaps but since this variable controls the seqnums on the output pads it can't be used to check for seqnums on the input pad. This causes the jitterbuffer to check for gaps with each received packet and could possibly erronously reset the jitterbuffer.
Created attachment 120701 [details] [review] proposed patch This patch introduces a new variable to track seqnums on the input pad.
Created attachment 120707 [details] [review] improved patch Improved patch that withstands serious seqnum discont abuse. Also flushes the jitterbuffer when a discont is found.
* gst/rtpmanager/gstrtpjitterbuffer.c: (gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_flush_start), (gst_rtp_jitter_buffer_flush_stop), (gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop): Fix problem with using the output seqnum counter to check for input seqnum discontinuities. Improve gap detection and recovery, reset and flush the jitterbuffer on seqnum restart. Fixes #556520.