第8讲 Android Camera2 API AVAILABLE_CAPABILITIES详解

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

视频在线观看:

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图像获取阶段的相关模块,要求支持手动控制

第8讲 Android Camera2 API AVAILABLE_CAPABILITIES详解

什么是黑电平

MANUAL_POST_PROCESSING

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

第8讲 Android Camera2 API AVAILABLE_CAPABILITIES详解

READ_SENSOR_SETTINGS

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

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

第8讲 Android Camera2 API AVAILABLE_CAPABILITIES详解

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

第8讲 Android Camera2 API AVAILABLE_CAPABILITIES详解

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

第8讲 Android Camera2 API AVAILABLE_CAPABILITIES详解

  • 表示该设备支持Remosaic的再处理

  • 该Capability需要ULTRA_HIGH_RESOLUTION_SENSOR同时支持才行

  • App完成SW Remosaic算法,将结果送给HAL再处理

  • Remosaic介绍

    • https://deepinout.com/camera-terms/camera-remosaic-intro.html
    • https://deepinout.com/camera-terms/camera-4-cell-remosaic-intro.html

Hardware Level与Capability的关系

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

第8讲 Android Camera2 API AVAILABLE_CAPABILITIES详解

判断某个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
上一篇:.net平台RabbitMQ封装及使用


下一篇:RK Android7.1 Camera2 预览、内置客户SDK预览