有没有人设法获得使用RenderScript和新相机API一个YUV_420_888框架? [英] Has anyone managed to obtain a YUV_420_888 frame using RenderScript and the new Camera API?

查看:453
本文介绍了有没有人设法获得使用RenderScript和新相机API一个YUV_420_888框架?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用RenderScript和分配,以获得从Android摄像机2 API YUV_420_888框架,但一旦我从分配复制字节[]我只收到3架飞机组成该帧的Y平面,而U和V平面值在字节[]设置为0。我试图模仿从previos相机API上previewframe为了在镜头帧的处理程序来执行。我的配置是一样创建:

  Type.Builder yuvTypeBuilderIn =新Type.Builder(RS,Element.YUV(RS));
    yuvTypeBuilderIn.setX(dimensions.getWidth());
    yuvTypeBuilderIn.setY(dimensions.getHeight());
    yuvTypeBuilderIn.setYuvFormat(ImageFormat.YUV_420_888);
    分配= Allocation.createTyped(RS,yuvTypeBuilderIn.create()
            Allocation.USAGE_IO_INPUT | Allocation.USAGE_SCRIPT);

而我的剧本是这样的:

 的#pragma版(1)
RS的#pragma java_package_name(my_package)
的#pragma rs_fp_relaxedrs_allocation my_frame;


解决方案

Android的示例应用程序HdrViewfinderDemo使用RenderScript从摄像机2处理YUV数据。

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

具体而言,在<一href=\"https://github.com/googlesamples/android-HdrViewfinder/blob/master/Application/src/main/java/com/example/android/hdrviewfinder/ViewfinderProcessor.java\"相对=nofollow> ViewfinderProcessor ​​设置了分配和<一个href=\"https://github.com/googlesamples/android-HdrViewfinder/blob/master/Application/src/main/rs/hdr_merge.rs\"相对=nofollow> hdr_merge.rs 从中读取。

I'm using RenderScript and Allocation to obtain YUV_420_888 frames from the Android Camera2 API, but once I copy the byte[] from the Allocation I receive only the Y plane from the 3 planes which compose the frame, while the U and V planes values are set to 0 in the byte[]. I'm trying to mimic the onPreviewframe from the previos camera API in order to perform in app processing of the camera frames. My Allocation is created like:

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);

while my script looks like:

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

rs_allocation my_frame;

解决方案

The Android sample app HdrViewfinderDemo uses RenderScript to process YUV data from camera2.

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

Specifically, the ViewfinderProcessor sets up the Allocations, and hdr_merge.rs reads from them.

这篇关于有没有人设法获得使用RenderScript和新相机API一个YUV_420_888框架?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆