GNOME Bugzilla – Bug 508138
[decodebin] does not error out if pad activation fails
Last modified: 2008-01-08 20:48:51 UTC
Please describe the problem: It appears that once typefind detects that there is an ID3 tag in a stream, it starts up id3demux. But if the source file is poorly formatted or too short the pipeline stalls without sending an EOS. This does not appear to be a problem in decodebin2. with debug-level=3: 0:00:00.061156805 31676 0x6060b0 INFO typefind gsttypefindelement.c:154:gst_type_find_element_have_type:<typefind> found caps application/x-id3 0:00:00.061248150 31676 0x6060b0 INFO GST_ELEMENT_PADS gstelement.c:878:gst_element_get_static_pad: found pad typefind:src 0:00:00.063909741 31676 0x6060b0 INFO GST_PLUGIN_LOADING gstplugin.c:470:gst_plugin_load_file: plugin "/home/eric/fusMus/gstCVS/lib/gstreamer-0.10/libgstid3demux.so" loaded 0:00:00.063995500 31676 0x6060b0 INFO GST_ELEMENT_FACTORY gstelementfactory.c:399:gst_element_factory_create: creating element "id3demux" 0:00:00.064112266 31676 0x6060b0 INFO GST_ELEMENT_PADS gstelement.c:632:gst_element_add_pad:<GstTagDemux@0x6ce070> adding pad 'sink' 0:00:00.064182660 31676 0x6060b0 INFO GST_ELEMENT_PADS gstelement.c:878:gst_element_get_static_pad: found pad id3demux0:sink 0:00:00.064240764 31676 0x6060b0 INFO GST_STATES gstelement.c:2133:gst_element_continue_state:<id3demux0> completed state change to READY 0:00:00.064273447 31676 0x6060b0 INFO GST_STATES gstelement.c:2146:gst_element_continue_state:<id3demux0> posting state-changed NULL to READY 0:00:00.064334344 31676 0x6060b0 INFO GST_PADS gstpad.c:1769:gst_pad_link_prepare: trying to link typefind:src and id3demux0:sink 0:00:00.064391610 31676 0x6060b0 INFO GST_PADS gstpad.c:1906:gst_pad_link: linked typefind:src and id3demux0:sink, successful 0:00:00.064431277 31676 0x6060b0 INFO GST_ELEMENT_PADS gstelement.c:875:gst_element_get_static_pad: no such pad 'src' in element "id3demux0" 0:00:00.064496364 31676 0x6060b0 INFO filesrc gstfilesrc.c:901:gst_file_src_start:<filesrc0> opening file Keller Williams-Breathe-02 - Brunette.mp3 0:00:00.064570669 31676 0x6060b0 INFO filesrc gstfilesrc.c:901:gst_file_src_start:<filesrc0> opening file Keller Williams-Breathe-02 - Brunette.mp3 0:00:00.064681010 31676 0x6060b0 INFO id3demux gstid3demux.c:151:gst_id3demux_identify_tag:<id3demux0> Found ID3v2 marker, tag_size = 48188 0:00:00.064750846 31676 0x6060b0 WARN GST_PADS gstpad.c:684:gst_pad_set_active:<id3demux0:sink> Failed to activate pad 0:00:00.064785764 31676 0x6060b0 INFO GST_STATES gstelement.c:2417:gst_element_change_state:<id3demux0> have FAILURE change_state return 0:00:00.064819286 31676 0x6060b0 INFO GST_STATES gstelement.c:2027:gst_element_abort_state:<id3demux0> aborting state from READY to PAUSED Steps to reproduce: gst-launch filesrc=<bad mp3> ! decodebin ! fakesink Actual results: Expected results: Does this happen every time? Other information:
Created attachment 102418 [details] test file
Ouch, nice catch, thanks! Should be fixed in CVS: 2008-01-08 Tim-Philipp Müller <tim at centricular dot net> * gst/playback/gstdecodebin.c: (try_to_link_1): Make sure we error out correctly if we can't activate one of the elements we've added. Fixes #508138.