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.
- 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.
- 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