2012-10-16 130 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%的總線帶寬。」

相關問題