¿Alguien puede recomendar una API realmente rápida, idealmente optimizada para NEON para hacer la conversión de YUV a RGB en tiempo de ejecución en el iPhone usando la CPU? La vImage de accelerate framework no proporciona nada adecuado, lamentablemente, y el uso de vDSP, la conversión a flotadores y la copia de seguridad parece ser un trabajo subóptimo y casi tanto como escribir NEON yo mismo.Conversión más rápida de YUV420P a RGBA en iOS usando la CPU
Sé cómo usar la GPU para esto a través de un sombreador, y de hecho ya lo hago para mostrar mi plano de video principal. Desafortunadamente, también necesito crear y guardar texturas RGBA de subregiones de la pantalla en tiempo de ejecución. La mayoría de las buenas respuestas a esta pregunta involucran sombreadores, pero no quiero usar la GPU para ese trabajo adicional, porque:
(1) Aunque podría usar RenderTextures y mi shader YUV para convertir y almacenar en caché las regiones , No quiero agregar más sincronización/complejidad a la aplicación. (Ya paso texturas de CVTextureCache a Unity3D ... Estoy cambiando el estado de OpenGL detrás de Unity3D ya en muchos casos y no quiero hacer más depuración ...)
(2) Más prácticamente Estoy escribiendo un juego, y no tengo ninguna GPU de sobra (como generalmente no lo hacen los juegos). He dado más presentaciones sobre cómo sacar cosas de la GPU en los últimos años que sobre cómo ponerle las cosas. ..)
(3) En el iPad, tengo un núcleo de repuesto sentado sin hacer nada.
Si bien hay muchas bibliotecas que harán YUV para RGBA, me gustaría ahorrar el tiempo de escribir mi propia versión de NEON. En este momento estoy usando la implementación de OpenCV así:
cv::cvtColor(avFoundationYUVCaptureMat, BGRAInputImage, CV_YUV420sp2BGRA, 4);
que es correcto, pero al final de los tiempos es lento.
Si alguien ya ha analizado otras implementaciones (CoreImage? FFMpeg?) Y puede recomendar una, le agradecería inmensamente.
Gracias, Alex.
Solo sería pan comido si entendieras el código NEON, que yo no entiendo. – Cthutu
Espero que este artículo y los siguientes de la serie lo iluminen http://blogs.arm.com/software-enablement/161-coding-for-neon-part-1-load-and-stores/ – Sam