TextureView
から各フレームを取得しようとしていますが、残念ながら次のことを試みています。
textureView.getBitmap();
パフォーマンスが低下する結果、ビットマップを取得するためのより高速な方法があります。代わりにNDKを使用する方が良いですか?
実際の例を探しています
TextureViewは、SurfaceTextureでフレームを受信します。これにより、Surfaceに送信されたフレームが取得され、GLESテクスチャに変換されます。ピクセルデータを取得するには、テクスチャをフレームバッファにレンダリングしてから、glReadPixels()
で読み取る必要があります。次に、ピクセルデータをビットマップオブジェクトでラップできます(ピクセルデータのコピーが含まれる場合と含まれない場合があります)。
迅速に実行する必要のあるすべてのコードはすでにネイティブに実装されているため、NDKを使用してもあまり効果はありません。
データをSurfaceTextureに直接送信し、GLESを自分で実行することで、ある程度の改善が見られる場合がありますが、おそらく、入力フレームをTextureViewに表示したいので、節約できる可能性があるのはビットマップのオーバーヘッドだけです(重要である)。
フレームがどこから来ているのか、そしてフレームで何をしたいのかを質問で説明すると役立つかもしれません。