有没有人设法使用RenderScript和新的Camera API获得YUV_420_888帧?

Bog*_*nde 3 android yuv renderscript android-camera android-5.0-lollipop

我正在使用RenderScript和Allocation从Android Camera2 API获取YUV_420_888帧,但是一旦我从分配中复制byte [],我只从组成帧的3个平面接收Y平面,而U和V平面值在字节[]中设置为0.我试图模仿previos相机API中的onPreviewframe,以便在应用程序处理相机帧时执行.我的分配创建如下:

Type.Builder yuvTypeBuilderIn = new Type.Builder(rs, Element.YUV(rs));
    yuvTypeBuilderIn.setX(dimensions.getWidth());
    yuvTypeBuilderIn.setY(dimensions.getHeight());
    yuvTypeBuilderIn.setYuvFormat(ImageFormat.YUV_420_888);
    allocation = Allocation.createTyped(rs, yuvTypeBuilderIn.create(),
            Allocation.USAGE_IO_INPUT | Allocation.USAGE_SCRIPT);
Run Code Online (Sandbox Code Playgroud)

而我的脚本看起来像:

#pragma version(1)
#pragma rs java_package_name(my_package)
#pragma rs_fp_relaxed

rs_allocation my_frame;
Run Code Online (Sandbox Code Playgroud)

Edd*_*ala 6

Android示例应用程序HdrViewfinderDemo使用RenderScript处理来自camera2的YUV数据.

https://github.com/googlesamples/android-HdrViewfinder

具体来说,ViewfinderProcessor设置Allocations,hdr_merge.rs从中读取.