4

カメラからプレビュー フレームを取得するアプリを作成すると、それに何らかの変換が行われ、画面に表示されます。

public void onPreviewFrame(byte[] data, Camera camera) {}

別のスレッドの JNI で yuv2rgb といくつかのピクセル操作を行うデータを取得します。次に、RGB int 配列からビットマップを作成し、それを使用して描画します

canvas.drawBitmap(bmp, 0, 0, null);

HTC Nexus One では 640x480 で約 15 ~ 20 FPS、Samsung Galaxy S II では 30 以上の FPS が得られます。

Android OpenGL ES を使用して描画を行うことで速度を上げることができるかどうか疑問に思っていますか? 私はこのガイドに従っています: http://obviam.net/index.php/texture-mapping-opengl-android-displaying-images-using-opengl-and-squares/

4

2 に答える 2

4

カメラ アプリに SurfaceView を使用していますか? 表示されるプレビュー フレームは、画面に表示される実際のフレームのコピーです。コールバック プレビュー フレームを表示する別のビューを追加すると思います。

私はグラフィックスの専門家ではありませんが、SurfaceTextureを試してみませんか。setpreviewwindow() の代わりに setpreviewtexture() を使用できます。このように、カメラ サービスは、コピーを作成して AndroidNativeWindow のキューに入れる代わりに、バッファをアプリに直接送信します。これにより、パフォーマンスが向上する可能性があります。

これがAndroidカメラアプリのパノラマのしくみです。ここでソースコードを見つけることができます

于 2012-07-04T06:41:18.060 に答える
2

OpenGL ES を実装し、パフォーマンスに役立ちます

于 2012-07-24T07:19:21.327 に答える