After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 709800 - rtpjitterbuffer: stalled stream after gst_rtp_jitter_buffer_clear_pt_map() being called.
rtpjitterbuffer: stalled stream after gst_rtp_jitter_buffer_clear_pt_map() be...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.2.0
Other Linux
: Normal normal
: 1.2.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-10-10 09:46 UTC by Fabrice Bellet
Modified: 2013-11-25 14:53 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Fabrice Bellet 2013-10-10 09:46:09 UTC
Hi!

In empathy on Fedora-20, I start an audio connection (xmpp) with a peer, and I enable the video a few seconds later. When the video is enabled, the audio stops being received (both peer are symetric in my testcase : same Fedora version)

I debugged the problem up to gst_rtp_jitter_buffer_clear_pt_map() being called when the new streams are enabled. This causes next_seqnum to be reset to value -1, and this value is never modified again, causing packets to accumulate in handle_next_buffer().

Full debug logs are here : http://bellet.info/gstreamer
(the pipeline is also provided when audio only is used, and after video is enabled)

The problem begins at timeframe 0:00:19.766628529:

0:00:19.766628529 10530      0x1a24890 DEBUG        rtpjitterbuffer gstrtpjitterbuffer.c:903:gst_rtp_jitter_buffer_clear_pt_map:<rtpjitterbuffer0> reset jitterbuffer

The value of next_seqnum is not updated in gst_jitter_buffer_sink_parse_caps(), at timeframe 0:00:19.808406390, because the value for seqnum-base is not defined in the caps_struct. And the rtpjitterbuffer remains stalled with buffer #25995:

0:00:19.808975837 10530      0x2250630 DEBUG        rtpjitterbuffer gstrtpjitterbuffer.c:2372:handle_next_buffer:<rtpjitterbuffer0> First buffer #25995
0:00:19.809187602 10530      0x2250630 DEBUG        rtpjitterbuffer gstrtpjitterbuffer.c:2372:handle_next_buffer:<rtpjitterbuffer0> First buffer #25995
0:00:19.809403417 10530      0x2250630 DEBUG        rtpjitterbuffer gstrtpjitterbuffer.c:2372:handle_next_buffer:<rtpjitterbuffer0> First buffer #25995


A naive fix, that seems to work for me consists in also setting next_in_seqnum to value -1 in gst_rtp_jitter_buffer_clear_pt_map().
Comment 1 Wim Taymans 2013-11-25 14:53:22 UTC
commit 710d1f3a2acb0245e6a0cfe37319fca4606901a4
Author: Wim Taymans <wtaymans@redhat.com>
Date:   Mon Nov 25 15:49:07 2013 +0100

    rtpjitterbuffer: improve clear-pt-map handling
    
    Don't reset the expected output seqnum when clearing the pt map because this
    could stall the jitterbuffer forever.
    Add a unit test for this.
    
    Fixes https://bugzilla.gnome.org/show_bug.cgi?id=709800