Hi OpenMAX experts,
I am using a parallel OMX chain scheme and get a video frame rate drop which i can't explain. Can anyone please help?
I am working with an OMX chain that look as follows :
The connection between the capture and DEI is done as usuall by the function IL_ClientConnectComponents() and the tread IL_ClientConnInConnOutTask().
The connection between the capture and scalar2 is done as follows: input and output buffers of scalar 2 are not onnected to any OMX component and scalar2 allocates its input and output buffers. During IL_ClientCbCaptureFillBufferDone() the pointer to the filled buffer is stored in a mailbox, and the scalar2 input thread copies the buffer from the mailbox using EDMA into scalar input buffer. The outputs of scalar1 and scalar2 are copied into buffers allocated in Linux memory area using CMEM (memory area which is cached by the A8) and then averaged by the Neon, the result is copied to the display input buffer using EDMA. The frame rate for this OMX chain is unstable and it is changes constantly from 19-30 fps, also causing bouncing in video.
Reducing buffers size doesn't seem to change anything.(it is not the EDMA copying or the Neon that causes the problem).
When i have tested the OMX chains separately, the upper OMX chain capture->dei->dsp scalar1->copy in and out of Linux area buffer using EDMA ->display i had 30 fps (because of the DSP processing).
when i tested the lower OMX chain capture-> copy in and out of Linux area buffer using EDMA->scalar2->copy in and out of Linux area buffer using EDMA->display i had 59 fps.
Can anyone please advice?
Thanks,
Gabi