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.

Frame delay measurment in OMX chain

Hi TI experts,

In an OMX chain that includes Capture->DEI->DSP->display i need to measure the delay from the time the frame is captured until the time it is sent to the display. Does anyone know how it should be done?

Thanks,
Gabi 

  • I also need this, does anyone know how it can be done?

    Thanks.

  • There are a few related Forum threads, like this one:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/152211.aspx

    Regards,
    Marc

  • Hi Marc,

    Thanks for your reply, i have read carefully that thread. I am measuring time delay of several OMX chains and i get the following results:

    CAP422->display 100msec

    CAP-DEI->dis 200msec

    In the thread you have sent me Vimal Jain is asking if notify_always mode is used.
    Can you please explain what is notify_always mode and how to use it? 

    Thanks,
    Gabi 

  • Gabi,

    Capture-Display latency is including the TV delay ? Could you please check, if you connect camera directly to TV/monitor what is delay ?

    To enable notify_always, you can use following format for each port.

    OMX_PARAM_COMPPORT_NOTIFYTYPE sNotifyType = {NULL};

          OMX_INIT_PARAM (sNotifyType);

          sNotifyType.eNotifyType = OMX_NOTIFY_TYPE_ALWAYS;

          sNotifyType.nPortIndex =  nPortIndex1;

          eError = OMX_SetParameter (hComp1,

                                     ( OMX_INDEXTYPE ) OMX_TI_IndexParamCompPortNotifyType,

                                     &sNotifyType);

    Regards

    Vimal 

  • Hi Vimal,

    Vimal Jain said:

    Capture-Display latency is including the TV delay ? Could you please check, if you connect camera directly to TV/monitor what is delay ?

    I wasn't aware to the Capture-Display latency, i have measured it and it is about 100msec, thus i beleive that i need to change the measurments results to

    CAP422->display 0 msec

    CAP-DEI->dis 100msec

    Vimal Jain said:

    Gabi,

    To enable notify_always, you can use following format for each port.

    OMX_PARAM_COMPPORT_NOTIFYTYPE sNotifyType = {NULL};

          OMX_INIT_PARAM (sNotifyType);

          sNotifyType.eNotifyType = OMX_NOTIFY_TYPE_ALWAYS;

          sNotifyType.nPortIndex =  nPortIndex1;

          eError = OMX_SetParameter (hComp1,

                                     ( OMX_INDEXTYPE ) OMX_TI_IndexParamCompPortNotifyType,

                                     &sNotifyType);

    What is the trade-off when using OMX_NOTIFY_TYPE_ALWAYS?, i mean where do i loose when i use this mode? does frame rate will degrade?

  • Gabi,

    Notify_always will make the buffer to be processed as soon as possible, compare to periodic task. It might increase M3 load a bit due to more cache evictions. For VC type app, It will not impact significantly as number of channels are less. Notify_always should reduce latency in each chain by ~1/2 frame.

    Regards

    Vimal

  • Hi Vimal,

    Thanks for your answer, after thinking about your answer i have another question, is it possible to reduce the periodic task time, i mean instead of going to Notify_always mode, to find the optimal trade off between latency and processor load by reducing the periodic time?

    Thanks,
    Gabi 

  • Gabi,

    In periodic mode minimum 1/2 frame duration can be used, else it will be overkill for M3. For few channels, running, based on notify is fine. Typically this matters in multichannel cases, where last MHz of M3 is critical. in EZSDK Only decoder period is controlled based on frame rate, rest components period is ~ one frame duration.

    Regards

    Vimal