Самое быстрое преобразование YUV420P в RGBA на iOS с использованием процессора

Кто-нибудь может порекомендовать действительно быстрый API, идеально оптимизированный NEON для преобразования YUV в RGB во время выполнения на iPhoneusing the CPU? К сожалению, vImage ускоренного фреймворка не предоставляет ничего подходящего, и при использовании vDSP преобразование в плавающие и обратно кажется неоптимальным и почти такой же работой, как и сам писать NEON.

Я знаю, как использовать GPU для этого с помощью шейдера, и фактически уже делаю это для отображения моей основной плоскости видео. К сожалению, мне также нужно создавать и сохранять RGBA-текстуры субрегионов дисплея во время выполнения. Большинство хороших ответов на этот вопрос касаются шейдеров, но я не хочу использовать графический процессор для этой дополнительной работы, потому что:

(1) Хотя я мог бы использовать RenderTextures и мой YUV-шейдер для преобразования и кэширования областей, я не хочу добавлять больше синхронизации / сложности в приложение. (Я уже передаю текстуры из CVTextureCache в Unity3D ... Я переключаю состояние с OpenGL за Unity3D уже во многих случаях и уже не хочу больше отлаживать ...)

(2) С практической точки зрения я пишу игру, и у меня нет запасных графических процессоров (поскольку игры обычно не дают больше презентаций о том, как отключить видеокарту за последние несколько лет, чем о том, как это сделать). положить вещи на это ...)

(3) На iPad у меня есть запасное ядро, которое ничего не делает.

Хотя существует много библиотек, которые будут передавать YUV в RGBA, я бы хотел сэкономить время написания моей собственной версии NEON. Прямо сейчас я использую реализацию OpenCV следующим образом:

cv::cvtColor(avFoundationYUVCaptureMat, BGRAInputImage, CV_YUV420sp2BGRA, 4);

что правильно, но конец дня медленный.

Если кто-то ранее смотрел на другие реализации (CoreImage? FFMpeg?) И мог бы порекомендовать одну, я был бы очень благодарен.

Спасибо, Алекс.

Ответы на вопрос(2)

Ваш ответ на вопрос