FFmpegに基づいてムービープレーヤーを作成しました。それはうまく動作します。デコードはかなり速いですが、LG P970(Cortex A8 with Neon)では、640 x 424解像度のYUV2RGB変換を含む平均70フレーム/秒のビデオストリームがあります。しかし、ボトルネックが1つあります。キャンバスに描いています。ビットマップ描画のパフォーマンスを向上させる方法
私はjnigraphicsネイティブライブラリを使って画像データをネイティブ側のビットマップに埋め込み、次にこのビットマップをSurfaceViewのCanvasに描画します。これはかなりシンプルで一般的なアプローチですが、640 x 424解像度のビットマップの場合、描画に44 msかかるため、fpsを23に減らすことができ、このテクニックは使用できなくなります。
ビットマップを大幅に高速に描画する方法はありますか?私は完全にOpenGLES 2を使用してネイティブコードでレンダリングすることを好むだろうが、私はそれもslowすることができます読んでいる。だから今何?...
できるだけ早くビットマップをレンダリングするにはどうすればよいですか?
SurfaceViewのバッファにネイティブコードから直接アクセスする方法はありませんか?カメラのプレビューはこのafaikを行います。 – zapl
AFAIKいいえ、少なくともNDKを使用する標準的な方法はありません。もちろん、Androidソースとリンクすることは可能ですが、互換性の問題を引き起こします。 – vitakot