第11讲 cameraserver进程启动之HIDL CameraDevice初始化 修正CameraCharacteristics - Android Camera Native Framework

本讲是Android Camera Native Framework专题的第11讲,我们介绍cameraserver进程启动之HIDL CameraDevice初始化修正CameraCharacteristics。

更多资源:

资源 描述
在线课程 极客笔记在线课程
知识星球 星球名称:深入浅出Android Camera 星球ID: 17296815
Wechat 极客笔记圈

修复/更新 mCameraCharacteristics

fixupMonochromeTags

当Camera Device < 3.5 且 包含 MONOCHROME Capability(HAL 3.3新增)的Camera Device

  1. 更新ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT(HAL 3.2就有)为ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO(HAL3.4新增)
  2. 删除Monochrome camera不需要的Static Keys,Request Keys,Result Keys
  3. 更新ANDROID_SENSOR_BLACK_LEVEL_PATTERN,Monochrome Camera的所有的2×2通道必须有相同的值。

addDynamicDepthTags

Dynamic Depth是指包含Depth信息的JPEG,在Camera Framework完成Jpeg和Depth Buffer的Composite,因此相关静态Metadata HAL不会填,这里要补充上,筛选规则是:Jpeg和Depth Size相同(或宽高比近似)的Streams

  • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
  • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS
  • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS

deriveHeicTags

HEIC是Camera Framework调用Encoder的接口压成的,因此相关静态Metadata需要补上

  • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
  • ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS
  • ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS

addRotateCropTags

如果ANDROID_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES没有填,则至少条一个值:ANDROID_SCALER_ROTATE_AND_CROP_NONE

addPreCorrectionActiveArraySize

如果ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE没有填,则获取ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE的值填进去

overrideZoomRatioTags

  • 如果HAL不支持ANDROID_CONTROL_ZOOM_RATIO_RANGE,则通过ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM来构造一个Zoom Ratio Range,更新到ANDROID_CONTROL_ZOOM_RATIO_RANGE。并增加Zoom Ratio相关的Static/Request/Result Keys

fixupTorchStrengthTags

  • 如果没有填ANDROID_FLASH_INFO_STRENGTH_DEFAULT_LEVEL,则填成1
  • 如果没有填ANDROID_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL,则填成1

queryPhysicalCameraIds

如果支持MULTI_CAMERA Capability,则从ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS获取到Physical Camera Ids放到mPhysicalIds

修复/更新 PhysicalCamera Characteristics

如果支持Logical Multicamera

  • getPhysicalCameraCharacteristics
  • overrideZoomRatioTags

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Android Camera Native Framework