1

MP4 ファイルのフレームを OpenGLES テクスチャに変換するコードを作成しており、クラス AVAssetReaderTrackOutput を使用してピクセル バッファーにアクセスできるようにしています。出力に最適なピクセル バッファ形式は何ですか? 現在、以前 libav を使用してフィードしていたように、YUV420P を OpenGLES シェーダーで RGB に変換する古いコードを使用しています。現在、AVFoundation を使用しようとしていますが、OpenGLES シェーダーがピクセル バッファー フォーマットを RGBA に設定するよりも高速かどうか、または YUV フォーマットを使用してシェーダーを維持する必要があるかどうかを考えています。

ありがとう

4

1 に答える 1

2

これは、データの宛先が何であるかに依存すると思います。データを通過させるだけなら、ネイティブ YUV は BGRA よりも高速です。データを RGBA または BGRA に読み戻す必要がある場合は、BGRA に固執し、glReadPixels() ではなく OpenGL テクスチャ キャッシュを使用します。

YUV メソッドに関するこの SO の質問の回答を読むことをお勧めします。見積もり:

「どのような場合でも、ビデオ フレームは GPU に送られる必要があります。ビデオのサンプル クロミナンスが 4:2:0 の場合、YCbCr を使用すると、バス帯域幅を 25% 節約できます。」

于 2012-10-16T15:52:53.277 に答える