Может ли кто-нибудь порекомендовать действительно быстрый API, в идеале NEON -, оптимизированный для преобразования YUV в RGB во время выполнения на iPhone с использованием ЦП ? К сожалению, vImage из ускоренного фреймворка не предоставляет ничего подходящего, а использование vDSP, преобразование в числа с плавающей запятой и обратно кажется неоптимальным и почти таким же трудоемким, как написание NEON.
Я знаю, как использовать GPU для этого через шейдер, и фактически уже делаю это для отображения моей основной видеоплоскости. К сожалению,Мне также нужно создавать и сохранять текстуры RGBA субрегионов дисплея во время выполнения. Большинство хороших ответов на этот вопрос связаны с шейдерами, но я не хочу использовать GPU для этой дополнительной работы, потому что:
(1 )Хотя я мог бы использовать RenderTextures и свой шейдер YUV для преобразования и кэширования областей, я не хочу добавлять дополнительную синхронизацию/сложность в приложение. (Я уже передаю текстуры из CVTextureCache в Unity3D... Во многих случаях я уже переключаю состояние с OpenGL за спиной Unity3D и не хочу больше заниматься отладкой...)
(2 )Точнее, я пишу игру, и у меня нет лишних графических процессоров (, как обычно не бывает в играх -несколько лет, чем как на него надеть вещи...)
(3 )На iPad у меня лежит запасное ядро, ничего не делающее.
Хотя существует множество библиотек, которые преобразуют YUV в RGBA, я хотел бы сэкономить время на написании собственной версии NEON. Сейчас я использую такую реализацию OpenCV:
cv::cvtColor(avFoundationYUVCaptureMat, BGRAInputImage, CV_YUV420sp2BGRA, 4);
что правильно, но конец -из -дней медленный.
Если кто-нибудь ранее смотрел на другие реализации (CoreImage? ФФМпег? )и могу порекомендовать один, буду очень признателен.
Спасибо, Алекс.