第8讲 AVAILABLE_CAPABILITIES详解 - Android Camera2 API

本讲是Android Camera专题系列的第8讲,我们介绍Android Camera2 API专题的REQUEST_AVAILABLE_CAPABILITIES详解部分。

视频在线观看:

加入知识星球与更多Camera同学交流

  • 星球名称:深入浅出Android Camera
  • 星球ID: 17296815

Camera Capability Overview

Camera支持的功能,可以通过如下代码获取当前Camera设备支持的功能列表

int [] capabilities = characteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);

截止Android S,包括如下Capability:

  1. BACKWARD_COMPATIBLE
  2. MANUAL_SENSOR
  3. MANUAL_POST_PROCESSING
  4. RAW
  5. PRIVATE_REPROCESSING
  6. READ_SENSOR_SETTINGS
  7. BURST_CAPTURE
  8. YUV_REPROCESSING
  9. DEPTH_OUTPUTAL
  10. CONSTRAINED_HIGH_SPEED_VIDEO
  11. MOTION_TRACKING
  12. LOGICAL_MULTI_CAMERA
  13. MONOCHROME
  14. SECURE_IMAGE_DATA
  15. SYSTEM_CAMERA
  16. OFFLINE_PROCESSING
  17. ULTRA_HIGH_RESOLUTION_SENSOR
  18. REMOSAIC_REPROCESSING

BACKWARD_COMPATIBLE

Camera HAL1具备的能力,几乎所有设备都支持这种能力(拥有DEPTH_OUTPUT的设备可以是例外)

Depth output camera可以不支持该Capability

具备旧有API:android.hardware.Camera 的所有能力

MANUAL_SENSOR

Sensor图像获取阶段的相关模块,要求支持手动控制

MANUAL_SENSOR

什么是黑电平

MANUAL_POST_PROCESSING

Sensor图像后处理(ISP)阶段的相关模块,要求支持手动控制

MANUAL_POST_PROCESSING

READ_SENSOR_SETTINGS

表示当前设备支持在CaptureResult中能精确地回报Camera Sensor实际生效的参数

拥有 MANUAL_SENSOR Capability的Camera,必须包含 READ_SENSOR_SETTINGS

READ_SENSOR_SETTINGS

RAW

PRIVATE_REPROCESSING

  • 该Feature主要用于应用层的ZSL(Zero Shutter Lag)功能

  • 支持ImageFormat.PRIVATE

YUV_REPROCESSING

  • 跟PRIVATE_REPROCESSING类似,表示当前设备支持YUV_420_888的再处理

BURST_CAPTURE

  • 这种Capability对高分辨率拍照有如下要求

  • <=8MP, >=20fps, 且支持YUV Output

  • <=24MP, >=10fps

  • 适用场景:连拍

DEPTH_OUTPUT

  • 表示当前设备支持输出深度图像

  • 必须支持ImageFormat.DEPTH16,且支持同宽高比的Jpeg图像输出

  • 如果支持ImageFormat.DEPTH_JPEG(JPEG压缩主图像和XMP格式嵌入深度图)

  • DEPTH_IS_EXCLUSIVE必须为False,表示主图像和深度图可以同时输出

  • 如果不支持ImageFormat.DEPTH_JPEG

  • DEPTH_IS_EXCLUSIVE必须为True,表示主图像和深度图可以不能同时输出

  • 深度图像解释:https://deepinout.com/camera-terms/what-is-depth-image.html

CONSTRAINED_HIGH_SPEED_VIDEO

  • 表面当前设备支持高帧率录像( frame rate >=120fps )

  • 这种模式下AE、AWB强制设置为ON,AF强制设置为CONTINUOUS_VIDEO

  • POST-PROCESSING的模块强制设置为FAST模式

  • Session最多支持配置2个Surface(Preview + Recording)

MOTION_TRACKING

  • 表示该设备支持跟踪运动物体

  • 为了减少运动模糊,在这种Capability下AE会将曝光时间限制在<=20ms

LOGICAL_MULTI_CAMERA

  • 表示这颗Camera对应多颗物理Camera

  • Hardware Level至少是LIMITED

LOGICAL_MULTI_CAMERA

MONOCHROME

  • 表示该Camera设备是一个单色Camera设备

  • 当输入YUV_420_888时,U和V的值均为128

  • 单色摄像头可以用作Logical MultiCamera设备的某个Physical Camera,以获取更出色的低光噪音特性。

SECURE_IMAGE_DATA

  • 表示该Camera设备可以产生只能TEE能访问的图像数据

  • Android 用户空间和Kernel都无法访问这块图像数据

  • 可用于人脸解锁等场景

SYSTEM_CAMERA

  • 表示这颗Camera设备只能被System App使用,对其他App不可见

  • 只有安装在系统分区上且具有与系统相同的证书或使用该证书进行签名的应用才能获得此权限

  • App需要申请 android.permission.SYSTEM_CAMERA 和android.permission.CAMERA权限

  • 如果设备制造商希望实现需要访问相机的功能,但这些功能仅限于特权应用或系统应用,该功能会非常有用

OFFLINE_PROCESSING

  • 表示该Camera设备支持离线处理功能

  • 在离线模式处理的过程中,App可以打开相机重新创建Session与Offline Session并发工作

  • 适用场景:快拍

ULTRA_HIGH_RESOLUTION_SENSOR

  • 表示该设备支持输出Sensor最大size的图像

  • Sensor工作在SENSOR_PIXEL_MODE_DEFAULT模式

    • 输出Binning Size的图像
  • Sensor工作在SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION模式

    • 输出Full Size的图像

REMOSAIC_REPROCESSING

REMOSAIC_REPROCESSING

Hardware Level与Capability的关系

所有Camera设备必须包含BACKWARD_COMPATIBLE或DEPTH_OUTPUT能力

Hardware Level与Capability的关系

判断某个Camera Feature是否支持

Feature 如何判断是否支持
FD 读取CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,是否包含SIMPLE或FULL模式
OIS 读取android.lens.info.availableOpticalStabilization,是否包含ON
EIS 读取android.control.availableVideoStabilizationModes,是否包含ON
AF 读取android.control.afAvailableModes,是否包含AUTO / MACRO / CONTINUOUS_VIDEO / CONTINUOUS_PICTURE / EDOF
赞(5)
未经允许不得转载:极客笔记 » 第8讲 AVAILABLE_CAPABILITIES详解

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Android Camera2参考
Android Camera2参考概述
Android Camera2参数参考
Android Camera2参数参考概述
Android Camera2指南
Android Camera2指南概述
Android Camera HAL开发
Android Camera HAL开发概述
Android Camera2 API
第2讲 Android Camera 架构介绍第3讲 Camera2 API 概述第4讲 Open和Close Camera流程第5讲 GeekCamera2介绍第6讲 Open和Close Camera代码实现第7讲 Hardware Level详解第8讲 AVAILABLE_CAPABILITIES详解第9讲 StreamConfigurationMap详解一第10讲 StreamConfigurationMap详解二第11讲 StreamConfigurationMap实战一第12讲 StreamConfigurationMap实战二第13讲 为什么需要OutputConfiguration第14讲 OutputConfiguration API详解第15讲 Surface Sharing实战第16讲 Deferred Surface实战第17讲 Reprocessable Capture Session详解一第18讲 Reprocessable Capture Session详解二第19讲 App如何实现ZSL功能第20讲 SessionConfiguration详解第21讲 createCaptureSession详解第22讲 SessionParameter实战第23讲 CaptureRequest详解第24讲 如何操作VendorTag第25讲 获取Physical Camera数据流第26讲 CameraCaptureSession详解第27讲 CameraCaptureSession.CaptureCallback详解第28讲 GeekCamera2连拍实战第29讲 SlowMotion实战第30讲 CaptureResult详解第31讲 AE自动曝光 Part 1第32讲 AE自动曝光 Part 2第33讲 AE自动曝光实战第34讲 AE手动曝光第35讲 AE手动曝光实战第36讲 Flash闪光灯控制第37讲 拍照打闪实战第38讲 通过CropRegion控制Zoom缩放第39讲 通过ZoomRatio控制Zoom缩放第40讲 Digital Zoom缩放实战第41讲 Touch AE实战第42讲 AF自动对焦第43讲 AF自动对焦 第二部分第44讲 AF自动对焦实战第45讲 手动对焦实战第46讲 AWB自动白平衡第47讲 AWB自动白平衡实战第48讲 FD人脸检测第49讲 Android13 Camera2 New APIs介绍