yuv to rgb in assembler

时间:2012-06-19 13:57:33

标签: android android-ndk

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数组?

1 个答案:

答案 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 指针。