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.

H264 Encoding Performance on OMAP3530 EVM

Other Parts Discussed in Thread: OMAP3530

I am trying to encode video to a file using H264 compression and gstreamer (on the OMAP3530 EVM). I am seeing that the framerate is only 10fps for a 720x480 imge, not 30fps as I had hoped. Is there a reason for this?

My gstreamer command is:

gst-launch -v videotestsrc num-buffers=120 ! 'video/x-raw-yuv, format=(fourcc)UYVY, width=(int)720, height=(int)480, framerate=(fraction)30/1' ! TIPrepEncBuf ! TIVidenc1 codecName=h264enc engineName=codecServer contiguousInputFrame=true ! dmaiperf engine-name=codecServer ! avimux ! filesink location=/tmp/capture.avi

And the output of dmaiperf is:

INFO:
Timestamp: 0:47:58.757659927; bps: 165191; fps: 10; DSP: 32; mem_seg: DDR2; base: 0x87f0cfa0; size: 0x20000; maxblocklen: 0x15798; used: 0xa868; mem_seg: DDRALGHEAP; base: 0x87400000; size: 0x900000; maxblocklen: 0x742500; used: 0x1bd788; mem_seg: L1DSRAM; base: 0x10f04000; size: 0x10000; maxblocklen: 0x0; used: 0x10000;
INFO:
Timestamp: 0:47:59.769958511; bps: 164237; fps: 10; DSP: 31; mem_seg: DDR2; base: 0x87f0cfa0; size: 0x20000; maxblocklen: 0x15798; used: 0xa868; mem_seg: DDRALGHEAP; base: 0x87400000; size: 0x900000; maxblocklen: 0x742500; used: 0x1bd788; mem_seg: L1DSRAM; base: 0x10f04000; size: 0x10000; maxblocklen: 0x0; used: 0x10000;
INFO:
Timestamp: 0:48:00.775665296; bps: 167761; fps: 10; DSP: 32; mem_seg: DDR2; base: 0x87f0cfa0; size: 0x20000; maxblocklen: 0x15798; used: 0xa868; mem_seg: DDRALGHEAP; base: 0x87400000; size: 0x900000; maxblocklen: 0x742500; used: 0x1bd788; mem_seg: L1DSRAM; base: 0x10f04000; size: 0x10000; maxblocklen: 0x0; used: 0x10000;
INFO:
Timestamp: 0:48:01.787628189; bps: 163954; fps: 10; DSP: 33; mem_seg: DDR2; base: 0x87f0cfa0; size: 0x20000; maxblocklen: 0x15798; used: 0xa868; mem_seg: DDRALGHEAP; base: 0x87400000; size: 0x900000; maxblocklen: 0x742500; used: 0x1bd788; mem_seg: L1DSRAM; base: 0x10f04000; size: 0x10000; maxblocklen: 0x0; used: 0x10000;
...

I am usung DVSDK 4.01.00.09. The OMAP is running at the default speed ARM=500MHz, DSP=360MHz). Please could someone help explain what needs to be done to achieve 30fps.

Thanks

  • Update:

    I have set the clock rates to 600MHz (ARM) and 430MHz (DSP). The result is not a significant improvement at all... just an increase to 12fps. Can someone please confirm the performance I should expect to see?

    Thanks

  • By changing the gst-launch command to use a 'queue' pad before 'TIVidenc1', a higher frame rate of about 18fps can be achieved. Still not the expected 30fps though:

    gst-launch -v videotestsrc num-buffers=120 ! 'video/x-raw-yuv, format=(fourcc)UYVY, width=(int)720, height=(int)480, framerate=(fraction)30/1' ! TIPrepEncBuf ! queue ! TIVidenc1 codecName=h264enc engineName=codecServer contiguousInputFrame=true ! dmaiperf engine-name=codecServer ! avimux ! filesink location=/tmp/capture.avi

    Andy