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.

Confusion of H.264 encoding efficiency on DM6467@594MHz C64xplus

I tested the 720p H.264 encoding efficiency in two way:

1. Modified the demo code of the Linux OS related and used gettimeofday() system funtion to record the encoding time, then got the result which was about 33 frames per second according to some computation.

2. With emulator and JTAG connected to dm6467 evm and project download from TI site, the result was about 27 frames per second through cycles of encoding and the frequency of DSP(594MHz)

I am so confused about the result, both of them adopted the codec engine core function "process()", but the efficiency were different. Is there some significant difference between the OS dependent version and emulation version on encoding?

  • The gettimeofday() function has limited precision based on the real time clock of the DM6467, which won't be as accurate as counting cycles.  My guess is that is what's causing the discrepancy in your measurements.

  • Thank you David, but I still have some questions.

    1. As you said that the cycles counting was more accurated, we could assume that the result of emulation mode was more close to the true efficiency, but is it the right or regular efficiency of DM6467 encoding which about 27 or 28 frames per second? I think it is supposed to reach to 30+, you know, the datasheet(720p H.264 Base Profile Encoder (v01.20.00) on DM6467) company with the project of h.264 encoding demo gave some cycle information, we could get the result about 39 frames per second.

    2. As we know that the cycles of process() call is blocking time, but how about "non-blocking" time that mentioned in datasheet? Is it related to HDVICP?

    3.It says the encoder use C64x+ and ARM968 of HDVICP0, but the DM6467 have two HDVICP, could they be used at the same time?

  • Which datasheet are you looking at?  The one I'm looking at from DVSDK 2.00.00.22 shows results based on an average frame rate of 30 frames per second.

  • Hi David,

    Thank you for reply.

    I understand what you mentioned that 'based on an average frame rate of 30 frames per second', but may be I've not depicted clearly. The number of XX frames per second I mentioned mean how many frames can  be encoded as many as possible within a second instead of that based what capture frequency to encode.

    I've got the fastest speed that dm6467 can encode 33 frames per second.

    Is it the acceptable speed?

    Thank you.

  • I'm not sure what the theoretical maximum is for the number of frames per second that can be encoded.  The codec is designed to support 30fps, and that's typically what the performance measurements are based on.

    Have you seen this FAQ on the DaVinici HD codecs?  It has some information with regards to blocking and non-blocking cycles, as well as the difference between the two HDVICPs.  http://wiki.davincidsp.com/index.php/DaVinciHD_Codecs_FAQ