输出流和剪裁

目录

输出流和剪裁

输出流

剪裁

重新处理


输出流

相机子系统针对所有分辨率和输出格式都仅在基于 ANativeWindow 的管道上运行。您可以一次配置多个流,以便将单个帧发送至多个目标,例如:GPU、视频编码器、RenderScript,或应用可见的缓冲区(RAW Bayer 缓冲区、经处理的 YUV 缓冲区或经 JPEG 编码的缓冲区)。

出于优化的目的,这些输出流必须提前配置,而且只有有限的输出流可同时存在。这样一来,就可以预先分配内存缓冲区和配置相机硬件,以便在提交列有多个或者不同输出管道的请求时,不会出现请求延迟执行的情况。

如需详细了解取决于支持的硬件级别的保证流输出组合,请参阅 createCaptureSession()

剪裁

完整像素阵列的剪裁(用于数字变焦和需要更小 FOV 的其他使用情况)通过 ANDROID_SCALER_CROP_REGION 设置进行传递。这个设置可按需更改,这种方式对于实现平滑的数字变焦至关重要。

该区域被定义为矩形(x 和 y 分别表示宽和高),其中 (x,y) 表示矩形的左上角。该矩形在传感器有源像素阵列的坐标系中进行定义,其中 (0,0) 对应有源像素阵列的左上角像素。因此,宽度和高度不能大于 ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY 静态信息字段中所报告的尺寸。允许的最小宽度和高度由 HAL 通过 ANDROID_SCALER_MAX_DIGITAL_ZOOM 静态信息字段进行报告,该字段描述了所支持的缩放因子的最大值。因此,最小剪裁区域的宽度和高度为:

  {width, height} ={ floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[0] /ANDROID_SCALER_MAX_DIGITAL_ZOOM),floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[1] /ANDROID_SCALER_MAX_DIGITAL_ZOOM) }

如果剪裁区域需要满足特定需求(例如:要求起始位置坐标为偶数,并且其宽度/高度需均为偶数),则 HAL 必须进行必要的舍入运算,并写出输出结果元数据中所用的最终剪裁区域。同样,HAL 要实现视频防抖功能,则必须调整结果剪裁区域,以描述在应用视频防抖功能后输出结果中实际包含的区域。一般情况下,使用相机的应用必须能够根据剪裁区域、图像传感器的尺寸和镜头焦距确定其接收的视野范围。

由于剪裁区域适用于所有视频流,这些视频流的宽高比可能与剪裁区域的不同,所以每路视频流所用的实际传感器区域可能小于剪裁区域。具体而言,每路视频流应尽量避免进一步剪裁已定义的剪裁区域,以维持方形像素及其宽高比。如果视频流的宽高比大于剪裁区域,则该视频流应该在垂直方向上进一步剪裁,如果视频流的宽高比小于剪裁区域,则该视频流应该在水平方向上进一步剪裁。

在所有情况下,视频流剪裁均必须位于整个剪裁区域的中心位置,并且相对于整个剪裁区域,每路视频流要么在水平方向上进行剪裁,要么在垂直方向上进行剪裁,但绝不能在这两个方向上同时进行剪裁。

例如,如果两路视频流分别定义为 640x480(宽高比为 4:3)和 1280x720(宽高比为 16:9),并假设传感器为 300 万像素级(2000 x 1500 像素阵列),则下面展示了针对几个样本剪裁区域,每路视频流的预期输出区域。

剪裁区域:(500、375、1000、750)(宽高比为 4:3)
640x480 视频流剪裁:(500、375、1000、750)(与剪裁区域相同)
1280x720 视频流剪裁:(500、469、1000、562)

图 1 宽高比为4:3

剪裁区域:(500、375、1333、750)(宽高比为 16:9)
640x480 视频流剪裁:(666、375、1000、750)
1280×720 视频流剪裁:(500、375、1333、750)(与剪裁区域相同)

图 2 宽高比为16:9

剪裁区域:(500、375、750、750)(宽高比为 1:1)
640x480 视频流剪裁:(500、469、750、562)
1280x720 视频流剪裁:(500、543、750、414)

图 3 宽高比为1:1

最后一个示例是宽高比为 1024×1024(方形)的视频流,而不是 480p 视频流:
剪裁区域:(500、375、1000、750)(宽高比为 4:3)
1024x1024 视频流剪裁:(625、375、750、750)
1280x720 视频流剪裁:(500、469、1000、562)

图 4 宽高比为 4:3(方形)

重新处理

对原始图片文件提供额外的支持功能,即 RAW Bayer 数据重新处理支持功能。该支持功能允许相机管道处理之前捕获的 RAW 缓冲区和元数据(之前记录的整个帧),以生成新渲染的 YUV 或 JPEG 输出。

转自:https://source.android.google.cn/devices/camera/camera3_crop_reprocess?hl=zh_cn

Android Camera(九)Output and Cropping相关推荐

  1. Android [Camera 源码] 相机 HAL3(Camera3) Google官方文档(二)

    Google源码网地址链接:https://source.android.com/devices/camera 该Google Camera的文档为系列文章,文章列表: overview Camera ...

  2. Camera HAL3学习: Android Camera System

    Android Camera硬件抽象层(HAL,Hardware Abstraction Layer)主要用于把底层camera drive与硬件和位于android.hardware中的framew ...

  3. android camera(三):camera V4L2 FIMC

    关键词: android  camera CMM 模组 camera参数  CAMIF   V4L2   平台信息: 内核: linux 系统: android 平台:S5PV310(samsung ...

  4. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

  5. Android Camera数据流分析全程记录(overlay方式二)

     Android Camera数据流分析全程记录(overlay方式) 上一篇文章overlay这个过程已经走了一遍,但是根本是这个流程还没有走完,由上一篇文章知道,最后调用了postFrame方法, ...

  6. Android Camera数据流分析全程记录(overlay方式一)

     Android Camera数据流分析全程记录(overlay方式) 这里为什么要研究overlay方式呢?android camera需要driver和app层需要有大量数据需要传输,如果使用非o ...

  7. camera相机 its_[Android] Camera ITS/CTS Verifier测试

    ITS:Android Camera Imaging Test Suite / CTS Verifier Android相机成像测试套件,属于CTS测试的一部分 ITS是一个测试框架,用于在camer ...

  8. Android camera预览流程

    前面已经简单介绍了,在Android系统中open camera的流程,但是,它又是怎么预览.怎么配置流,如何最终操作到camera HAL的呢.接下来以android原生相机应用,android9, ...

  9. Android Camera模块(一)

    Android Camera模块(一) 一.Android Camera架构 1.1 整体架构 架构参考Android Camera简单整理(一)-Camera Android架构(基于Q) goog ...

  10. Android Camera 测试环境搭建:编译Android模拟器

    在 Ubuntu 下面我编译 android 12 已经尝试过很多次,都失败了. 都是执行下面这步的时候,编译了几个小时以后报错 make sdk sdk_repo -j12 一开始给虚拟机分配了 8 ...

最新文章

  1. 【深入浅出MyBatis系列八】SQL自动生成插件
  2. 【CyberSecurityLearning 18】ACL及实验演示
  3. Oracle 11g新特性:索引不可见
  4. js如何调用h5的日期控价_微信公众号支付H5调用支付解析
  5. notepad++与ISE/Vivado关联
  6. Bootstrap 滚动监听插件Scrollspy 的选项
  7. Redis的过期键删除策略和内存淘汰机制
  8. 聊聊flink的RestartStrategies
  9. [LeetCode] Number of 1 Bits 位操作
  10. MySQL Left Join,Right Join
  11. 君澜酒店集团与来也股份合作,打造国内“冰雪度假打卡圣地”
  12. 人工智能系列:AI 赋能平台
  13. android p 小米6,小米6还能再战几年!将升级Android P
  14. Linux登录mysql密码正确被拒绝访问
  15. js 将秒数换算成时分秒
  16. 银行核心操作系统as400 rs6000
  17. ios 开发常用第三方框架
  18. python elasticsearch bulk_Elasticsearch之批量操作bulk
  19. Android 面试题之ContentProvider使用+实例
  20. JAVA抽象类实例化对象实现接口的三种调用方法

热门文章

  1. 烧烤(记录一次准备的材料)
  2. 线性空间子空间的交与和
  3. asp.net 项目的一点总结 点卡销售/CRM
  4. U校园视听说读写答题时长分享教程
  5. 通过xml生成java Bean
  6. AT命令介绍和简单使用
  7. 八种常用激光雷达和视觉SLAM算法的评估与比较
  8. Python操作文件
  9. 限制计算机通讯端口mac绑定,h3c交换机ip和mac绑定配置教程
  10. 使用背景和更多内容个性化您的OneNote 2010笔记本