在
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'并返回RGB int数组?
答案 0 :(得分:0)
您必须编写类似于naGetConvertedFrame()
的JNI函数。新功能将具有以下声明:
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中的另一个类加载的 - 但是这个loadLibrary()
可以很容易地转移到RenderView.java文件中。
private static native void convert(Bitmap _bitmap, byte[] data, int _width, int _height);
您的功能与原始示例类似,只是它不会读取文件,而是使用GetByteArrayElements()获取 y , u ,以及转换器的 v 指针。