2012-10-16 60 views
1

我正在编写将MP4文件中的帧转换为OpenGLES纹理的代码,并且正在使用类AVAssetReaderTrackOutput来访问像素缓冲区。什么是最好的像素缓冲区格式输出?现在我正在使用我的旧代码,它将OpenGLES着色器中的YUV420P转换为RGB,因为我之前使用libav来提供它。现在我试图使用AVFoundation,并想知道我的OpenGLES着色器是否比将像素缓冲区格式设置为RGBA更快,或者是否应该使用YUV格式并保留着色器。什么是创建AVAssetReaderTrackOutput时选择的最佳像素格式?

谢谢

回答

2

我想这取决于你的数据的目的地是什么。如果你正在处理的数据正在通过数据,原生YUV应该比BGRA快。如果您需要将数据读回到RGBA或BGRA,我会坚持使用BGRA并使用OpenGL纹理缓存而不是glReadPixels()。

我推荐阅读关于YUV方法的this SO question的答案。引用:

“无论如何视频帧需要去GPU:如果你的视频采样色度为4:2:0,使用YCbCr可以节省25%的总线带宽。”

相关问题