Thank you for quick answer but my problem is not how to do rotation (it can be done in VPU, IPU or FB), but how can i speed up 1080p movie player (h264 different sizes input, 1080p rotated FB output).
Now i have single thread application in c++ that is running in IMX6 Quad environment and data flow is as follows:
1. VPU initialization - codec, buffers etc.
2. IPU initialization - prepaer ipu_task structures
3. UDP listener - listen incoming packets (h264 frames)
4. Main loop:
a) receive UDP data with h264 frame (or few packets that are join in one h264 frame)
b) vpu_DecUpdateBitstreamBuffer() with h264 frame
c) vpu_DecUpdateBitstreamBuffer() with NULL to flush decoder
d) DecParam set to {0}
e) vpu_DecStartOneFrame()
f) vpu_DecGetOutputInfo()
g) if (!DecOutputInfo.decodingSuccess or DecOutputInfo.indexFrameDisplay < 0) then skip to (a)
h) put decoded frame physical address to ipu tasks
i) run 4 ipu tasks sequentially that resize frame to 1080p with output directly to framebuffer with yoffset that is not visible now (double buffer)
j) switch framebuffer yoffset
5. UDP, IPU, VPU deinitialization
I don't know if it can be done with better performance because now i cant even play 1920x768@30 (data incoming faster then decoding+mosaic+switch time).