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 on decoding Streaming H.264 media content from on-board Ethernet port of DM8168 EVM

Hi,

There is problem on decoding Streaming H.264 media content from on-board Ethernet port of DM8168 EVM. The details of the problem are the following. Please help to determine what could be the cause of the problem and how to fix them. Thanks so much!

 

Platform: Spectrum DM8168 EVM reversion: G

EZSDK version: ti-ezsdk_dm816x-evm_5_03_01_15

Gstreamer revision: 1023

 

Streaming program : Windows version VLC

Streaming Protocol: UDP

 

DM8168 gstreamer environment setting:

/etc/init.d/matrix-gui-e stop; echo 0 > /sys/devices/platform/vpss/graphics0/enabled

export GST_REGISTRY=/tmp/gst_registry.bin

export LD_LIBRARY_PATH=/opt/gstreamer/lib

export GST_PLUGIN_PATH=/opt/gstreamer/lib/gstreamer-0.10

export PATH=/opt/gstreamer/bin:$PATH

export GST_PLUGIN_SCANNER=/opt/gstreamer/libexec/gstreamer-0.10/gst-plugin-scanner

cd /opt/gstreamer/bin

 

DM8168 video output : HDMI

 

Pipeline flow:

VLC H264 UDP streaming(Windows PC)  --> (DM8168 gstreamer pipeline)udpsrc --> omx_h264dec --> omx_hdeiscaler --> omx_videosink --> HDMI display

 

Gsteamer pipeline:

gst-launch  udpsrc port=12345 ! mpegtsdemux name=demux demux. ! queue2 ! video/x-h264, framerate=30/1 ! h264parse access-unit=true ! omx_h264dec ! omx_hdeiscaler name=d d.src_01 ! fakesink silent=true d.src_00 ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink display-mode=OMX_DC_MODE_1080P_60

 

Case 1:

If DM8168 gstreamer pipeline start before VLC streaming out, the streaming video playback will sometime have wrong decoded frame order problems.

 

Messages on console:

root@dm816x-evm:/opt/gstreamer/bin# gst-launch  udpsrc port=12345 ! mpegtsdemux

name=demux demux. ! queue2 ! video/x-h264, framerate=60/1 ! h264parse access-uni

t=true ! omx_h264dec ! omx_mdeiscaler name=d d.src_01 ! fakesink silent=true d.s

rc_00 ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink dis

play-mode=OMX_DC_MODE_1080P_60

Setting pipeline to PAUSED ...

Pipeline is live and does not need PREROLL ...

Setting pipeline to PLAYING ...

New clock: MpegTSClock

Stream is corrupt error, ignorable ...

this input  params: 720x240,896 645120 1

peer output params: 720x480,896 774144 8

incoming buffer: nFilledLen: 752608, nOffset: 21536 nFlags: 50200

perf0: frames: 63       current: 62.07   average: 62.07 arm-load: 2

perf0: frames: 123      current: 59.93   average: 61.01 arm-load: 11

perf0: frames: 184      current: 60.06   average: 60.69 arm-load: 8

perf0: frames: 244      current: 59.95   average: 60.51 arm-load: 15

perf0: frames: 300      current: 56.00   average: 59.61 arm-load: 13

perf0: frames: 365      current: 64.01   average: 60.35 arm-load: 5

perf0: frames: 425      current: 59.95   average: 60.29 arm-load: 11

perf0: frames: 486      current: 60.00   average: 60.26 arm-load: 4

perf0: frames: 547      current: 60.06   average: 60.23 arm-load: 10

perf0: frames: 607      current: 59.95   average: 60.21 arm-load: 12

………………………………………………..

 

Case 2:

If VLC streaming out first then DM8168 gstreamer pipeline start, the streaming video playback will always have wrong decoded frame order problems.

 

Messages on console:

/etc/init.d/matrix-gui-e stop; echo 0 > /sys/devices/platform/vpss/graphics0/enabled

export GST_REGISTRY=/tmp/gst_registry.bin

export LD_LIBRARY_PATH=/opt/gstreamer/lib

export GST_PLUGIN_PATH=/opt/gstreamer/lib/gstreamer-0.10

export PATH=/opt/gstreamer/bin:$PATH

export GST_PLUGIN_SCANNER=/opt/gstreamer/libexec/gstreamer-0.10/gst-plugin-scanner

cd /opt/gstreamer/bin

root@dm816x-evm:/opt/gstreamer/bin# gst-launch  udpsrc port=12345 ! mpegtsdemux

name=demux demux. ! queue2 ! video/x-h264, framerate=60/1 ! h264parse access-uni

t=true ! omx_h264dec ! omx_mdeiscaler name=d d.src_01 ! fakesink silent=true d.s

rc_00 ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink dis

play-mode=OMX_DC_MODE_1080P_60

Setting pipeline to PAUSED ...

Pipeline is live and does not need PREROLL ...

Setting pipeline to PLAYING ...

New clock: MpegTSClock

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

Stream is corrupt error, ignorable ...

this input  params: 720x240,896 645120 1

peer output params: 720x480,896 774144 8

incoming buffer: nFilledLen: 752608, nOffset: 21536 nFlags: 50200

perf0: frames: 20       current: 18.82   average: 18.82 arm-load: 3

perf0: frames: 82       current: 59.95   average: 39.10 arm-load: 2

perf0: frames: 146      current: 59.94   average: 46.13 arm-load: 3

perf0: frames: 210      current: 59.95   average: 49.62 arm-load: 4

perf0: frames: 274      current: 63.16   average: 52.23 arm-load: 3

perf0: frames: 332      current: 56.75   average: 52.97 arm-load: 6

perf0: frames: 396      current: 59.94   average: 53.98 arm-load: 6

perf0: frames: 460      current: 63.35   average: 55.12 arm-load: 3

perf0: frames: 518      current: 56.53   average: 55.27 arm-load: 4

perf0: frames: 582      current: 59.99   average: 55.75 arm-load: 6

perf0: frames: 646      current: 59.90   average: 56.14 arm-load: 4

perf0: frames: 710      current: 59.94   average: 56.46 arm-load: 4

perf0: frames: 774      current: 59.94   average: 56.73 arm-load: 2

perf0: frames: 837      current: 62.84   average: 57.15 arm-load: 3

perf0: frames: 898      current: 59.97   average: 57.33 arm-load: 7

perf0: frames: 958      current: 60.00   average: 57.49 arm-load: 8

perf0: frames: 1018     current: 57.11   average: 57.47 arm-load: 5

perf0: frames: 1078     current: 59.90   average: 57.60 arm-load: 4

perf0: frames: 1142     current: 60.00   average: 57.73 arm-load: 3

perf0: frames: 1206     current: 59.94   average: 57.84 arm-load: 3

…………………………………………………

 

Thanks a lot!

Ken

  • Hi,

    Can anyone know how to solve the tearing problem on DM8168 when displaying a decoded H.264 streaming source using the following setup?

    DM8168 video output : HDMI

    Pipeline flow: VLC H264 UDP streaming(Windows PC)  --> (DM8168 gstreamer pipeline)udpsrc --> omx_h264dec --> omx_hdeiscaler --> omx_videosink --> HDMI display

    Gsteamer pipeline: gst-launch  udpsrc port=12345 ! mpegtsdemux name=demux demux. ! queue2 ! video/x-h264, framerate=30/1 ! h264parse access-unit=true ! omx_h264dec ! omx_hdeiscaler name=d d.src_01 ! fakesink silent=true d.src_00 ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink display-mode=OMX_DC_MODE_1080P_60

    Thanks,

    Ken

  • hi,  Ken

              We have the same problem!  We use  814x evm.

               We are also  want to  achieve  the mpeg ts with  h.264 video  from   RTP stream.        But  it's  decode not  smoothly.   Sometimes  the frames decode faster,  sometimes stop.        Maybe some  comment  parameters  setup is  error.

               We find  the   gstreamer also  can not  decode  the  hardware  h.264  ts file   well.    

    gst-launch -v filesrc location=h.264.ts typefind=true ! mpegtsdemux name=demux demux.audio_00 ! queue ! ffdec_ac3 ! alsasink sync=false demux.video_00 ! queue ! h264parse access-unit=true ! omx_h264dec ! omx_mdeiscaler name=d d.src_00 ! 'video/x-raw-yuv,width=800,height=480' ! omx_ctrl display-device=LCD ! gstperf ! omx_videosink display-mode=OMX_DC_MODE_1080P_60 sync=false display-device=LCD sync=false d.src_01 ! fakesink silent=true -v

             ken,   can you  playback  the    h.264  ts file   well  without   ethernet UDP or  TCP first ?

               

  • hi

            we  temporary solve the problem.    For the  realtime stream,  we found  that  the decoder maybe first find SPS PPS package to help  it's decode.   So we add a symbol flag  in h264parse ,  when we already received SPS & PPS ,  then  we  push  the stream to  h264dec. 

             i don't know whether it have  latency problem,  because  gstreamer  didn't update these function.