This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

"Recieved EOS event, press <CTRL+C> to terminate pipeline" errors prevent scripting on DM8147



I'm consistently getting the following error on the DM8147, which is preventing non-interactive use of gst-launch:

Recieved EOS event, press <CTRL+C> to terminate pipeline

When I'm running interactively this isn't a big deal, I can just hit <ctrl-c>.  However, the behavior prevents me from doing things like making scripts which call gst-launch (the pipeline is blocked indefinitely).

Is there some way to prevent this behavior?

Here's a relatively simple pipeline which demonstrates the issue:

gst-launch videotestsrc num-buffers=300 ! 'video/x-raw-yuv,width=320,height=240,format=(fourcc)YUY2' ! omx_noisefilter ! omx_h264enc ! gstperf ! filesink location=sample.264
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
perf0: frames: 81 current: 79.36 average: 79.36 arm-load: 14
perf0: frames: 159 current: 77.74 average: 78.56 arm-load: 97
perf0: frames: 237 current: 77.08 average: 78.06 arm-load: 96
Recieved EOS event, press <CTRL+C> to terminate pipeline.
Recieved EOS event, press <CTRL+C> to terminate pipeline.
Got EOS from element "pipeline0".
Execution ended after 3842739000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...

 I'm obviously also concerned because when I do hit <ctrl-c> I'm seeing all sorts of syslink related errors, which might explain why the encoder keeps getting sick and requiring me to reboot the platform.

I'm running ti-ezsdk_dm814x-evm_5_05_01_04 with rev 1094 of https://gstreamer.ti.com/svn/gstreamer_ti/trunk/gstreamer_ti_dm81xx (to work around other bugs the SDK was shipped with)

Devin

  • Hello,

    Could you link the error?

    Is it syslink error?

    Best Regards,

    Margarita

  • Yes, it is a syslink error that is shown after I hit <ctrl-c>:

    root@dm814x-evm:~# gst-launch videotestsrc num-buffers=300 ! 'video/x-raw-yuv,wi
    dth=320,height=240,format=(fourcc)YUY2' ! omx_noisefilter ! omx_h264enc ! gstper
    f ! filesink location=sample.264
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    perf0: frames: 81 current: 79.27 average: 79.27 arm-load: 24
    perf0: frames: 159 current: 77.72 average: 78.50 arm-load: 97
    perf0: frames: 235 current: 75.61 average: 77.54 arm-load: 97
    Recieved EOS event, press <CTRL+C> to terminate pipeline.
    Recieved EOS event, press <CTRL+C> to terminate pipeline.
    Got EOS from element "pipeline0".
    Execution ended after 3838420200 ns.
    Setting pipeline to PAUSED ...
    Setting pipeline to READY ...
    Caught interrupt -- notify_shm_drv_sendevent failed! status = 0xfffffff2
    notify_send_event failed! status = 0xfffffff2
    notify_shm_drv_sendevent failed! status = 0xfffffff2
    notify_send_event failed! status = 0xfffffff2
    root@dm814x-evm:~#

    Searching through the forums suggested that it could be an issue with bootargs, but there were no specific references to what they should actually look like.  Here is what I'm using:

    setenv bootargs "console=ttyO0,115200n8 rootwait rw mem=169M earlyprintk notifyk.vpssm3_sva=0xBF900000 root=/dev/nfs nfsroot=192.168.1.6:/home/devin/targetfs,tcp ip=::::evp8148:eth0: vram=25M ti814xfb.vram=0:8M,1:8M,2:3"

    I'm using the Mistral EVK with 1GB of RAM, and haven't done anything to modify the memory map other than tweaking the VRAM parameters to reduce the memory used (my design isn't using the video output core).

    Any suggestions you could offer would be greatly appreciated.

    Thanks!

    Devin

  • Hello,

    Yes, in most cases this error means problem with the bootargs.

    I tried your pipeline few times:

    gst-launch videotestsrc num-buffers=300 ! 'video/x-raw-yuv,width=320,height=240,format=(fourcc)YUY2' ! omx_noisefilter ! omx_h264enc ! gstperf ! filesink location=sample.264

    and it works for me without errors.

    My bootargs are:

    console=tty00, 115200n8 rootwait rw mem 256M earlyprink notifyk.vpssm3_sva=0xBF900000 vram=50M ti814xfb.vram0:16M,2:6M, ubi.mtd=4,2048 root=ubi0:rootfs rw rootfs=ubifs

    You could try and let me know the result.

    Best Regards,

    Margarita

  • Nope, still fails with that set of bootargs (which I modified slightly to address some apparent typos):

    setenv bootargs "console=ttyO0,115200n8 rootwait rw mem=256M earlyprink notifyk.vpssm3_sva=0xBF900000 vram=50M ti814xfb.vram0:16M,2:6M, root=/dev/nfs nfsroot=192.168.1.6:/home/devin/targetfs,tcp ip=::::evp8148:eth0:"

    It both required <ctrl-c> to close the pipeline, as well as throwing the syslink errors shown above.

    In your environment, did you have to hit <ctrl-c> to stop the pipeline?  Or are you just not seeing the syslink errors on shutdown?

    Seems like the need for <ctrl-c> is a known issue in the code:

    https://gstreamer.ti.com/gf/project/gstreamer_ti/scmsvn/?action=browse&path=%2Ftags%2FTAG_GST_DM81XX_00_06_00_00%2Fti_build%2Fgst-openmax%2Fomx%2Fgstomx_base_filter.c&revision=1094&view=markup

    (grep for "GST_EVENT_EOS")

    Devin

  • It seems like the failure to exit is somehow related to the noisefilter being in the wrong state:

    0:00:05.982505550 1233 0x18fc98 INFO omx gstomx_base_videoenc.c:290:pad_event:<omxh264enc0> begin: event=eos
    0:00:05.982580400 1233 0x18fc98 INFO omx gstomx_base_filter.c:680:pad_event:<omxh264enc0> begin: event=eos
    Recieved EOS event, press <CTRL+C> to terminate pipeline.
    Recieved EOS event, press <CTRL+C> to terminate pipeline.
    Got EOS from element "pipeline0".
    Execution ended after 3844199350 ns.
    Setting pipeline to PAUSED ...
    0:00:05.984641050 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<filesink0> completed state change to PAUSED
    0:00:05.984742600 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<filesink0> posting state-changed PLAYING to PAUSED
    0:00:05.985070550 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'filesink0' changed state to 3(PAUSED) successfully
    0:00:05.985205900 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<perf0> completed state change to PAUSED
    0:00:05.985284050 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<perf0> posting state-changed PLAYING to PAUSED
    0:00:05.985401500 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'perf0' changed state to 3(PAUSED) successfully
    0:00:05.985521250 1233 0x15080 INFO omx gstomx_base_filter.c:150:change_state:<omxh264enc0> begin: changing state PLAYING -> PAUSED
    0:00:05.985606250 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<omxh264enc0> completed state change to PAUSED
    0:00:05.985680400 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<omxh264enc0> posting state-changed PLAYING to PAUSED
    0:00:05.985795350 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'omxh264enc0' changed state to 3(PAUSED) successfully
    0:00:05.985913500 1233 0x15080 INFO omx gstomx_base_filter.c:150:change_state:<omxnoisefilter0> begin: changing state PLAYING -> PAUSED
    0:00:05.985995300 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<omxnoisefilter0> completed state change to PAUSED
    0:00:05.986067350 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<omxnoisefilter0> posting state-changed PLAYING to PAUSED
    0:00:05.986180000 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'omxnoisefilter0' changed state to 3(PAUSED) successfully
    0:00:05.986299750 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<capsfilter0> completed state change to PAUSED
    0:00:05.986375400 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<capsfilter0> posting state-changed PLAYING to PAUSED
    0:00:05.986513600 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'capsfilter0' changed state to 3(PAUSED) successfully
    0:00:05.986625650 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<videotestsrc0> completed state change to PAUSED
    0:00:05.986700650 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<videotestsrc0> posting state-changed PLAYING to PAUSED
    0:00:05.986813850 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'videotestsrc0' changed state to 3(PAUSED) successfully
    0:00:05.986941600 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<pipeline0> completed state change to PAUSED
    0:00:05.987017100 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<pipeline0> posting state-changed PLAYING to PAUSED
    0:00:05.987594700 1233 0x15080 INFO GST_STATES gstbin.c:1759:gst_bin_get_state_func:<pipeline0> getting state
    Setting pipeline to READY ...
    0:00:05.988985600 1233 0x18baa8 INFO omx gstomx_base_filter.c:514:output_loop:<omxh264enc0> pause task, reason: unexpected
    0:00:05.989660600 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<filesink0> completed state change to READY
    0:00:05.989745650 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<filesink0> posting state-changed PAUSED to READY
    0:00:05.989875550 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'filesink0' changed state to 2(READY) successfully
    0:00:05.990149750 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<perf0> completed state change to READY
    0:00:05.990231050 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<perf0> posting state-changed PAUSED to READY
    0:00:05.990348250 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'perf0' changed state to 2(READY) successfully
    0:00:05.990465400 1233 0x15080 INFO omx gstomx_base_filter.c:150:change_state:<omxh264enc0> begin: changing state PAUSED -> READY
    0:00:06.007071300 1233 0x15080 INFO GST_STATES gstelement.c:2341:gst_element_continue_state:<omxh264enc0> completed state change to READY
    0:00:06.007168200 1233 0x15080 INFO GST_STATES gstelement.c:2354:gst_element_continue_state:<omxh264enc0> posting state-changed PAUSED to READY
    0:00:06.007296650 1233 0x15080 INFO GST_STATES gstbin.c:2492:gst_bin_change_state_func:<pipeline0> child 'omxh264enc0' changed state to 2(READY) successfully
    0:00:06.007422800 1233 0x15080 INFO omx gstomx_base_filter.c:150:change_state:<omxnoisefilter0> begin: changing state PAUSED -> READY
    0:00:06.007570000 1233 0x18d238 WARN omx gstomx_base_filter.c:459:output_loop:<omxnoisefilter0> null buffer: leaving
    0:00:06.007648950 1233 0x18d238 INFO omx gstomx_base_filter.c:514:output_loop:<omxnoisefilter0> pause task, reason: wrong-state

    The above suggests that gst-launch is blocked because the omxnoisefilter is pausing the task.

    Devin

  • Hello,

    "

    In your environment, did you have to hit <ctrl-c> to stop the pipeline?

    "

    Yes, I tried with <ctrl-c> and I tried and without press it(num-buffers=300).

    "

    Or are you just not seeing the syslink errors on shutdown?

    "

    I do not see any errors.

    The pipeline is:

    gst-launch videotestsrc ! 'video/x-raw-yuv,width=320,height=240,format=(fourcc)YUY2' ! omx_noisefilter ! omx_h264enc ! gstperf ! filesink location=sample.264

    I removed num-buffers=300.

    Best Regards,

    Margarita

  • I'm a bit confused by what you're saying.

    Did you have to hit <ctrl-c> in order to stop the pipeline when you set "num-buffers=300"?

    There seem to be two separate issues here (and I don't know if they are related).  The first is the need to explicitly hit <ctrl-c> to get gst-launch to exit.   The second is the syslink errors showing up in dmesg.

    You are looking at a serial console or dmesg, right?  Because if you're connecting to the unit via telnet or SSH, you're not going to see the syslink errors in your output.

    Devin

  • Hello,

    "

    Did you have to hit <ctrl-c> in order to stop the pipeline when you set "num-buffers=300"?

    "

    No. num-buffers=300 means number of buffers to output before sending EOS.

    "

    The first is the need to explicitly hit <ctrl-c> to get gst-launch to exit.

    "

    -e option forces EOS on source before shutting down the pipeline. This is useful when you write to file (which is your case) and want to shutdown by killing gst-lunch using <ctrl+c> or to use num-buffers=XX(no need explicitly to press <ctrl+c>).

    "

    You are looking at a serial console or dmesg, right?

    "

    I am looking the console.

    I am using EZSDK 5.05 with gst-openmax_GST_DM81XX_00_06_00_00.

    When you use num-buffers=XX, you explicitly press <ctrl+c> to get gst-lanch to exit? What is happen when you do not press it? Is it hangs?

    When you observe the error message? Is it when you start the pipeline the second time?

    Best Regards,

    Margarita