[Bug 725159] New: RTP sequence number rollover problems in rtpjitterbuffer

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Feb 25 07:02:39 PST 2014


https://bugzilla.gnome.org/show_bug.cgi?id=725159
  GStreamer | gst-plugins-good | 1.2.3

           Summary: RTP sequence number rollover problems in
                    rtpjitterbuffer
    Classification: Platform
           Product: GStreamer
           Version: 1.2.3
        OS/Version: Windows
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: jake.foytik at ipconfigure.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=270285)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=270285)
changes made to rtpjitterbuffer

Test Environment : 
 - gstreamer 1.2.3 
 - Windows
 - Pipeline : rtspsrc ! fakesink
 - Pulling an Uncompressed MJPEG stream from an Axis Camera at 30 fps which
results to approximately 2700 RTP packets per second.

Symptom :
The rtpjitterbuffer will occasionally enter a state where it is unable to push
new buffers to downstream elements. The rtpjitterbuffer::handle_next_buffer()
function will repeatedly post the debug message "Sequence number GAP detected :
expected .... instead of ...." This eventually results in "Packet too late"
errors in the rtpjitterbuffer:gst_rtp_jitter_buffer_chain() function.
The problem appears to occur when a packet is received ahead of what is
expected and at the RTP sequence number rollover point. (eg. expected seqnum =
65533, received seqnum = 2). In this case, the
rtpjitterbuffer:calculate_expected() function is called and should create
timers for the expected arrival of packets 65533, 65534, 65535, 0, and 1.
However, in the rtpjitterbuffer:calculate_expected() function, the while loop
that adds these timers uses the condition : 
 while(expected < seqnum)
which does not account for the rollover of the RTP sequence number.

Suggested Changes:
In gst-plugins-good/gst/rtpmanager/gstrtpjitterbuffer.c
Change all raw comparisons of RTP sequence numbers to use the
gst_rtp_buffer_compare_seqnum() function. I found 3 lines where this was
happening. See attached patch.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list