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.

IVAHD H264 Decoder not freeing output buffers

I am using IVAHD H264 decoder on Jacinto 6 EVM, with GLSDK 6.10.

VIDDEC3_process call some times through errors and recover (as my input h264 frames are corrupted).

I observe that when ever IVAHD H264 decoder is recovered (no error in decoding) after a few consecutive errors in decodes, VIDDEC3 is not freeing up any output buffers which it keeps for reference.

I have allotted more than required buffers (24 buffers for a 720X576 h264 decode), but after some time all buffers (24 buffers, tried with a big number as well like 50) are kept with IVHAD H264 decoders and no buffers are freed.

Can some one help me how to ask VIDDEC3 to flush and release the reference buffers it have with it and what causes this kind of situation?

  • Hi,
    In any case Decoder should not hold more than 16 buffers. Can you send your corrupted stream, we will check at our end.

    Thanks,
    Veeranna
  • Hi Veeranna,

    Thanks a lot for the quick response.

    Sorry, it is not possible to share the stream.

    If required i can share my application log, but i believe that may not be of much use to find out whats going wrong.
    From the observation, it shows that over a period IVAHD H264 decoder is accumulating more than 16 buffers.

    Could you please let me know, if there is a way to flush these buffers from IVAHD H264 decoder?

    When i ran out of buffers, i tried XDM_FLUSH and followed by VIDDEC3_process multiple times (with NULL assigned to outArgs bufs and 0 for numbufs, and InputID etc..), but this didn't help. it never released any buffer in this way.
  • Hi,
    In your application print the inputID, outputID, displayBufID, freeBufID and buf ptrs. observe the log and also send the log to us.

    You can also use our standalone test-application provided with decoder package to check the behavior.

    XDM_FLUSH will force decoder to release all the buffers decoder held, in your case XDM_FLUSH is not returning any buffer means decoder is not holding any buffer.

    Thanks,
    Veeranna
  • Hi Veeranna,

    Thanks for the response.

    I will prepare and share the log with you, meanwhile could you please let me know if there is any way or API call to VIDDEC3 decoders to find out how many reference buffers or buffers which are yet to be freed are available with the decoder?

    Thanks & best regards,
    Srinivas.
  • Hi Srinivas,

    XDM_Flush will forcefully flushes the all buffers used by codec. That is the only API which can reference buffer information.

    Thanks,

    Veeranna