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 764933 - rtpmux: if the sink pads receive GstBufferLists instead of GstBuffers, sticky events are not forwarded correctly to the src pads.
rtpmux: if the sink pads receive GstBufferLists instead of GstBuffers, sticky...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.6.1
Other Linux
: Normal major
: 1.6.4
Assigned To: GStreamer Maintainers
GStreamer Maintainers
1.6.4
Depends on:
Blocks:
 
 
Reported: 2016-04-12 08:39 UTC by Paolo Pettinato
Modified: 2016-04-14 17:43 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Proposed patch (1.49 KB, patch)
2016-04-12 09:41 UTC, Paolo Pettinato
committed Details | Review

Description Paolo Pettinato 2016-04-12 08:39:16 UTC
Came across this while using rtpmp4apay feeding into rtpdtmfmux and that into multiudpsink. Differently from other RTP payloaders (e.g. rtpopuspay, rtpg722pay), rtpmp4apay outputs GstBufferLists. If the rtpdtmfmux (which inherits from rtpmux) is in the chain, the element further downstream (in this case multiudpsink) will not receive a new segment and will not process the data.
Comment 1 Paolo Pettinato 2016-04-12 09:12:14 UTC
Apologies, the downstream element exposing the issue is "rtpbin", not "multiudpsink".

So this will fail:

gst-launch-1.0 audiotestsrc is-live=true ! avenc_aac compliance=-2 ! rtpmp4apay ! rtpmux ! rtpbin ! multiudpsink

output:
(gst-launch-1.0:16722): GStreamer-CRITICAL **: gst_segment_to_running_time: assertion 'segment->format == format' failed

repeated ad libitum


while this one works fine (rtpmux removed from the pipeline):

gst-launch-1.0 audiotestsrc is-live=true ! avenc_aac compliance=-2 ! rtpmp4apay ! rtpbin ! multiudpsink

and this one is okay too (payloader produces GstBuffer instead of GstBufferList):

gst-launch-1.0 audiotestsrc is-live=true ! avenc_g722 ! rtpg722pay ! rtpmux ! rtpbin ! multiudpsink
Comment 2 Paolo Pettinato 2016-04-12 09:41:35 UTC
Created attachment 325778 [details] [review]
Proposed patch

This patch appropriately sets last_pad in rtp_mux, and resends sticky events on its change; thus it copies the behaviour found in gst_rtp_mux_chain into gst_rtp_mux_chain_list.
Comment 3 Sebastian Dröge (slomo) 2016-04-12 10:44:40 UTC
Comment on attachment 325778 [details] [review]
Proposed patch

Makes sense, thanks!
Comment 4 Sebastian Dröge (slomo) 2016-04-12 12:23:27 UTC
commit 40fbffc208707bad3f8da0de01e5e4ecb2595db9
Author: Paolo Pettinato <ppettina@cisco.com>
Date:   Tue Apr 12 09:41:00 2016 +0000

    rtpmux: Forward sticky events on buffer lists too, not only on buffers
    
    https://bugzilla.gnome.org/show_bug.cgi?id=764933
Comment 5 Paolo Pettinato 2016-04-12 12:36:08 UTC
Thanks slomo! Do you think it's possible to port the fix to 1.6, if there's a maintenance release coming?
Comment 6 Sebastian Dröge (slomo) 2016-04-13 06:45:16 UTC
Done, will be in 1.6.4 and 1.8.1