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.

Performance drops when running 2 DEI & 2 ENC instances with EzSDK on DM814x

Hello All,

In one of our custom product based on DM814x, we are using latest EzSDK OMX application to simulate some usecase which have 2 DEI and 2 ENC instances.

To give some more idea, we have one Capture instance, which gives YUV422 data to DEI-0 which splits it into two streams (with dei alg by pass). One stream of DEI-0 goes to another dei instance DEI-1 (with alg enabled) while other goes for interlaced encoding ENC-0. One of the DEI-1 goes to Display while other goes for progressive encoding ENC-1.

At a time we are only feeding buffers to one encoder (ENC-0 or ENC-1) not both. And we switch between them as and when required. So when we switch from one to other there is huge drop in performance (encoding FPS). And it continue dropping frames forever.

So, here are my questions:

Is it issue if 2 encoders? (both sw instance of encoders are in executing state but we are feeding YUV buffers to 1 at a time just not to over load hw core)

Is it issue of 2 DEIs?

Is it issue of over all usecase?

What is the solution to recover from the performance drop?

Please advice.

--

Thanks,

Hitesh

  • Hello,

    Could you confirm is m understanding right?

    At the time only one encoder is working (enc 1 / enc 0)?
    At the time when encoder 0 is working the DEI1 is not working or it is working only the display branch (dei-0->dei1(422)->vfdc)?
    DEI0 is working in bypass mode and the Dei1 not?

    When this drop is observed when you switch to enc0 to enc1(interlace) only?
    What is the resolution which is used?

    You could try to increase the output buffers of DEI1(the dei with alg enable).
    You could try to check what is the input fps at the encoders inputs.

    BR
    Margarita

  • Hi Margarita,

    See my answers w.r.t. your questions:


    At the time only one encoder is working (enc 1 / enc 0)?

    [ANS]: At a time only encoder processing the buffers of DEI but both the encoders are into executing state and we are not feeding any buffers to encoder.


    At the time when encoder 0 is working the DEI1 is not working or it is working only the display branch (dei-0->dei1(422)->vfdc)?

    [ANS]: DEI-0 & DEI-1 are working all the time. We just stop encoding of one of the DEIs output buffer while we switch back and forth. So it is the branch like dei-0's one o/p goes to enc-0 and other to dei-1, and then dei-1 o/p goes to vfdc.


    DEI0 is working in bypass mode and the Dei1 not?

    [ANS]: DEI0 is working in bypass mode and we are capturing 1080i60 i/p so enc-0 always does interlaced encoding while DEI-1 always does de-interlacing and scaled down to 720p60 and passed it to ENC-1 for 720p60 encoding. But at a time we feed DEI-0 and/or DEI-1 o/p to ENC-0 (for 1080i60 encoding) or ENC-1 (for 720p60 encoding).

    When this drop is observed when you switch to enc0 to enc1(interlace) only?

    [ANS]: Initially we feeds to ENC-0 only. After some time we stopped feeding buffers to ENC-0 (interlaced) and start feeding buffers to ENC-1 (progressive)
    What is the resolution which is used?
    [ANS]: 1080i60 capture. 1080i60 encoding at ENC-0 OR 720p60 encoding at ENC-1. So at a time we are encoding lesser than the maximum limit of encoder (1080p60 encoding). So there should not be problem as per my understanding.
    You could try to increase the output buffers of DEI1(the dei with alg enable).

    [ANS]: Okay. We will check. What is the maximum limits of buffer counts of DEI-1 (or any DEI instance)?
    You could try to check what is the input fps at the encoders inputs.

    [ANS]: We checked it. And based on our statistics we are getting performance degradation at the input of second encoder ENC-1 only. Not much degradation at the input of first encoder ENC-0.

    Let me know if you need anymore information,


    --

    Thanks,

    Hitesh

  • Hello,

    Could you confirm that if you are using vfcc->dei0->dei1->enc1 branch only is working correct (without any switching)?
    I mean to cut off the enc0 at all.

    BR
    Margarita