第23讲 Android Camera2 API CaptureRequest详解

本讲是Android Camera专题系列的第23讲,我们介绍Android Camera2 API专题的CaptureRequest详解,包括如下内容:

  • CaptureRequest介绍
  • CaptureRequest.Builder介绍
  • CaptureRequest Template type介绍
  • 创建CaptureRequest.Builder
  • 如何设置Physical Camera的CaptureRequest

视频在线观看:

CaptureRequest介绍

CaptureRequest介绍

CaptureRequest可以理解为告诉Camera底层如何处理某一帧数据,包括两部分内容

  • Settings
    • 硬件相关的参数:sensor, lens, flash等
    • ISP Processing Pipeline相关参数

    • 3A相关参数

  • Output Surfaces

    • CaptureRequest中带的Surfaces必须在创建Session时使用的Surface List的子集

通过CaptureRequest.Builder来创建CaptureRequest

通过不同的方式送给Camera底层

  • capture
  • captureBurst

  • setRepeatingRequest

  • setRepeatingBurst

CaptureRequest类型(通过Capturerequest#isReprocess()可以判断)

  • Regular:CameraDevice#createCaptureRequest
  • Reprocess:CameraDevice#createReprocessCaptureRequest

CaptureRequest.Builder介绍

Builder模式:用于设置CaptureRequest参数和创建CaptureRequest对象

APIDescription
set(Key key, T value)设置指定Key对应的Value值
setPhysicalCameraKey(Key key, T value, String physicalCameraId)设置指定Physical Camera中Key对应的Value值
addTarget(Surface outputTarget)增加一路输出流
setTag(Object tag)给CaptureRequest设置一个TAG,用于标识该CaptureRequest,底层在onCaptureCompleted回调时,可以通过Capturerequest#getTag()获取到
build()创建CaptureRequest对象
get(Key key)获取指定Key对应的Value
getPhysicalCameraKey(Key key, String physicalCameraId)获取指定Physical Camera中Key对应的Value值
removeTarget(Surface outputTarget)删除一路输出流

CaptureRequest Template type介绍

CaptureRequest Template type介绍

创建CaptureRequest.Builder

APIDescription
createCaptureRequest(int templateType)根据Template Type创建CaptureRequest.Builder,注意:这里返回的是带一包默认值的,不同的CameraDevice,这包默认值会不一样,因此不能混用。
createCaptureRequest(int templateType, Set physicalCameraIdSet)根据Template Type和Physical CameraID Set创建CaptureRequest.Builder,通过Builder#setPhysicalCameraKey可以设置指定Physical Camera的参数。 Physical Camera的参数只适用于有Physical Camera OutputConfiguration的情况(OutputConfiguration#setPhysicalCameraId)。 physicalCameraIdSet来自CameraCharacteristics#getPhysicalCameraIds()
createReprocessCaptureRequest (TotalCaptureResult inputResult)根据TotalCaptureResult创建用于Reprocess的CaptureRequest.Builder

如何设置Physical Camera的CaptureRequest

如何设置Physical Camera的CaptureRequest

  1. 判断能否单独控制Logical MultiCamera中的Physical Camera
    (CameraCharacteristics#getPhysicalCameraIds

  2. 或者可以设置的Physical Camera Keys
    (Cameracharacteristics#getAvailablePhysicalCameraRequestKeys

  3. 创建Physical Camera OutputConfiguration
    (OutputConfiguration#setPhysicalCameraId

  4. 创建CaptureRequest.Builder

  5. setPhysicalCameraKey

  6. addTarget

  7. 获取Physical TotalCaptureResult
    (TotalCaptureResult#getPhysicalCameraTotalResults )

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deepinout_camera

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值