Reputation: 525
I am working on an app using gstreamer svgoverlay plugin. My hardware platform is AM335x starter kit and OS is Arago linux (ti provided). The gstreamer which is part of the root-fs does not have the svgoverlay plugin. So I replaced the gstreamer with packages from this repo.
A test pipline ("gst-launch-0.10 -v videotestsrc ! fbdevsink") worked without any issue in the original gstreamer. But with the new gstreamer, it fails with "Internal data flow error". This is the relevant section of the gstreamer debug output :
0 [36mDEBUG [00m [00;04m default gstsegment.c:455:gst_segment_set_newsegment_full:[00m old segment was: 0xdcc00
0:00:01.737060548 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00m basesink gstbasesink.c:1455:gst_base_sink_configure_segment:<fbdevsink0>[00m configured NEWSEGMENT update 0, rate 1.000000, applied rate 1.000000, format GST_FORMAT_TIME, 0:00:00.000000000 -- 99:99:99.999999999, time 0:00:00.000000000, accum 0:00:00.000000000
0:00:01.737182618 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00m basesink gstbasesink.c:3120:gst_base_sink_queue_object_unlocked:<fbdevsink0>[00m now 0 prerolled items
0:00:01.737243653 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00m basesink gstbasesink.c:3173:gst_base_sink_queue_object_unlocked:<fbdevsink0>[00m need more preroll data 0 <= 0
0:00:01.737335206 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01;31;41m GST_PADS gstpad.c:5370:gst_pad_send_event:<fbdevsink0:sink>[00m sent event, result 1
0:00:01.737396241 [336m 1751[00m 0xadf30 [37mLOG [00m [00;01;31;41m GST_PADS gstpad.c:5221:gst_pad_push_event:<videotestsrc0:src>[00m sent event to peerpad 0xd30d8, result 1
0:00:01.737548829 [336m 1751[00m 0xadf30 [37mLOG [00m [00;01;31;41m GST_PADS gstpad.c:4683:gst_pad_push:<videotestsrc0:src>[00m Taking slow path
0:00:01.737640382 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01;31;41m GST_PADS gstpad.c:4207:gst_pad_chain_data_unchecked:<fbdevsink0:sink>[00m caps changed to 0xcd360 0xcd360
0:00:01.737762452 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01;34m GST_CAPS gstpad.c:2761:gst_pad_configure_sink:<fbdevsink0:sink>[00m caps 0xcd360 not accepted
0:00:01.737854005 [336m 1751[00m 0xadf30 [37mLOG [00m [00;01;42m GST_BUFFER gstbuffer.c:195:gst_buffer_finalize:[00m finalize 0xdd270
0:00:01.738067628 [336m 1751[00m 0xadf30 [37mLOG [00m [00;01;35m GST_SCHEDULING gstpad.c:4313:gst_pad_chain_data_unchecked:<fbdevsink0:sink>[00m pushing data but pad did not accept
0:00:01.738159181 [336m 1751[00m 0xadf30 [32;01mINFO [00m [00m basesrc gstbasesrc.c:2511:gst_base_src_loop:<videotestsrc0>[00m pausing after gst_pad_push() = not-negotiated
0:00:01.738220216 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00m basesrc gstbasesrc.c:2537:gst_base_src_loop:<videotestsrc0>[00m pausing task, reason not-negotiated
0:00:01.738281251 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01;31;41m GST_PADS gstpad.c:5586:gst_pad_pause_task:<videotestsrc0:src>[00m pause task
0:00:01.738342286 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00m task gsttask.c:683:gst_task_set_state:<videotestsrc0:src>[00m Changing task 0xe1830 to state 2
0:00:01.738464357 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01;34m GST_EVENT gstevent.c:270:gst_event_new:[00m creating new event 0xe0600 eos 86
0:00:01.738586427 [336m 1751[00m 0xadf30 [33;01mWARN [00m [00m basesrc gstbasesrc.c:2574:gst_base_src_loop:<videotestsrc0>[00m error: Internal data flow error.
0:00:01.738647462 [336m 1751[00m 0xadf30 [33;01mWARN [00m [00m basesrc gstbasesrc.c:2574:gst_base_src_loop:<videotestsrc0>[00m error: streaming task paused, reason not-negotiated (-4)
0:00:01.738739015 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01;37;41m GST_MESSAGE gstelement.c:1834:gst_element_message_full:<videotestsrc0>[00m start
0:00:01.738891603 [336m 1751[00m 0xadf30 [32;01mINFO [00m [00;01;31;47m GST_ERROR_SYSTEM gstelement.c:1865:gst_element_message_full:<videotestsrc0>[00m posting message: Internal data flow error.
0:00:01.739044190 [336m 1751[00m 0xadf30 [37mLOG [00m [00;01;37;41m GST_MESSAGE gstmessage.c:184:gst_message_init:[00m new message 0x99588
0:00:01.739105226 [336m 1751[00m 0xadf30 [37mLOG [00m [00;01;37;41m GST_MESSAGE gstmessage.c:270:gst_message_new_custom:[00m source videotestsrc0: creating new message 0x99588 error
0:00:01.739196778 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;43m GST_BUS gstbus.c:307:gst_bus_post:<bus0>[00m [msg 0x99588] posting on bus, type error, 0xc8848 from source 0xda140
0:00:01.739288331 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01m bin gstbin.c:3091:gst_bin_handle_message_func:<pipeline0>[00m [msg 0x99588] handling child videotestsrc0 message of type error
0:00:01.739349366 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01m bin gstbin.c:3098:gst_bin_handle_message_func:<pipeline0>[00m got ERROR message, unlocking state change
0:00:01.739440919 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;01m bin gstbin.c:3381:gst_bin_handle_message_func:<pipeline0>[00m posting message upward
0:00:01.739501954 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;43m GST_BUS gstbus.c:307:gst_bus_post:<bus1>[00m [msg 0x99588] posting on bus, type error, 0xc8848 from source 0xda140
0:00:01.739562989 [336m 1751[00m 0xadf30 [36mDEBUG [00m [00;43m GST_BUS gstbus.c:337:gst_bus_post:<bus1>[00m [msg 0x99588] pushing on async queue
0:00:01.739898683 [336m 1751[00m 0x16050 [37mLOG [00m [00;43m GST_BUS gstbus.c:494:gst_bus_timed_pop_filtered:<bus1>[00m have 2 messages
0:00:01.740051270 [336m 1751[00m 0x16050 [36mDEBUG [00m [00;43m GST_BUS gstbus.c:498:gst_bus_timed_pop_filtered:<bus1>[00m got message 0x99340, state-changed, type mask is 4294967295
0:00:01.740142823 [336m 1751[00m 0x16050 [36mDEBUG [00m [00;43m GST_BUS gstbus.c:759:gst_bus_source_dispatch:<bus1>[00m source 0xadef0 calling dispatch with 0x99340
0:00:01.740264894 [336m 1751[00m 0x16050 [36mDEBUG [00m [00;43m GST_BUS gstbus.c:951:poll_func:[00m mainloop 0x85538 quit
I am new to gstreamer, so I am not sure what this error means. Can someone help me out.
NB: I need to use "fbdevsink" because of this.
Upvotes: 0
Views: 3205
Reputation: 3440
If you see a "streaming task paused, reason not-negotiated (-4)" then you've tried to link incompatible elements or some of the involved elements is not handling the caps correctly.
When using gst-launch, I would just do:
GST_DEBUG_DUMP_DOT_DIR=$PWD gst-launch-1.0 ...
and when it failed take the last generated *.dot file and render it
dot -Tsvg xxx.dot -o graph.svg
Open the svg and look at the connections and check where the caps are not negotiated. In your case I would get it is "fbdevsink".
Finally when posting logs, use GST_DEBUG_NO_COLOR=1 to have logs without color codes.
Upvotes: 3