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.

Regarding SD and HD-Comp video out

Hi All

I am using DM8168evm with EZSDK 5_05_02_00. Through following gstreamer pipeline i am able to get video displayed on the HDMI.

gst-launch -v filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink sync=false

Questions:
1. I would like to see the same video from SD / HD-comp output. Kindly suggest  what changes need to be done for that? I need to use OMX firmware only(not v4l2).
2. whether same video can be parallely played on all three outputs?

3. Whether i can play different contents on different outputs?(like GUI on HDMI, live video on HDcomp, saved video on SD)

  • Hi All

    Can anyone please reply?

    Understanding of these points is important for finalizing hardware for our number of upcoming projects.

  • Hello,

    Here is example how the video could be displayed on LCD :

    gst-launch --verbose filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 display-device=LCD ! gstperf !   'video/x-raw-yuv,width=(int)800,height=(int)480'   ! omx_videosink sync=false display-device=LCD

    Amritpreet Singh93 said:
    2. whether same video can be parallely played on all three outputs?

    Here is example the video how the video could be display on HDMI and LCD

    gst-launch filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 display-device=LCD ! 'video/x-raw-yuv,width=(int)800,height=(int)480' ! gstperf ! omx_videosink sync=false display-device=LCD


    You could try to use a tee element not two filesrc elements also.

    BR
    Margarita

  • Hello,

    You could try to run command:

    gst-inspect "omx_ctrl" to check the properties of the omx_ctrl component.

    Here is few more points regarding SD display:

    -In ezsdk 5.05.02 we have a omx demo display_decode. You could use option 2 for SD. As you could see the noise filter element is used after scaler to convert 422->420 for SD.

    In gstreamer we have a omx component omx_noisefilter as well.
    You should add a caps as in the example above ('video/x-raw-yuv,width=(int)800,height=(int)480' for LCD ) the resolution to be scale if you do not add it you will not observe the video on the LCD display.

    If you want to play two videos to different display you could use the 2x filesrc elements. I would recommend you to use this element in case you want to play two different videos.
    But if you are planing to play the same video file to all displays I would recommend tthe tee element. The tee element will separate the pipeline to two branches(multiple pads). In this case I would recommend the tee element to be connected after the decoder before the scaler.
    Let me know if you have more questions or examples.

    BR
    Margarita
  • Hi Margarita

    Thanks a lot for very descriptive answer. I was able to play SD video through decode_display example.

    And i also got different contents on different displays(SD, HDMI) working.

    One thing i would like to ask is:
    i am decoding and displaying 1 video on SD and in parallel i am not able to decode another video and display it on HDMI and vice versa. So can't we use a same omx component twice simultaneously? Or i am doing something wrong?
  • Hello,

    What is the video that you are trying to display on HDMI is it with interlaced content?

    Could you post the pipeline?

    What you mean by not able to decode another video on the HDMI?

    Are you trying pipeline with two different filesrc elements?

    Amritpreet Singh93 said:
    same omx component twice simultaneously?

    Could you provide more details ?

    BR
    Margarita

  • i am playing some video on SD display through below command:

    ./decode_display_a8host_debug.xv5T -i /usr/share/ti/data/videos/dm816x_1080p_demo.264 -w 1920 -h 1080 -f 30 -g 0 -c h264 -d 2

    Now its running fine. Now i also want to decode and display same video on HDMI through following gstreamer pipeline while SD output is running:

    gst-launch -v filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink sync=false

    Above pipeline gives error :
    Assertion at Line no: 1239 in /home/amrit/Teesta_VPC/sdkbkup/ti-ezsdk_dm816x-evm_5_05_02_00/component-sources/syslink_2_20_02_20/packages/ti/sd
    Assertion at Line no: 695 in /home/amrit/Teesta_VPC/sdkbkup/ti-ezsdk_dm816x-evm_5_05_02_00/component-sources/syslink_2_20_02_20/packages/ti/syd
    ServiceMgr_prime: MessageQ_put failed: status = 0xfffffffe.
  • Hello,

    No you can not.
    If you play it this way you will observe a syslink error.

    You should play it in the same 1 process.
    Check the gstreamer example with two video sources in the same pipeline.

    BR
    Margarita

  • Hello,

    You could refer this pipeline as exmaple:

    gst-launch filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 display-device=LCD ! 'video/x-raw-yuv,width=(int)800,height=(int)480' ! gstperf ! omx_videosink sync=false display-device=LCD


    One process, two videos on LCD and HDMI.

    BR
    Margarita
  • Okay Margarita.
    SO what i understood is only one application can use these encoders at a time. But it can use multiple encoders. Like the pipeline you referred me to.

    Only following questions are left with respect the my first post:

    1. How to display the Matrix GUI to HDCOMP or SD analog?
    2. How to display gstreamer video to HDCOMP?
    3. Can i capture multiple video simultaneously through omx_camera gstreamer element? like 16bit HD video on VIN0, 8bit video on VIN1_PORTA and another 8bit video input on VIN1_PORTB?

    That is the use case i am planning.
  • Hello,

    Amritpreet Singh93 said:
    SO what i understood is only one application can use these encoders at a time. But it can use multiple encoders

    Correct.

    Amritpreet Singh93 said:
    2. How to display gstreamer video to HDCOMP?

    Check with gst-inspect "omx_ctrl" what are the properties for the control component.

    Amritpreet Singh93 said:
    3. Can i capture multiple video simultaneously through omx_camera gstreamer element? like 16bit HD video on VIN0, 8bit video on VIN1_PORTA and another 8bit video input on VIN1_PORTB?

    In the default EZSDK we do not have an element omx_camera.

    We are using v4l2src element.

    Are you looking for dual capture?

    BR
    Margarita

  • Hi

    This is the output of gst-inspect "omx_ctrl". What need to be done for HDCOMP?

    --------------------------------------------------------------------------------------------------
    Element Properties:
    name : The name of the object
    flags: readable, writable
    String. Default: null Current: "omxbasectrl0"
    qos : Handle Quality-of-Service events
    flags: readable, writable
    Boolean. Default: false Current: false
    component-role : Role of the OpenMAX IL component
    flags: readable, writable
    String. Default: null Current: ""
    component-name : Name of the OpenMAX IL component to use
    flags: readable, writable
    String. Default: null Current: "OMX.TI.VPSSM3.CTRL.DC"
    library-name : Name of the OpenMAX IL implementation library to use
    flags: readable, writable
    String. Default: null Current: "libOMX_Core.so"
    display-mode : Display driver configuration mode (see below)
    OMX_DC_MODE_NTSC
    OMX_DC_MODE_PAL
    OMX_DC_MODE_1080P_60
    OMX_DC_MODE_720P_60
    OMX_DC_MODE_1080I_60
    OMX_DC_MODE_1080P_30

    flags: readable, writable
    String. Default: "OMX_DC_MODE_1080P_60" Current: "OMX_DC_MODE_1080P_60"
    display-device : Display device to be used -
    HDMI
    LCD
    flags: readable, writable
    String. Default: "HDMI" Current: "HDMI"
    -----------------------------------------------------------------------------------------------------

    And yes we are looking for multiple input capture use case. 1 16bit HD Input from HD-SDI chip(GS2971) and another HD input from FPGA etc. Can't we use gstreamer + omx for this purpose if we configure the above decoders correctly ??
  • Hello,

    You could try to use v4l2sink element instead of omx_videosink.
    In this case you should load load-hd-v4l2-firmware.sh.
    First you should stop the graphic plane then you should stop the load-hd-firmware.sh and start the load-hd-v4l2-firmware.sh.

    When you are using the v4l2sink element in the pipeline you should not connect the omx_crtl element. Here is simple decode_display example :
    gst-launch filesrc location=/usr/share/ti/data/videos/dm816x_
    1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx
    _scaler ! gstperf ! v4l2sink device="/dev/video1" sync=false min-queued-bufs=2 userpointer=false

    This pipeline display video on HDMI(/dev/video1 which is display0).

    /dev/video1 → Display 0
    /dev/video2 → Display 1
    /dev/video3 → Display 2

    Check this processors.wiki.ti.com/.../DM816X_AM389X_VPSS_Video_Driver_User_Guide user guide about" Video Notes input/output table"

    In your case should be /dev/video3.

    BR
    Margarita
  • Thanks a lot Margarita.
    Understood.

    Warm Regards
    Amrit.
  • Hello,

    You could give a try and let me know.

    BR
    Margarita