Hi,
I'm having a problem with decodebin and I've managed to isolate the cause but I'm not sure how to get to a resolution. My application is an audio player client which receives streams from a server which simply streams audio files (flac, ogg/vorbis, mp3 etc).
I'm just looking for some pointers. Currently I'm considering handling the autoplug-select signal from decodebin, exposing the application/x-icy pad and attaching a fakesink but this feels a bit kludgy.
For me decodebin is working fine except when both these conditions are hit: 1. The stream is audio/x-flac. 2. The stream to the client starts from somewhere in the middle of the file on the server (the server can do this and I have no control of this)
The error message is: gsticydemux.c(481): gst_icydemux_typefind_or_forward (): /GstPipeline:stormpipe/GstBin:bin1/GstDecodeBin:decoder/GstICYDemux:icydemux1: No caps found for contents within an ICY stream
The debug output for the time leading up to the error is:
0:00:33.341937029 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:2854:type_found:<decoder>[00m typefind found caps application/x-icy, metadata-interval=(int)32768 0:00:33.341982088 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:3517:gst_decode_chain_new:<decoder>[00m Creating new chain 0x7f64ac0759d0 with parent group (nil) [storm::codec] [0:00:33.342007075 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1524:analyze_new_pad:<decoder>[00m Pad typefind:src caps:application/x-icy, metadata-interval=(int)32768 INFO] Sending STAT_0:00:33.342023242 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5180:gst_decode_pad_new:<decoder>[00m making new decodepad STMe 0:00:33.342148164 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x7f64a04af690, time 99:99:99.999999999, seq-num 536, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_LINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)true; [storm::codec] [INFO] Sending STAT_STMh0:00:33.342206707 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x55c33a4cca40, time 99:99:99.999999999, seq-num 538, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_LINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)false;
0:00:33.342247215 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1480:copy_sticky_events:<'':decodepad1>[00m store sticky event stream-start event: 0x7f64ac38e890, time 99:99:99.999999999, seq-num 529, GstEventStreamStart, stream-id=(string)0d4ad9edec33945fabea4dcc13a96839c3391a21ff4d5032723cfa8e55eec35c, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)2; 0:00:33.342288952 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1480:copy_sticky_events:<'':decodepad1>[00m store sticky event caps event: 0x7f64ac1d6ea0, time 99:99:99.999999999, seq-num 535, GstEventCaps, caps=(GstCaps)"application/x-icy\,\ metadata-interval\=\(int\)32768"; 0:00:33.342312614 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1375:gst_decode_bin_autoplug_continue:<decoder>[00m autoplug-continue returns TRUE 0:00:33.342333751 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:3222:are_final_caps:<decoder>[00m Checking with caps application/x-icy, metadata-interval=(int)32768 0:00:33.342348965 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:3229:are_final_caps:<decoder>[00m Caps are not final caps 0:00:33.342367488 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1389:gst_decode_bin_autoplug_factories:<decoder>[00m finding factories 0:00:33.344366683 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1411:gst_decode_bin_autoplug_factories:<decoder>[00m autoplug-factories returns 0x7f64ac208100 0:00:33.344398574 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:1807:analyze_new_pad:<typefind:src>[00m Let's continue discovery on this pad 0:00:33.344427912 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:2102:connect_pad:<decoder>[00m pad typefind:src , chain:0x7f64ac0759d0, 1 factories, caps application/x-icy, metadata-interval=(int)32768 0:00:33.344471203 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x55c33a4cca40, time 99:99:99.999999999, seq-num 541, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)true; 0:00:33.344512265 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x7f64a04af690, time 99:99:99.999999999, seq-num 542, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)false; 0:00:33.344545520 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x7f64a04af690, time 99:99:99.999999999, seq-num 543, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_LINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)true; 0:00:33.344588317 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x55c33a4cca40, time 99:99:99.999999999, seq-num 545, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_LINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)false; 0:00:33.344620202 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1480:copy_sticky_events:<'':decodepad1>[00m store sticky event stream-start event: 0x7f64ac38e890, time 99:99:99.999999999, seq-num 529, GstEventStreamStart, stream-id=(string)0d4ad9edec33945fabea4dcc13a96839c3391a21ff4d5032723cfa8e55eec35c, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)2; 0:00:33.344655457 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1480:copy_sticky_events:<'':decodepad1>[00m store sticky event caps event: 0x7f64ac1d6ea0, time 99:99:99.999999999, seq-num 535, GstEventCaps, caps=(GstCaps)"application/x-icy\,\ metadata-interval\=\(int\)32768"; 0:00:33.344672078 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:2151:connect_pad:<typefind>[00m trying factory <icydemux> 0:00:33.344693383 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1427:gst_decode_bin_autoplug_select:<decoder>[00m default autoplug-select returns TRY 0:00:33.344708494 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:2248:connect_pad:<decoder>[00m autoplug select requested try 0:00:33.344738768 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x55c33a4cca40, time 99:99:99.999999999, seq-num 546, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)true; 0:00:33.344767425 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x7f64a04af690, time 99:99:99.999999999, seq-num 547, element 'proxypad5', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)false; 0:00:33.344796437 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1469:clear_sticky_events:<'':decodepad1>[00m clearing sticky event stream-start event: 0x7f64ac38e890, time 99:99:99.999999999, seq-num 529, GstEventStreamStart, stream-id=(string)0d4ad9edec33945fabea4dcc13a96839c3391a21ff4d5032723cfa8e55eec35c, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)2; 0:00:33.344819248 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:1469:clear_sticky_events:<'':decodepad1>[00m clearing sticky event caps event: 0x7f64ac1d6ea0, time 99:99:99.999999999, seq-num 535, GstEventCaps, caps=(GstCaps)"application/x-icy\,\ metadata-interval\=\(int\)32768"; 0:00:33.344911225 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x7f64a04af690, time 99:99:99.999999999, seq-num 548, element 'sink', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_LINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)true; 0:00:33.344956320 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg structure-change message: 0x55c33a4cca40, time 99:99:99.999999999, seq-num 550, element 'sink', GstMessageStructureChange, type=(GstStructureChangeType)GST_STRUCTURE_CHANGE_TYPE_PAD_LINK, owner=(GstElement)"\(GstTypeFindElement\)\ typefind", busy=(boolean)false; 0:00:33.344991512 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg state-changed message: 0x55c33a4cca40, time 99:99:99.999999999, seq-num 551, element 'icydemux1', GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING; 0:00:33.345047788 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:2372:connect_pad:<decoder>[00m linked on pad typefind:src 0:00:33.345065560 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:2374:connect_pad:<decoder>[00m locking chain 0x7f64ac0759d0 from thread 0x55c33a472990 0:00:33.345089694 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:2374:connect_pad:<decoder>[00m locked chain 0x7f64ac0759d0 from thread 0x55c33a472990 0:00:33.345107689 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:2419:connect_pad:<decoder>[00m unlocking chain 0x7f64ac0759d0 from thread 0x55c33a472990 0:00:33.345124693 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:2682:connect_element:<decoder>[00m Attempting to connect element icydemux1 [chain:0x7f64ac0759d0] further 0:00:33.345137454 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:2695:connect_element:<decoder>[00m got a source pad template src 0:00:33.345152046 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:2730:connect_element:<decoder>[00m did not get the sometimes pad of template src 0:00:33.345165647 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:2746:connect_element:<decoder>[00m Adding signals to element icydemux1 in chain 0x7f64ac0759d0 0:00:33.345216934 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg state-changed message: 0x7f64a04af690, time 99:99:99.999999999, seq-num 552, element 'icydemux1', GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING; 0:00:33.373994955 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:5518:gst_decode_bin_handle_message:<decoder>[00m dynlocking from thread 0x55c33a472990 0:00:33.374006849 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:5518:gst_decode_bin_handle_message:<decoder>[00m dynlocked from thread 0x55c33a472990 0:00:33.374010019 [335m 6130[00m 0x55c33a472990 [33;01mLOG [00m [00m decodebin gstdecodebin2.c:5520:gst_decode_bin_handle_message:<decoder>[00m dynunlocking from thread 0x55c33a472990 0:00:33.374020354 [335m 6130[00m 0x55c33a472990 [37mDEBUG [00m [00m decodebin gstdecodebin2.c:5627:gst_decode_bin_handle_message:<decoder>[00m Forwarding msg error message: 0x7f64ac38a610, time 99:99:99.999999999, seq-num 553, element 'icydemux1', GstMessageError, gerror=(GError)NULL, debug=(string)"gsticydemux.c\(481\):\ gst_icydemux_typefind_or_forward\ \(\):\ /GstPipeline:stormpipe/GstBin:bin1/GstDecodeBin:decoder/GstICYDemux:icydemux1:\012No\ caps\ found\ for\ contents\ within\ an\ ICY\ stream"; [storm::player] [ERROR] Stream error: gsticydemux.c(481): gst_icydemux_typefind_or_forward (): /GstPipeline:stormpipe/GstBin:bin1/GstDecodeBin:decoder/GstICYDemux:icydemux1: No caps found for contents within an ICY stream [storm::player] [ERROR] Stream error: gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:stormpipe/GstBin:bin1/GstSoupHTTPSrc:source: streaming stopped, reason error (-5) [storm::player] [ERROR] Stream error: gstqueue.c(988): gst_queue_handle_sink_event (): /GstPipeline:stormpipe/GstBin:bin1/GstQueue:ibuf:
-- Geoff _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (499 bytes) Download Attachment |
On Sun, 2019-08-11 at 13:52 +0100, Geoff Clements wrote:
Hi Geoff, > For me decodebin is working fine except when both these conditions > are hit: > 1. The stream is audio/x-flac. > 2. The stream to the client starts from somewhere in the middle of > the file on the server (the server can do this and I have no control > of this) > > The error message is: > gsticydemux.c(481): gst_icydemux_typefind_or_forward (): > /GstPipeline:stormpipe/GstBin:bin1/GstDecodeBin:decoder/GstICYDemux:i > cydemux1: > No caps found for contents within an ICY stream Sounds like icydemuxer/the typefindfunctions don't handle that case properly. What kind of FLAC data do you get inside the ICY wrapper? Does it contain a FLAC stream header or is that skipped entirely and it's just FLAC frames? If you have an easy way to reproduce it, maybe you could capture some data after the http source element with ... ! gdppay ! filesink location=icy-flac.gdp and then file an issue about this so we can try and reproduce it with the gdp file. Cheers Tim -- Tim Müller, Centricular Ltd - http://www.centricular.com _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Tim Müller wrote
> If you have an easy way to reproduce it, maybe you could capture some > data after the http source element with > > ... ! gdppay ! filesink location=icy-flac.gdp > > and then file an issue about this so we can try and reproduce it with > the gdp file. Hi Tim, Thanks for the reply. I augmented my pipeline by teeing off the source element and then adding in a queue ! gdppay ! filesink Trouble is every time I trigger the issue I'm left an empty file. I'll keep trying. Geoff -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |