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.

about h.264 on dm6446

Hi , everyone!

I have ported x264 source code to DM6446 EVM, through optimizing the code on DM6446, now the encoder speed is 30f/ps with CIF format.

the optimized techniques include memory optimizing, intrinsics, also write some modules to assemble language, such as DCT and SAD.

But now if I want to continue optimizing the encoder ,and the goal is making the encoder run 30f/ps with 720x576.

What to do for me the next step? what optimizing techniques should I take?

I want to listen to your suggest and share your experience!

I'm very appreciate for your response! Thank you!

  • Hi Wiliam,

    Glad to know that you ported x264 code to DM6446 currently realtime for CIF.

    Here are the few steps/tricks which you should try out for achiving your goal of running encoder for 720x576 in realtime.

    1. Profile the code and come out with the break-up of different modules cycle consumption.

    2. Definetly it would be some thing like this for encoders.

    • Motion Estimation
    • Intra Prediction (for both mode decision and actual prediction)
    • Motion Compensation
    • Entropy Coding
    • Transform/Inv-Transform
    • Quant/De-quant

    As you would be aware of HWA of IMX in DM6446, by mapping the ME over to IMX, one can save the ME cycles completly with C64X+ and IMX working concurrently. One more thumb rule for Video processing on C64x/+, run the loop for the maximum amount of data.Eg: Restructure the code to have functions which operate on larger chuncks of data (N Macroblocks than Single Macroblock). This is especially true with MC, DCT/IDCT etc.

    Major gains can be achived with just writing majority of the module in Linear Assembly. Also try to hide the DMA cycles behind the CPU processing by triggering well ahead of the point where data is needed.

    Hope above suggestion help you in achieving your goal.

    Regards,

    Venu

  • Hi, Venugopala , thanks very much for your suggestion!

    You say that HWA of IMX in Dm6446, could you tell me what HWA and IMX are?

    Thanks

    Best regards

    William

  • IMX is part of the VICP, it is mentioned a couple of times in the datasheet in reference to IMX interrupts but no detail is given as the VICP is largely unsupported outside of specific codecs and third parties who develop codecs. The one new exception to this is the VICP signal processing library available here which allows you to leverage the VICP.

  • Hi,

    I would ask you a thing. Which source code did you have ported to? It is the JM reference?

    Excuse me If I ask you this thing but it is quite important for me understand if this operation is possible.

    Thank you in advance

     

     

  • My experience has been developement of encoder from scratch.

    For understanding we might have refered to JM reference or the H.264 spec.