1

ビデオフレーム(ビットマップ)をステップスルーできるアプリに取り組んでいます。また、フレームで構成されたビデオを実際に表示しているかのように、フレームを次々に再生する機能もあります。

一度に1つのビットマップを表示しているImageViewが1つあります。私が抱えている問題は、ImageViewへの画像の描画(super.onDraw()の呼び出しだけを話している)に約30msかかることです。フレームは元のフレームレートで再生する必要があるため、これは問題です。プロセスを遅くしている他の操作も進行中ですが、描画は確かに役に立ちません。

OpenGL ESを調べていましたが、すべてのデバイスが2乗以外のイメージをサポートしているわけではないため、機能しません。画像のサイズは、半分のサイズでサンプリングしているため、デバイスの記録されたビデオ解像度の半分です。これは、2の累乗の画像になることはほとんどありません。

描画を高速化するために速度を上げる方法はありますか?

4

2 に答える 2

3

OpenGL ES 2.0は、2つのテクスチャの非パワーのサポートを課しているので、安全です。OpenGL ES 1.0を使用していて、2の累乗のサポートがない場合、それを回避するのは非常に簡単です(npotイメージを含めるのに十分な大きさの2の累乗のテクスチャを作成するだけです)。

注:Canvasで速度を向上できるかどうかを確認するには、アプリのプロファイルを作成する必要があります。描画時にイメージをダウンスケーリングしている可能性があります。互換性のある構成ではなく、実行時に変換が行われる可能性があります(たとえば、565から8888)。

于 2011-06-29T16:45:04.317 に答える
0

ImageViewが私が探していたフレームレートを決して与えてくれなかったことがわかりました(理由はわかりません)。このような場合は、代わりにSurfaceViewをオーバーライドする必要があります。もう少し手間がかかりますが、フレームレートが確実に向上し、柔軟性が大幅に向上します。明らかに、クリップに注意し、他のビューがこのビューをオーバーレイすると、大幅な速度低下も発生することを知っておく必要があります(オーバーレイも各フレームで再描画する必要があるため)。

于 2011-06-29T16:51:57.240 に答える