video decode with omx


I am using omx APIs to decode H264 stream in R23.2. I know that v4l2 can be used in R24.2 for accessing decoder, but due to some dependencies I do not want to migrate and want to the get it working in R23.2.

I am able to get the decoder working, but the output framerate is very low.

I am getting fill buffer done callback every 260 ms from the decoder. I have configured the output port framerate and I am sending proper timestamp in input buffers. Could this be related to NVMM buffers? I am using normal buffers allocated with OMX alloc calls.
I get the following prints, but still the framerate is at max 5 fps -

TVMR: FrameRate = 30
TVMR: NVDEC LowCorner Freq = (180000 * 1024)

Am I missing out some OMX configuration?

I figured it out. NVMM buffers should be used to get proper throughput from decoder

Hi zeitgeist,

Would you please tell us:

(1) Your video condition ?

  • (a) Resolution FullHD? UHD/4k?
  • (b) When it is for 260ms, R24.1? R24.2?

(2) How to use NVMM buffers

  • NvBufferCreate() —> get fd(s)
  • NvBufferGetParams() —> get pointer to buffer(s)
  • Configure/Set Parameter OMX —> set pointer to buffer(s)
  • Run Decoder
    Do you use mmap() to convert the pointers ?