GNOME Bugzilla – Bug 739709
rtpjitterbuffer: dead loop when schedule one dead line timer.
Last modified: 2014-12-05 03:32:50 UTC
rtpjitterbuffer will schedule one dead line timer if expected sequence number is -1. the timer will record the sequence number. but rtpjitterbuffer source pad active will send signal to start push buffer, it will cause can't find timer recorded packet and dead loop in handle_next_buffer().
Created attachment 290071 [details] [review] patch to fix the issue.
one patch on latest code has fixed the issue. close it.
Do you know which one?
commit 6c584bc8337da0a19287d51eaf05c608711b9ef5 Author: Mark Nauwelaerts <mnauw@users.sourceforge.net> Date: Sun May 4 13:37:46 2014 +0200 rtpjitterbuffer: avoid stall by corrupted seqnum accounting diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 1459e91..62d7228 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -2826,7 +2826,10 @@ do_deadline_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, GST_INFO_OBJECT (jitterbuffer, "got deadline timeout"); - priv->next_seqnum = timer->seqnum; + /* timer seqnum might have been obsoleted by caps seqnum-base, + * only mess with current ongoing seqnum if still unknown */ + if (priv->next_seqnum == -1) + priv->next_seqnum = timer->seqnum; remove_timer (jitterbuffer, timer); JBUF_SIGNAL_EVENT (priv);