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.

TDA4VM: It takes about 50ms to rotate the image by 90 degrees using UDMA, can you further speed up the image rotation?

Part Number: TDA4VM

Hi TI expert,

I use UDMA to customize an image rotation function of 90 degrees on C6x core, the image used is 1920x1080 nv12 format image, I set dma_ch to 8 and 9 to rotate the Y and UV channels of nv12 image respectively, and copy_mode is set to 0, the image can be rotated correctly, but it takes about 50ms to rotate an image, can I further speed up the image rotation speed?

I have tried the following, but instead of getting the desired effect, the rotation speed is slower.

  1. The Y channel of the 1920x1080 nv12 image is divided into four pieces and dma_ch is set to 8, 9, 10 and 11 respectively to rotate the Y channel image, while the UV channel of the nv12 image is divided into two pieces and dma_ch is set to 12 and 13 respectively to rotate the UV channel image, the rotation result is correct, but the speed of rotating an image is instead a few milliseconds slower than 50ms.
  2. Set copy_mode to 2, then use appUdmaCopyNDTrigger and appUdmaCopyNDWait several times, but the speed does not improve either, instead it is a few milliseconds slower.

After my many tests, I think that multiple dma_ch DRU channels performing Y and UV channel rotations separately are executed serially (i.e. after executing the Y channel rotation then executing the UV channel image rotation). Is there any way to execute the rotation of multiple DRU channels in parallel?

Please ask a TI expert. Is it reasonable to perform a 90-degree rotation of a 1920x1080 nv12 image on a C6x using UDMA, which takes about 50ms? Is there any way to speed up the image rotation further? Do I need to turn on the DRU transpose function, and how to make sure it is turned on? If not, how to turn on the transpose function?

Thanks

  • Unlocking this ticket.

    Rotation is bit costly operation for 8bit images, especially 90 or 270 degree rotation, because in this case, you might have to setup TR such that it reads a byte at a time. This can spend a lot of traffic and can potentially slow down the performance. 

    Regards,

    Brijesh