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 on DM8148 Using YUV420SemiPlanar DEI output as input to VFDC does not work

Hi,

If I use the second output port on the DEI to output YUV420SemiPlanar to the VFDC component I get the following image:

It works fine if I use the first output from the DEI, which is set up to output YCbYCr. I have made sure that the buffer sizes, frame width, height and stride settings are correct in the DEI and VFDC settings and that the buffers that are shared via OMX_UseBuffer are set up to use the correct buffers. I have also made sure that the call to IL_ClientConnectComponents is connecting the correct components and output ports to the correct components and input ports.

Does the DEI component not support output of YUV420SemiPlanar on both outputs?

What is causing this issue with the image?

Steven

  • Hello,

    The DEI component has one input and two output ports.

    Steven Harris said:
    If I use the second output port on the DEI to output YUV420SemiPlanar to the VFDC component I get the following image:

    If you connect the output port to the VFDC component you should connect the output which is providing 422 not 420SP. The VFDC component supports 422 input.

    Steven Harris said:
    Does the DEI component not support output of YUV420SemiPlanar on both outputs?

    No.

    Steven Harris said:
    What is causing this issue with the image?

    Formats doesn't match. Please connect the output ports of DEI component correct.

    BR

    Margarita

  • Hi,

    The problem is that I need to get the formats correct for input to each component. The above was a test. What I really need to end up with is the following:

    The reason for having 2 scalars (one of them is the DEI) is that I need independent image cropping.

    The configuration is as follows:

    A: YUV420SemiPlanar

    B: YUV420SemiPlanar

    C: YUV420SemiPlanar

    D: YCbYCr

    VOUT is configured for yuv422spuv

    But this configuration leads to the image shown in my previous post.

    The video input is 1080p.

    Can the INDTXSCWB scalar take YCbYCr as input?

    Steven

  • Hello,

    The DEI component supports one output in 422  and one in 420. You already have a 420 output connected to the encoder component.

    The scaler component supports 420 SP input and 422 output.

    Please prefer to OMX user guide for more information regarding component's supported features.

    BR

    Margarita

  • Hi,

    The OMX User Guide is not very good. It does not describe what the scaler component will accept as input.

    So I need you to tell me what configuration I need to use to get the data going between the components as shown in the previous diagram because I dont have any documentation that tells me that.

    Steven

  • Hello,

    Steven Harris said:
    The OMX User Guide is not very good. I

    OMX UserGuide

    2.2.1 VFPC-Scalar (SC5):

    Features supported for VFPC-SC5

    § Chroma up sampling from YUV420 semiplanar to YUYV422 interleaved format.

    I would recommended you to follow this user guide.

    BR

    Margarita

  • Hi,

    So if I need to provide the scaler with YUV420SP input and the VENC with YUV420SP input and the DEI only supports one YUV420SP output then how would I go about this?

    The OMX User Guide is not clear on how I would do this.

    Steven

  • Hello,

    You could connect the 422 output of DEI directly to the VFDC component or refer to the user guide for all supported VFPC components.

    Also you could check the capture_encode demo for better understanding of DEI component and  Figure 1 Demonstration example component data flow. You could check and decode_display demo . The user guide will give you information regarding how the components are connected and the i/o ports , formats, supported features, limitations, configuration and etc.

    BR
    Margarita

  • Hi,

    We need the additional scaler because we want the output to the VFDC to be cropped but the output to the VENC not to be cropped. The DEI does not support independent cropping.

    I understand the data flow between components. What I dont understand is the I/O requirements of each component because the user guide is not very clear on this. I dont even know if what I am attempting to do is possible!

    I will go through the user guide again and compile a list of what I/O formats it looks like each component supports and I will post them here. I would appreciate it if you could respond to this to let me know if what I am attempting to do can be done in this way.

    I could also try using two DEI Components instead of a DEI and a scaler component.  How do I create a second DEI Component? Will doing this just give me a handle to the first DEI?

    eError =
    OMX_GetHandle (&pAppData->pDeiHandle,(OMX_STRING) "OMX.TI.VPSSM3.VFPC.DEIMDUALOUT", pAppData->deiILComp, &pAppData->pCb);

    Steven

  • Hi,

    I have now tried to add in a second DEIM component (instead of the scaler component) after the first DEIM that will do the cropping before sending the data to the VFDC.

    So the second DEI component is receiving YCbYCr from the first DEI. The problem is I now get OMX_ErrorInsufficientResources for this. I need the input to the second DEI to be 1080p YCbYCr, which means the stride is being set to 2 * width. I have searched the forums and the only things I can find are some people with the DM8168 who have complained about this problem and the issue is that there is a hardware limitation in earlier hardware revisions.

    The OMX User Guide for the DM8148 does not mention that there is a line width limitation when the DEI receives YUV422 as input!

    Is this supported on the DM8148?

    If so how do I get it to work?

    If not then what is the alternative?

    This is becoming very urgent now. If there are hardware limitations we are not aware of then we need to know what they are as soon as possible. So please respond to this today. I have no other way of finding out this information.

    Steven

  • Hello,

    Regarding two DEI components I see in the forum that people are able to build a pipe with two DEIMs on dm148:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/178707.aspx

    BR

    Margarita

  • Hi,

    Yes I have seen that post. However, it does not offer any information on how it was achieved so I am no further forward.

    Does anyone at TI have any sample code that works that uses 2 DEI Components?

    Steven

  • Hi,

    I have taken the capture_encode OMX example app and verified that I can see video via the HDMI output. Then I added in a second DEI component between the first DEI and the VFDC and tested with this. This gives me the same OMX_InsufficientResources error in the same place.

    The output is as follows:

    # ./capture -o sample.h264 -m 1080p -f 30 -b 1000000 -d 0 -n 1000
    output file: sample.h264
    bit_rate: 1000000
    frame_rate: 30
    num_frames: 1000
    mode: 1080p
    display_id: 0
    Capture-Encode example
    ===============================
    OMX_Init completed
    UIAClient is ready to send a UIA configuration command
    UIAClient received UIA_CONFIGURE_ACK
    UIAClient is done sending requests
    UIAClient is ready to send a UIA configuration command
    UIAClient received UIA_CONFIGURE_ACK
    UIAClient is done sending requests
    openeing file
    capture compoenent is created
    control TVP compoenent is created
    Buffer Size computed: 3110400
    set input port params (width = 1920, height = 1080) applying skip mask
    enable capture output port
    got eventEnable/Disable Event
    dei compoenent is created
    dei 2 compoenent is created
    set input port params (width = 1920, height = 1080)
    set output port params (width = 1920, height = 1080)set output port params (width = 1920, height = 1080)set number of channelsset input resolutionset output resolutionset input port params (width = 1920, height = 1080)
    set output port params (width = 1920, height = 1080)set output port params (width = 1920, height = 1080)set number of channelsset input resolutionset output resolutionenable dei input port
    got eventEnable/Disable Event
    enable dei output port 0
    got eventEnable/Disable Event
    enable dei output port 1
    got eventEnable/Disable Event
    enable dei 2 input port
    got eventEnable/Disable Event
    enable dei 2 output port 0
    got eventEnable/Disable Event
    enable dei 2 output port 1
    got eventEnable/Disable Event
    encoder compoenent is created
    found handle 0x40b30 for component OMX.TI.VPSSM3.VFDC
    got display handle
    found handle 0x44b40 for component OMX.TI.VPSSM3.CTRL.DC
    Buffer Size computed: 4147200
    set input port params (width = 1920, height = 1080)setting input and output memory type to defaultenable input port
    got eventEnable/Disable Event
    connect call for capture-Dei
    connect call for dei- encoder
    connect call for dei-dei
    connect call for dei2-display
    got eventState changed to: OMX_StateIdle
    Capture outport buffers allocated
    got eventState changed to: OMX_StateIdle
    Capture is in IDLE state
    Dei input port use buffer done
    DEI outport buffers allocated
    got eventState changed to: OMX_StateIdle
    DEI is in IDLE state
    Dei 2 input port use buffer done
    got event*** unrecoverable error: OMX_ErrorInsufficientResources (0x80001000)
    Press a key to proceed
    DEI 2 outport buffers allocated

    I have attached the code for the whole test app. Can someone at TI look at this as a matter of urgency please.

    Steven

    5700.capture_encode.zip

  • Hi,

    Can someone at TI respond to this ASAP please. This is very urgent!

    Please send me a private message with a contact telephone number if possible.

    Steven

  • Hi,

    Can someone at TI please tell me why I cant configure the DEI component to accept YUV422 1080p input. This is still giving me the OMX_ErrorInsufficientResources.

    This is holding us back.

    Steven

  • Hello,

    Could you try with lower resolution as input of the second DEI?

    Let me know the result.

    BR

    Margarita

  • Hi,

    I have tried 640 x 480 and I get the same error.

    There seems to be conflicting documentation on this. The OMX User Guide PDF states that the supported DEI input formats are YUV422 Interleaved or YUV420 Semi-Planar, whereas this TI wiki link only mentions YUV420 Semi-Planar (bullet point 3): http://processors.wiki.ti.com/index.php/DEI

    So which documentation am I to believe?

    If the DEI only supports YUV420Semi-planar input then I need to get the YUV420Semi-Planar DEI1 output to go to both the VENC and DEI2 and ignore the second output (YUV422) on DEI1.

    Thanks,

    Steven

  • Steven,

    I haven't gone through the complete post here. But according to HDVPSS documentation DEI supports both YUV422/420 inputs. I am not really sure why the wiki page doesn't capture this properly. 

  • Hi Renjith,

    For the benefit of others that might read this thread the DEI does NOT support YUV422 input. Only YUV420SemiPlanar.

    I have been successful in getting 2 DEI components running on the DM8148. The YUV420 output from DEI1 feeds the input to both DEI2 and VENC. This has been done using the FillBufferDone message from DEI1 when it is sending data to VENC by sending an ETB message. The message is also sent to DEI2. Requests from DEI2 to FillThisBuffer are ignored.

    Steven