1

ブラッド、GPUImageフレームワークで、GPUImageMovieWriter.mファイルで定義されたmovieFrameBufferおよびmovieRenderBufferと呼ばれるオフスクリーンフレームとレンダリングバッファーがあることを確認しました。オフスクリーンフレームバッファを宣言する必要があるのは何ですか。GPUImageView.mで定義されたバッファーを使用してピクセルを取得することはできませんか?720Pと1080Pはその理由をサポートしていますか?

4

1 に答える 1

1

これは GitHub プロジェクト ページまたは私のフォーラムで尋ねたほうがよいかもしれませんが、私がこれを行う興味深い理由が 1 つあります。

AVAssetWriter をテストしたところ、BGRA フレームを使用するとエンコードのパフォーマンスが大幅に向上することがわかりました。したがって、 を使用してフレームをglReadPixels()取得するときは、フィルタリングされた着信フレームを BGRA カラー フォーマットで読み取るために、カラー スウィズリング シェーダを適用する必要がありました。これは、そのオフスクリーン フレームバッファを使用してレンダリングされます。

iOS 5.0 では、テクスチャ キャッシュを使用して、 を使用する必要がないようにしていますglReadPixels()。iOS デバイスの内部テクスチャ カラー フォーマットは BGRA であるため、カラー スウィズリングは必要ありません。ただし、フィルター処理されたこれらのフレームを単純なパススルー シェーダーで実行し、その時点までのフィルター チェーンが別の解像度でレンダリングされていた場合に備えて、オフスクリーン FBO に出力します。これにより、ある解像度で映画を録画し、別の解像度で表示したり、その他のアクションを実行したりできます。

最適化の 1 つとして、入力画像サイズが出力ムービー エンコーディング サイズと一致する場合に備えて、パススルー レンダリング ステップを排除することを検討しています。これにはフィルタ アーキテクチャに少し手を加える必要があるため、しばらくは発生しない可能性があります。

于 2012-06-23T15:39:03.547 に答える