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.

gstreamer transcoding pipeline on ridgeRun SDK

Hello


I've trying to link H264 OMX decoder and encoder to transcode on DM8168 EVM but have had no success so far. I have tried this on EZSDK as well as the Ridge Run SDK. Here is the error I get on RidgeRun:

/ # gst-launch -vvv filesrc location=bbb1920x1080.264 ! h264parse ! "video/x-h26
4, stream-format=byte-stream" ! omx_h264dec ! "video/x-raw-yuv, format=(fourcc)N
V12, width=1920, height=1080, buffer-count-requested=10" ! omx_h264enc  force-id
r-period=23 i-period=23 bitrate=10000000 profile=1 ! queue ! rr_h264parser singl
eNalu=true ! mp4mux dts-method=0 ! filesink location=test_1080_30fps.mp4
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, width=(int)1920, height=(int)1080, parsed=(boolean)true, stre1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, width=(int)1920, height=(int)1080, parsed=(boolean)true, st1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-h264, width=(int)1920, height=(int)1080, parsed=(boolean)true, s1
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:sink: caps = video/x-h264, width=(int)1920, height=(int)1080, parsed=(boolean)true, s1
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:sink: caps = video/x-h264, width=(int)1920, height=(int)1080, parsed=(boolean)true, s1

(gst-launch-0.10:158): GStreamer-CRITICAL **: gst_pad_fixate_caps: assertion `!gst_caps_is_empty (caps)' failed

(gst-launch-0.10:158): GStreamer-CRITICAL **: gst_pad_set_caps: assertion `caps == NULL || gst_caps_is_fixed (caps)' failed
Floating point exception

Could you please help me figure out what's wrong? I get "Insufficient Resources" error using the EZSDK.


Thanks!

  • Hello,

    I will check this issue and I will let you know.

    Best Regards,

    Margarita

  • Hello,

    I have checked it. Here is the pipeline which I have used:

    gst-launch filesrc location=/home/root/sample.mov ! qtdemux name=d d.video_00 ! queue ! h264parse ! tee name=vtee vtee. ! queue ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink  vtee. ! queue ! avimux name=mux d.audio_00 ! queue ! faad ! tee name=atee atee. ! al
    sasink device="plughw:0,1" atee. ! queue ! faac  mux. ! filesink location=/home/root/re.avi

    You could change it. This pipeline decode and display the video on the display, in the same time encode it  and save in file -  avi.

    Here is the pipeline used for decode and display on the encoded video with the previous pipeline:

    gst-launch filesrc location=re.avi ! avidemux  ! h264parse  !  omx_h264dec  ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink sync=true

    You could remove the audio thread and change the container for your use case.

    I also have tried :

    gst-launch -v filesrc location=sample.mov ! qtdemux  ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_h264enc  ! filesink location=check.yuv

    and

    gst-launch filesrc location=check.yuv ! h264parse  !  omx_h264dec  ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink

    The test was made on:

    Hardware platform: dm8168 EVM

    Software: EZSDK 5.05.02

    Hope this helps.

    Best Regards,

    Margarita

  • Thank you for replying to my question. I got the pipeline working but am facing another problem. Please see this:

    / # rr_rtsp_server "( rtspsrc location=rtsp://192.168.0.15:5554/Test ! rtph264de
    pay ! h264parse ! video/x-h264, framerate=(fraction)30/1, stream-format=byte-str
    eam, alignment=au ! omx_h264dec ! omx_hdeiscaler name=d d.src_00 ! fakesink d.sr
    c_01 ! video/x-raw-yuv, format=(fourcc)NV12, width=(int)1920, height=(int)1080,
    framerate=(fraction)30/1 ! gstperf ! omx_h264enc ! video/x-h264, width=(int)1920
    , height=(int)1080,stream-format=(string)byte-stream, alignment=(string)au ! rtp
    h264pay name=pay0 )"
    this input  params: 1920x1088,2048 3342336 1
    incoming buffer: nFilledLen: 3588064, nOffset: 49184 nFlags: 40000
    perf0: frames: 4        current: 0.38    average: 0.38  arm-load: 14
    perf0: frames: 6        current: 0.19    average: 0.29  arm-load: 100
    perf0: frames: 34       current: 20.68   average: 1.53  arm-load: 100
    perf0: frames: 89       current: 54.63   average: 3.83  arm-load: 100
    perf0: frames: 157      current: 67.76   average: 6.48  arm-load: 100
    perf0: frames: 231      current: 73.21   average: 9.15  arm-load: 100
    perf0: frames: 299      current: 67.38   average: 11.39 arm-load: 100
    perf0: frames: 372      current: 72.34   average: 13.65 arm-load: 100
    perf0: frames: 421      current: 48.99   average: 14.90 arm-load: 100
    perf0: frames: 445      current: 23.91   average: 15.21 arm-load: 100
    perf0: frames: 470      current: 21.56   average: 15.45 arm-load: 100
    perf0: frames: 487      current: 16.85   average: 15.50 arm-load: 100
    perf0: frames: 509      current: 18.15   average: 15.60 arm-load: 100
    perf0: frames: 545      current: 35.61   average: 16.20 arm-load: 100
    perf0: frames: 560      current: 12.47   average: 16.07 arm-load: 100
    perf0: frames: 583      current: 20.73   average: 16.21 arm-load: 100
    perf0: frames: 612      current: 23.37   average: 16.45 arm-load: 100
    perf0: frames: 642      current: 29.70   average: 16.80 arm-load: 100
    perf0: frames: 670      current: 21.73   average: 16.96 arm-load: 100
    perf0: frames: 691      current: 19.51   average: 17.03 arm-load: 100
    perf0: frames: 716      current: 24.99   average: 17.22 arm-load: 100
    perf0: frames: 733      current: 16.18   average: 17.20 arm-load: 100
    perf0: frames: 768      current: 19.19   average: 17.28 arm-load: 100

    As you can see, the average fps that I'm getting is very low. I'm streaming to a client & the file playback, in real time, , is jerky. Why is arm load peaking out at 100%? What can I do to improve performance here?


    I've noticed a similar post on this forum with the exact same problem.

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/p/216799/775577.aspx

    Can you please provide a solution here? Thanks.

  • Hello,

    Could you give a try with omx_scaler and noise filter elements not with omx_hdeiscaler?

    Let me know the result.

    Best Regards,

    Margarita

  • Hello,

    Anuj Mittal said:
    rtspsrc location=rtsp://192.168.0.15:5554/Test ! rtph264de
    pay ! h264parse ! video/x-h264, framerate=(fraction)30/1, stream-format=byte-str
    eam, alignment=au ! omx_h264dec ! omx_hdeiscaler name=d d.src_00 ! fakesink d.sr
    c_01 ! video/x-raw-yuv, format=(fourcc)NV12, width=(int)1920, height=(int)1080,
    framerate=(fraction)30/1 ! gstperf ! omx_h264enc ! video/x-h264, width=(int)1920
    , height=(int)1080,stream-format=(string)byte-stream, alignment=(string)au ! rtp
    h264pay name=pay0

    What is the use case ?

    Best Regards,

    Margarita

  • Hello

    I tried using omx_scaler & omx_noisefilter but that didn't work. Here's my pipeline:

    rr_rtsp_server "( rtspsrc location=rtsp://192.168.0.15:5554/Test ! rtph264depay ! h264parse ! video/x-h264, framerate=(fraction)30/1, stream-format=byte-stream, alignment=au ! omx_h264dec ! omx_scaler ! video/x-raw-yuv, format=(fourcc)YUY2,width=(int)1920, height=(int)1080, framerate=(fraction)30/1 ! omx_noisefilter ! video/x-raw-yuv, format=(fourcc)NV12,width=(int)1920, height=(int)1080,framerate=(fraction)30/1 ! gstperf ! omx_h264enc ! video/x-h264, width=(int)1920,height=(int)1080,stream-format=(string)byte-stream, alignment=(string)au ! rtph264pay name=pay0 )"

    perf0: frames: 5 current: 0.46 average: 0.46 arm-load: 1

    perf0: frames: 8 current: 0.28 average: 0.37 arm-load: 2

    perf1: frames: 4 current: 0.37 average: 0.37 arm-load: 3

    perf1: frames: 6 current: 0.19 average: 0.28 arm-load: 100

    I'd like to stream the transcoded content in real time using DM8168. That is why it is important for me to be able to get at least 30 fps at the client.

    Thanks!

  • Hello, Any update here? Do you see the same problem at your end?