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.

h264 decode capability

Hello All,

I am use EZSDK 5.05.01.04 on the dm816x EVM board.

I tried to test the capability of the decoder:

videomixer 3 1080p60 h264 file:

gst-launch omx_videomixer framerate=60 port-index=0 name=mix ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false filesrc location=file1.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=file2.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=file3.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix.

perf0: frames: 34       current: 33.13   average: 33.13 arm-load: 30            
perf0: frames: 67       current: 32.18   average: 32.66 arm-load: 23            
perf0: frames: 100      current: 32.15   average: 32.49 arm-load: 32

It show frame rate is about 32.

Remove one file:

gst-launch omx_videomixer framerate=60 port-index=0 name=mix ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false filesrc location=file1.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=file2.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix.

perf0: frames: 49       current: 48.37   average: 48.37 arm-load: 28            
perf0: frames: 97       current: 47.92   average: 48.15 arm-load: 18            
perf0: frames: 145      current: 47.39   average: 47.89 arm-load: 24

frame rate is 48

Only one h264 file to decode:

gst-launch omx_videomixer framerate=60 port-index=0 name=mix ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false filesrc location=file1.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix.

perf0: frames: 61       current: 60.38   average: 60.38 arm-load: 28            
perf0: frames: 121      current: 60.00   average: 60.19 arm-load: 6             
perf0: frames: 182      current: 59.98   average: 60.12 arm-load: 4

frame rate is 60.

Why frame rate "down" when decode channel "up"?

Is something wrong here?

Best Regards,

Steven

  • Hello Steven,

    Pipeline:

    gst-launch omx_videomixer framerate=60 port-index=0 name=mix ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false filesrc location=file1.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=file2.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=file3.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix.

    If sync=false is normal to see this:

    perf0: frames: 34       current: 33.13   average: 33.13 arm-load: 30            
    perf0: frames: 67       current: 32.18   average: 32.66 arm-load: 23            
    perf0: frames: 100      current: 32.15   average: 32.49 arm-load: 32

    You should set sync=true.

    You could try example:

    gst-launch --gst-debug=3 -v omx_videomixer framerate=24 port-index=0 name=mix ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink  filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true !  omx_h264dec ! gstperf ! mix.

    perf0: frames: 50     current: 24.00     average: 24.89    arm-load: 42
    perf1: frames: 60     current: 24.00     average: 14.25    arm-load: 42
    perf0: frames: 74     current: 23.98     average: 24.59    arm-load: 35
    perf1: frames: 84     current: 23.98     average: 16.12    arm-load: 35
    perf0: frames: 99     current: 24.01     average: 24.44    arm-load: 42
    perf1: frames: 109     current: 24.12     average: 17.45    arm-load: 42
    perf0: frames: 123     current: 23.99     average: 24.35    arm-load: 38
    perf1: frames: 134     current: 23.90     average: 18.37    arm-load: 38

    Best regards,

    Margarita

  • Hello, Margarita,

    Thanks for reply!

    I have tried the pipeline and it seems fine when frame rate set to 24.

    But my question is :

    Why does frame rate only up to 47 when I set frame rate to 60 in videomixer 2 video case?

    And frame rate up to 32 when I set frame rate to 60 in videomixer 3 video case?

    Best regards,

    Steven

  • Hello Steven,

    sync=false on the sink element typically disables syncing against the clock according to the timestamps, instead outputting the data as fast as possible.
    That is why you should set  sync=true.

    gst-launch  -v omx_videomixer framerate=XX port-index=0 name=mix ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=true  filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true !  omx_h264dec ! gstperf ! mix.

    Best Regards

    Margarita

  • Hello,

    If you use sync=false system resources are distributed among the played movies and framerate=XX does not matter.

    If you use sync=true, framerate matters so choose suitable value for framerate=XX.

    BR

    Margarita

  • Hi Margarita,

    Thanks for reply.

    But I dont know what does suitable value means?

    If I use sync=true and set framerate=60, suitable value cant up to 60?

    If I have two 1080P60 video and want to display side by side.

    Is it possible to display at normal speed?(I mean frame rate = 60)

    Best regards,

    Steven

  • Hello,

    You could check: OMX_GST_ReleaseNotes.pdf

    Chapter: What is Supported

    /ti-ezsdk_dm816x-evm_5_05_01_04/component-sources/gst-openmax_GST_DM81XX_00_06_00_00

    Best Regards,

    Margarita

  • Hi Margarita,

    Thanks a lot.

    Could I modify this issue by myself or just wait next gst-omx release?

    I have checked EZSDK source code. It seems some omx element source code(ex. VFCC, VFPC...) and M3 source code are not available in EZSDK release.

    So we can do nothing for this issue.

    Thanks again!

    Best regards,

    Steven