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.

Problem playing h264 video with gstreamer



Hello community,

Doing some basic tests on DM8148 EVM I just received.

After booting from the SD card (created using EZSDK 5_03_01_15)  I'm trying to play the example h264 movie.

The OMX example works perfectly after issuing the commands:

  • /etc/init.d/matrix-gui-e stop
  • echo 0 > /sys/devices/platform/vpss/graphics0/enabled
  • /usr/share/ti/ti-omx/decode_display_a8host_debug.xv5T -i /usr/share/ti/data/videos/dm816x_1080p_demo.264 -w 1920 -h 1080 -f 30 -g 0 -d 1 -c h264

The problem starts when I'm trying to play the movie using gstreamer:

  • cd /usr/share/ti/data/videos
  • gst-launch -v filesrc location=dm816x_1080p_demo.264 ! 'video/x-h264,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! omx_ctrl display-device=LCD ! omx_videosink display-device=LCD

The LCD turns gray and nothing else happens (i.e. I cannot see the video being played). Below is the output from gstreamer:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, framed=(boolean)false
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, framed=(boolean)false
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, framed=(boolean)false, stream-format=(string)byte-stream, alignment=(string)au
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:sink: caps = video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, framed=(boolean)false, stream-format=(string)byte-stream, alignment=(string)au
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:sink: caps = video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, framed=(boolean)false, stream-format=(string)byte-stream, alignment=(string)au
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:src: caps = video/x-raw-yuv-strided, width=(int)1920, height=(int)1080, format=(fourcc)NV12, rowstride=(int)2048, framerate=(fraction)30/1, interlaced=(boolean)false
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:sink: caps = video/x-raw-yuv-strided, width=(int)1920, height=(int)1080, format=(fourcc)NV12, rowstride=(int)2048, framerate=(fraction)30/1, interlaced=(boolean)false
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:sink: caps = video/x-raw-yuv-strided, width=(int)1920, height=(int)1080, format=(fourcc)NV12, rowstride=(int)2048, framerate=(fraction)30/1, interlaced=(boolean)false
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:src: caps = video/x-raw-yuv, width=(int)1920, height=(int)1080, format=(fourcc)YUY2, framerate=(fraction)30/1, interlaced=(boolean)false
/GstPipeline:pipeline0/GstOmxBaseCtrl:omxbasectrl0.GstPad:src: caps = video/x-raw-yuv, width=(int)1920, height=(int)1080, format=(fourcc)YUY2, framerate=(fraction)30/1, interlaced=(boolean)false
/GstPipeline:pipeline0/GstOmxBaseCtrl:omxbasectrl0.GstPad:sink: caps = video/x-raw-yuv, width=(int)1920, height=(int)1080, format=(fourcc)YUY2, framerate=(fraction)30/1, interlaced=(boolean)false
/GstPipeline:pipeline0/GstOmxVideoSink:omxvideosink0.GstPad:sink: caps = video/x-raw-yuv, width=(int)1920, height=(int)1080, format=(fourcc)YUY2, framerate=(fraction)30/1, interlaced=(boolean)false
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Stream is corrupt error, ignorable ...
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 65682302950 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstOmxVideoSink:omxvideosink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstOmxBaseCtrl:omxbasectrl0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstOmxBaseCtrl:omxbasectrl0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...

After a while, screen turns again black

Did anyone encounter problem like this?

Best regards

Tomasz

  • Hi Tomasz


    you need to configure LCD display as 'video/x-raw-yuv,width=800,height=480' after omx_scaler. please find the updated pipeline below


    /etc/init.d/matrix-gui-e stop
    echo 0 > /sys/devices/platform/vpss/graphics0/enabled
    cd /usr/share/ti/data/videos
    gst-launch -v filesrc location=dm816x_1080p_demo.264 ! 'video/x-h264,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! 'video/x-raw-yuv,width=800,height=480' ! omx_ctrl display-device=LCD ! omx_videosink display-device=LCD

    Regards
    Santosh Avat