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.

Linux/TDA2EVM5777: [VISION SDK] Simultaneous access of same buffer from different Links

Part Number: TDA2EVM5777


Tool/software: Linux

Hi,

We are working with Vision Sdk links and chain framework and the chain is as follows
NullSrc(A15) -> Decode(IPU) -> Alg_preproc(A15) -> Alg_proc_a (EVE ) -> Alg_proc_b (DSP) -> Alg_proc_c (A15) -> Alg_postproc(A15) -> Display(IPU).

Out of these alg plugin links

  •     preproc and postproc work in "NOT_IN_PLACE" mode
  •     proc_a, proc_b and proc_c work in "IN_PLACE" mode.

The proc_a and proc_b function such that it processes only 1 in 15 frames, and act as pass-through for the rest.
This results in an uneven flow rate of buffers, which show up as jerky video on the display.

We tried to rectify it by adding some precise timed waits in proc_c.
This is resulting in a strange behavior where same video buffer (output buffer of preproc) is being picked up for processing in preproc link (from emptyQ) even before it gets used/released from proc_c link.

This behavior is not seen upon disabling the wait timers.

We suspect this is due to timeout logic present in IPC links.
Can you please confirm/correct our understanding, or point out what else can be causing this issue.

In case this is due to IPC link timeout, can we disable the same and How?

Thanks in advance,

Regards,
Ranjith Bhide

PS:
The waits are in range of 20-40 ms for each frame
The proc_a + proc_b takes 250ms for each processing frame and almost 0 ms for each pass-through frame
The input frame rate is 15 fps.

  • Hi,

    You should add time wait only for the frames which are getting passthrough not the one which are getting processed.
    You should add the time wait just after you get the buffers from the previous link and then time wait and then pass it to next link.

    Regards,
    Anuj