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.
我正在使用gstreamer svgoverlay插件开发一个应用程序。我的硬件平台是AM335x初学者工具包,操作系统是Arago linux (ti提供)。gstreamer是root-fs的一部分,它没有svgoverlay插件。所以我用这个repo的包替换了gstreamer。
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 :
一个测试pipline(“gst-launch-0.10 -v videotestsrc !”在最初的gstreamer中没有任何问题。但是在新的gstreamer中,它失败于“内部数据流错误”。这是gstreamer调试输出的相关部分:
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.
我是gstreamer的新手,所以我不知道这个错误是什么意思。有人能帮我吗?
NB: I need to use "fbdevsink" because of this.
NB:我需要使用“fbdevsink”。
1 个解决方案
#1
3
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.
如果您看到一个“流任务暂停,原因不协商(-4)”,那么您尝试链接不兼容的元素,或者一些相关的元素没有正确地处理大写。
When using gst-launch, I would just do:
在使用gst-launch时,我只需要:
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".
打开svg并查看连接,并检查在哪些地方没有进行限制。在你的情况下,我会得到它是“fbdevsink”。
Finally when posting logs, use GST_DEBUG_NO_COLOR=1 to have logs without color codes.
最后,在发布日志时,使用GST_DEBUG_NO_COLOR=1来获得没有颜色代码的日志。
#1
3
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.
如果您看到一个“流任务暂停,原因不协商(-4)”,那么您尝试链接不兼容的元素,或者一些相关的元素没有正确地处理大写。
When using gst-launch, I would just do:
在使用gst-launch时,我只需要:
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".
打开svg并查看连接,并检查在哪些地方没有进行限制。在你的情况下,我会得到它是“fbdevsink”。
Finally when posting logs, use GST_DEBUG_NO_COLOR=1 to have logs without color codes.
最后,在发布日志时,使用GST_DEBUG_NO_COLOR=1来获得没有颜色代码的日志。