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.

OMX/OMTB/VFCC: Is a plain vanilla video capture and display possible without using the TVP component?

Other Parts Discussed in Thread: TVP7002


Hello,

We're trying to see if we can set up a simple video capture demo using
OMTB on a DM8168-based  PROTOTYPE board (not the DDR3-EVM) using EZSDK
ti-ezsdk_dm816x-evm_5_01_01_80 as a starting point.

My thought is to take the dual_display_encode_decode_no_pause.oms script
since it uses the VFCC OMX component and simplify it to something along
the lines of:

      VFCC -> DEI -> VFDC -> DC -> (OnChip-HDMI)

In other words, no H264 decode or encode in the mix. Just viewing a
live capture on one display.

One of my concerns is that since the PROTO board doesn't use any
TVP-based video decoders (but presumably the DDR3-EVM IO Expansion
board does ?) that the TVP OMX control component might cause grief
in setting up an OMTB-based video capture.

Question 1) Has anyone out there gotten something like this to work?

I understand that at this point we'll need to setup up our video
decoders separately outside of the TVP component.

Question 2) Is it sufficient to just comment out the TVP portions of the *.oms
script or will the "video-pipeline" be stalled out because this
setup happens outside of OMX/OMTB?


I've been pouring over the OMX documentation for the components that
came with the EZSDK but it doesn't seem to address this point.

Question 3) Is this even possible with the current OMTB in the EZSDK (perhaps
by making some changes to NO-OP the TVP OMX component if need be)?


Question 4) If it's currently not possible, is it on the roadmap?

If anyone out there has a plain vanilla capture-n-display OMTB script
they'd be willing to share or some relevant links/tutorials beyond
the documentation currently being shipped we'd be most grateful.

Thanks.

- Juan Solis


  • Assuming you configure the video decoder outside the scope of OMX/OMTB then it should be possible to perform capture without the tvp and thus you can remove the tvp comment from the script. 

  • Marcus Cooksey said:

    Assuming you configure the video decoder outside the scope of OMX/OMTB then it should be possible to perform capture without the tvp and thus you can remove the tvp comment from the script. 


    Thanks for the reply Marcus.

    I went ahead and tried it and the script runs without errors
    but we're not getting any image, static, or noise that would indicate
    we're actually capturing anything.

    I'm including the simplified <capture_display.oms> experimental file
    we're using as an attachment. (Hopefully I didn't mess something up.)

    Our initial investigations show that our video decoder is sending out
    something plausible so we're back to looking at the OMX/OMTB stack.

    Under the theory that, somehow, the OMTB/OMX software (or something else
    from the SDK) was sending something out looking for TVP/decoder related
    H/W -- we went ahead and attached an I2C logic analyzer and were surprised
    to see this show up:

        ############################################
        Decoding 2-wire serial bus transactions from the beginning of the
        waveform screen.
        Please wait...

        START
        B1 Control Byte: Slave Address 58 Read
         NACK

        STOP

        START
        61 Control Byte: Slave Address 30 Read
         NACK

        STOP

        START
        B9 Control Byte: Slave Address 5C Read
         NACK

        STOP

        ##############################################

    We're seeing this when we run the <capture_display.oms> script
    even though the TVP items are commented out!!!
    (It was worth a shot though.)

    I don't recognize the 0xB1 and 0x61 addresses but the 0xB9
    is for the TVP7002 according to TI816x evm io board schematics.
    (I'm thinking the other two might be for the Silicon Image parts?).

    It's beginning to look like the current SDK doesn't have enough
    flexibility for us to use to validate our designs.

    Is there anything else in the TI arsenal that could be used
    for video capture validation?


    Any other suggestions of what else to look for would be most appreciated.

    Juan Solis

    ### start
    omx api init
    omx setp 0 vfcc compname OMX.TI.VPSSM3.VFCC
    #omx setp 0 tvp compname OMX.TI.VPSSM3.CTRL.TVP
    omx setp 0 vfdc frame_width 1920
    omx setp 0 vfdc frame_height 1080
    omx setp 0 vfdc ip_chromat_format 422YUYV
    omx setp 0 vfdc numinbuf 8 
    omx setp 0 vfdc inbufalign 0
    omx setp 0 vfdc inbuf_contig disable
    omx setp 0 vfdc inbufsize 4147200 
    omx setp 0 vfdc data_opmode driver
    omx setp 0 vfdc inbuf use
    omx setp 0 vfdc graphics_flag disable
    #omx setp 0 vfdc vcdemo_flag enable
    omx setp 0 vfdc mosaic_window_config vs
    omx setp 0 dc insmod_hdmi disable
    omx api gethandle vfdc 0 0
    omx api gethandle dc 0 0
    omx setp 0 vfdc OMX_TI_IndexParamVFDCDriverInstId nDrvInstID 0
    omx setp 0 vfdc OMX_TI_IndexParamVFDCDriverInstId eDispVencMode 1080p60
    omx api setparam  vfdc 0 0 0 OMX_TI_IndexParamVFDCDriverInstId
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout winStartX 0
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout winStartY 0
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout winWidth 1920
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout winHeight 1080
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout pitch.VFDC_YUV_INT_ADDR_IDX 3840
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout pitch.VFDC_YUV_SP_Y_ADDR_IDX 3840
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout pitch.VFDC_YUV_SP_CBCR_ADDR_IDX 3840
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout dataFormat 422I_YUYV
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout bpp bits16
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout priority 0
    omx setp 0 vfdc OMX_TI_IndexParamVFDCCreateMosaicLayout nLayoutId 0
    omx setp 0 vfdc mosaicNumRows 1
    omx setp 0 vfdc mosaicNumCols 1
    omx setp 0 vfdc mosaicDispWindowWidth 1920
    omx setp 0 vfdc mosaicDispWindowHeight 1080
    omx api setparam  vfdc 0 0 0 OMX_TI_IndexParamVFDCCreateMosaicLayout
    omx setp 0 vfdc OMX_TI_IndexConfigVFDCMosaicPort2WinMap nLayoutId 0
    omx api setconfig vfdc 0 0 0 OMX_TI_IndexConfigVFDCMosaicPort2WinMap 1 0 
    omx setp 0 vfdc OMX_TI_IndexParamBuffMemType eBufMemoryType default
    omx setp 0 vfdc OMX_IndexParamCompBufferSupplier eBufferSupplier unspecified
    omx setp 0 vfdc OMX_IndexParamVideoInit nPorts 1
    omx setp 0 vfdc OMX_IndexParamVideoInit nStartPortNumber 0
    omx api getparam  vfdc 0 0 0 OMX_IndexParamPortDefinition
    omx setp 0 vfdc OMX_IndexParamPortDefinition video.nStride 3840
    omx api setparam  vfdc 0 0 0 OMX_IndexParamPortDefinition
    #************************************************************
    #SET ALL THE PARAMS FOR DC#0
    omx setp 0 dc OMX_TI_IndexParamVFDCDriverInstId nDrvInstID 0
    omx setp 0 dc OMX_TI_IndexParamVFDCDriverInstId eDispVencMode 1080p60
    omx api setparam  dc 0 0 0 OMX_TI_IndexParamVFDCDriverInstId
    omx api sendcommand port vfdc 0 enable 0
    omx api sendcommand port vfdc 0 waitforsem 0
    ###omx api connect sc 0 16 vfdc 0 0
    #************************************************************
    #I/P Port or O/P Port Params for VFCC
    omx setp 0 vfcc numoutbuf 6
    omx setp 0 vfcc frame_width  1920
    omx setp 0 vfcc frame_height 1080
    omx setp 0 vfcc op_chromat_format 420SP
    omx setp 0 vfcc outbufalign 0
    omx setp 0 vfcc outbuf_contig disable
    omx setp 0 vfcc outbufsize 3110400
    omx setp 0 vfcc data_opmode driver
    omx setp 0 vfcc outbuf allocate
    omx setp 0 vfcc outbufsize_flag disable
    omx setp 0 vfcc numoutbuf 6
    omx setp 0 vfcc outbuf_contig disable
    omx setp 0 dei frame_width 1920
    omx setp 0 dei frame_height 1080
    omx setp 0 dei op_chromat_format 420SP
    omx setp 0 dei ip_chromat_format 420SP
    omx setp 0 dei numinbuf 6 
    omx setp 0 dei inbufalign 0 
    omx setp 0 dei inbuf_contig disable
    omx setp 0 dei inbufsize_flag disable
    omx setp 0 dei inbufsize 3110400
    omx setp 0 dei numoutbuf 8
    omx setp 0 dei outbufalign 0
    omx setp 0 dei outbuf_contig disable
    omx setp 0 dei outbufsize_flag enable
    omx setp 0 dei outbufsize 4147200 
    omx setp 0 dei data_opmode driver
    omx setp 0 dei inbuf use
    omx setp 0 dei outbuf allocate
    omx setp 0 vfdc frame_width 1920
    omx setp 0 vfdc frame_height 1080
    omx setp 0 vfdc ip_chromat_format 422YUYV
    omx setp 0 vfdc numinbuf 8 
    omx setp 0 vfdc inbufalign 0
    omx setp 0 vfdc inbuf_contig disable
    omx setp 0 vfdc inbufsize 4147200 
    omx setp 0 vfdc data_opmode driver
    omx setp 0 vfdc inbuf use
    omx setp 0 vfdc graphics_flag disable
    #omx setp 0 vfdc vcdemo_flag enable
    omx setp 0 vfdc mosaic_window_config vs
    omx setp 0 dc insmod_hdmi disable
    #omx api gethandle tvp 0 0
    omx api gethandle vfcc 0 0
    omx api gethandle dei 0 0
    #SET ALL THE PARAMS FOR TVP
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortID eHwPortId vip1_porta
    #omx api setparam tvp 0 0 0 OMX_TI_IndexParamVFCCHwPortID
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortProperties eCaptMode sc_non_mux
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortProperties eVifMode 16_bit
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortProperties eInColorFormat 422YUYV
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortProperties eScanType progressive
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortProperties nMaxWidth 1920
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortProperties nMaxHeight 1080
    #omx setp 0 tvp OMX_TI_IndexParamVFCCHwPortProperties nMaxChnlsPerHwPort 1
    #omx api setparam tvp 0 0 0 OMX_TI_IndexParamVFCCHwPortProperties
    #omx setp 0 tvp OMX_TI_IndexParamCTRLVidDecInfo videoStandard 1080P60
    #omx setp 0 tvp OMX_TI_IndexParamCTRLVidDecInfo videoDecoderId tvp7002
    #omx setp 0 tvp OMX_TI_IndexParamCTRLVidDecInfo videoSystemId auto_detect
    #omx api setparam tvp 0 0 0 OMX_TI_IndexParamCTRLVidDecInfo
    #************************************************************
    #SET ALL THE PARAMS FOR VFCC
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortID eHwPortId vip1_porta
    omx api setparam vfcc 0 0 0 OMX_TI_IndexParamVFCCHwPortID
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortProperties eCaptMode sc_non_mux
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortProperties eVifMode 16_bit
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortProperties eInColorFormat 422YUYV
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortProperties eScanType progressive
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortProperties nMaxWidth 1920
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortProperties nMaxHeight 1080
    omx setp 0 vfcc OMX_TI_IndexParamVFCCHwPortProperties nMaxChnlsPerHwPort 1
    omx api setparam vfcc 0 0 0 OMX_TI_IndexParamVFCCHwPortProperties
    omx setp 0 vfcc OMX_TI_IndexParamBuffMemType eBufMemoryType default
    omx api setparam  vfcc 0 0 0  OMX_TI_IndexParamBuffMemType
    omx setp 0 vfcc OMX_IndexParamCompBufferSupplier eBufferSupplier unspecified
    #omx api setparam  vfcc 0 0 0  OMX_IndexParamCompBufferSupplier
    omx setp 0 vfcc OMX_TI_IndexConfigVFCCFrameSkip frameSkipMask 0
    #omx api setconfig  vfcc 0 0 0  OMX_TI_IndexConfigVFCCFrameSkip
    omx setp 0 vfcc OMX_IndexParamVideoInit nPorts 16
    omx setp 0 vfcc OMX_IndexParamVideoInit nStartPortNumber 0
    #omx api setparam  vfcc 0 0 0  OMX_IndexParamVideoInit
    omx setp 0 dei OMX_TI_IndexParamVFPCNumChPerHandle nNumChannelsPerHandle 1
    omx api setparam dei 0 0 0 OMX_TI_IndexParamVFPCNumChPerHandle
    omx setp 0 dei OMX_TI_IndexConfigAlgEnable bAlgBypass enable
    omx setp 0 dei OMX_TI_IndexConfigAlgEnable nChId 0
    omx api setconfig dei 0 0 0 OMX_TI_IndexConfigAlgEnable
    omx setp 0 dei OMX_TI_IndexConfigSubSamplingFactor nSubSamplingFactor 1
    omx api setconfig dei 0 0 0 OMX_TI_IndexConfigSubSamplingFactor
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm0Width  1920
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm0Height 1080
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm0Pitch  1920
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm1Width  0
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm1Height 0
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm1Pitch  0
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmStartX  0
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmStartY  0
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmCropWidth 1920
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmCropHeight 1080
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution eDir input
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution nChId 0
    omx api setconfig dei 0 0 0  OMX_TI_IndexConfigVidChResolution
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm0Width  1920
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm0Height 1080
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm0Pitch  3840
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm1Width  1920
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm1Height 1080
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution Frm1Pitch  1920
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmStartX  0
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmStartY  0
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmCropWidth 1920
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution FrmCropHeight 1080
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution eDir output
    omx setp 0 dei OMX_TI_IndexConfigVidChResolution nChId 0
    omx api setconfig dei 0 0 16  OMX_TI_IndexConfigVidChResolution
    omx setp 0 dei OMX_TI_IndexParamBuffMemType eBufMemoryType default
    omx api setparam  dei  0 0 0  OMX_TI_IndexParamBuffMemType
    omx setp 0 dei OMX_TI_IndexParamBuffMemType eBufMemoryType default
    omx api setparam  dei 0 0 16  OMX_TI_IndexParamBuffMemType
    omx setp 0 dei OMX_TI_IndexParamBuffMemType eBufMemoryType default
    omx api setparam  dei 0 0 17  OMX_TI_IndexParamBuffMemType
    omx setp 0 dei OMX_TI_IndexParamCompPortNotifyType eNotifyType always
    #omx api setparam  dei  0 0 0  OMX_TI_IndexParamCompPortNotifyType
    omx setp 0 dei OMX_TI_IndexParamCompPortNotifyType eNotifyType always
    #omx api setparam  dei  0 0 16  OMX_TI_IndexParamCompPortNotifyType
    omx setp 0 dei OMX_TI_IndexParamCompPortNotifyType eNotifyType always
    #omx api setparam dei 0 0 17   OMX_TI_IndexParamCompPortNotifyType
    omx setp 0 dei OMX_IndexParamCompBufferSupplier eBufferSupplier unspecified
    omx setp 0 dei  OMX_TI_IndexParamVFPCNumChPerHandle nNumChannelsPerHandle 1
    omx setp 0 dei OMX_IndexParamVideoInit nPorts 3
    omx setp 0 dei OMX_IndexParamVideoInit nStartPortNumber 0
    omx api getparam  dei 0 0 0 OMX_IndexParamPortDefinition
    omx setp 0 dei OMX_IndexParamPortDefinition video.nStride 1920
    omx api setparam  dei 0 0 0 OMX_IndexParamPortDefinition
    #************************************************************
    omx api sendcommand port vfcc 0 enable 0
    omx api sendcommand port vfcc 0 waitforsem 0
    omx api sendcommand port dei 0 enable 0
    omx api sendcommand port dei 0 waitforsem 0
    omx api sendcommand port dei 0 enable 16
    omx api sendcommand port dei 0 waitforsem 16
    omx api connect vfcc 0 0 dei 0 0
    omx api connect dei 0 16 vfdc 0 0
    ###omx api sendcommand state tvp 0 idle
    ###omx api sendcommand state tvp 0 waitforsem
    omx api sendcommand state vfcc 0 idle
    omx api sendcommand state vfcc 0 waitforsem
    omx api sendcommand state dei 0 idle
    omx api sendcommand state dei 0 waitforsem
    omx api sendcommand state dc 0 idle
    omx api sendcommand state dc 0 waitforsem
    omx api sendcommand state vfdc 0 idle
    omx api sendcommand state vfdc 0 waitforsem
    #***************************************************
    omx api sendcommand state dc 0 exec
    omx api sendcommand state dc 0 waitforsem
    omx api sendcommand state vfdc 0 exec
    omx api sendcommand state vfdc 0 waitforsem
    omx api sendcommand state dei 0 exec
    omx api sendcommand state dei 0 waitforsem
    omx api sendcommand state vfcc 0 exec
    omx api sendcommand state vfcc 0 waitforsem
    ###omx api sendcommand state tvp 0 exec
    ###omx api sendcommand state tvp 0 waitforsem
    ###


    P.S.: The <decode_scale_display.oms> script ran ok so I know
          the OnChip HDMI and DC/VFDC components are operational overall.
          It's just a capture problem we're having right now on our PROTO
          boards.