0

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

YUV形式でデータを取得します。RGBに変換するために、NDKのコンバーターを使用しました。しかし、それでも十分な速さではありません。

だから私はこれを見つけました: http ://www.roman10.net/effective-color-conversion-yuv-rgb-in-android-in-assembly/

このNDKメソッドがあります: https ://github.com/roman10/roman10-android-tutorial/blob/master/colorConversion/jni/test.c

しかし、YUVバイト配列'data'を受け入れてRGBint配列を返すように変更する方法がわかりませんか?

4

1 に答える 1

0

のような JNI 関数を作成する必要がありますnaGetConvertedFrame()。新しい関数には次の宣言があります。

JNIEXPORT void JNICALL Java_<name>_convert(JNIEnv * pEnv, jobject pObj, jobject pBitmap, jbyteArray jData, jint jWidth, jint jHeight)

関数の名前は、この関数をnativeメソッドとして宣言する Java クラスの名前を反映する必要があります (例としてRenderView.javaを参照してください)。Roman の例では、共有ライブラリはMain.javaの別のクラスからロードされますが、これはRenderView.javaファイルloadLibrary()に簡単に転送できます。

private static native void convert(Bitmap _bitmap, byte[] data, int _width, int _height);

関数は元の例と似ていますが、ファイルを読み取らず、GetByteArrayElements()を使用してコンバーターのyu、およびvポインターを取得します。

于 2012-06-20T14:48:57.810 に答える