Can I recommend a really fast API, ideally NEON-optimized for converting YUV to RGB at run time on iPhone using a processor? The vImage acceleration view does not provide anything suitable, unfortunately, for using vDSP, converting to and from floats seems to be suboptimal and almost the same as the NEON record itself.
I know how to use the GPU for this with a shader, and actually already do this to display my main video plane. Unfortunately, I also need to create and save the RGBA textures of the display subregions at runtime. Most of the good answers to this question are related to shaders, but I don't want to use the GPU for this extra work, because:
(1) Although I could use RenderTextures and my YUV shader to convert and cache regions, I donโt want to add more synchronization / complexity to the application. (I already transfer textures from CVTextureCache to Unity3D ... I already in many cases rearrange the state from OpenGL to Unity3D and donโt want to debug anymore ...)
(2) Iโm practically writing a game and I donโt have a GPU (as usual, there are no games). I gave some presentations on how to remove things from the GPU over the past few years than how to put things on it ...)
(3) On the iPad, I have a spare core, doing nothing.
As long as there are many libraries that will do YUV in RGBA, I would love to save the time writing my own version of NEON. Now I am using the OpenCV implementation as follows:
cv::cvtColor(avFoundationYUVCaptureMat, BGRAInputImage, CV_YUV420sp2BGRA, 4);
which is true, but at the end of the day slower.
If someone previously looked at other implementations (CoreImage? FFMpeg?) And can recommend one, I would be very grateful.
Thanks, Alex.