任何人都可以推荐一个非常快速的 API,最好是 NEON 优化,以便在运行时使用 CPU在 iPhone 上进行 YUV 到 RGB 转换?可悲的是,加速框架的 vImage 没有提供任何合适的东西,并且使用 vDSP,转换为浮点数和返回似乎不是最理想的,几乎与自己编写 NEON 一样多。
我知道如何通过着色器为此使用 GPU,事实上,我已经这样做了,以显示我的主视频平面。不幸的是,我还需要在运行时创建和保存显示子区域的 RGBA 纹理。这个问题的大部分好答案都涉及着色器,但我不想使用 GPU 来完成额外的工作,因为:
(1) 虽然我可以使用 RenderTextures 和我的 YUV 着色器来转换和缓存区域,但我不想给应用程序添加更多的同步/复杂性。(我已经将纹理从 CVTextureCache 传递到 Unity3D ......在很多情况下,我已经在 Unity3D 后面从 OpenGL 切换状态并且不想再进行调试......)
(2) 更实际的是,我正在编写一个游戏,并且没有任何可用的 GPU(因为游戏通常没有 - 在过去几年中,我已经提供了更多关于如何从 GPU 中获取东西的演示,而不是如何把东西放在上面……)
(3) 在 iPad 上,我有一个备用核心坐在那里无所事事。
虽然有许多库可以将 YUV 转换为 RGBA,但我希望节省编写自己的 NEON 版本的时间。现在我正在使用 OpenCV 的实现,如下所示:
cv::cvtColor(avFoundationYUVCaptureMat, BGRAInputImage, CV_YUV420sp2BGRA, 4);
这是正确的,但结束的日子很慢。
如果有人以前看过其他实现(CoreImage?FFMpeg?)并且可以推荐一个,我将非常感激。
谢谢,亚历克斯。