0

私は最近、(C で書かれた) ビデオ デコーダーを Android プラットフォームに移植しました。その出力は YUV 形式でした。そのため、ネイティブ コードから ANativeWindow API を使用して表示するには、RGB8888 に変換する必要がありました。移植は成功しましたが、レンダリングできる出力は、416x240 の入力に対して約 8.5 fps であり、これも -O2(LOCAL_C_FLAG) の最適化レベルを使用した後です。

  • Cおよびアセンブリレベルの最適化に行かずにビデオをより速くレンダリングする方法はありますか?
  • デコードは遅くなりますが、ビデオがより速く実行されているように見せる方法はありますか?

役立つ提案をいただければ幸いです。

4

1 に答える 1

1

GLSurfaceView/Renderer ペアを使用してレンダリングを行うことができます。

  1. 独自の GLSurfaceView.Renderer 実装で、OnDrawFrame をネイティブ メソッドでオーバーライドします。

  2. ネイティブ実装では、OpenGL ES.20 frag シェーダーを使用して色空間の変換 (およびスケーリング) を行います。

このように、ビュー/ビットマップ/UI 同期の詳細について心配する必要はありません。そして、OpenGL ES は非常に高速です。

于 2013-02-26T22:25:43.447 に答える