第10讲 cameraserver进程启动之HIDL CameraDevice初始化addDevice流程 - Android Camera Native Framework

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

更多资源:

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

initializeProviderInfoCommon

initializeProviderInfoCommon

initializeProviderInfoCommon主要完成2件事情:

  1. 调用addDevice将CameraDevice保持在mDevices中
  2. 处理Cached Status回调

addDevice完成的4件事情

步骤 描述 ProviderInfo::addDevice
第1步 检查CameraDevice的版本是否正确 1. Camera ID、MajorVersion、IPCTransport的组合必须唯一
2. IPCTransport::HIDL的对应的Device MajorVersion必须为3,IPCTransport::AIDL的对应的Device MajorVersion必须为1
第2步 initializeDeviceInfo 初始化Camera Device Info,由各*IDLProviderInfo去实现
第3步 notifyDeviceStateChange 根据手机设备状态去更新ANDROID_SENSOR_ORIENTATION
第4步 isAPI1Compatible 根据ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT和ANDROID_REQUEST_AVAILABLE_CAPABILITIES去判断是否支持API1
– NIR(Near Infrared Filter,近红外,捕获波长大约在750纳米和1400纳米之间的光线) Camera sensor不支持API1

HidlProviderInfo::initializeDeviceInfo完成3件事情

步骤 描述 ProviderInfo::addDevice
第1步 获取到ICameraDevice的实例 调用ICameraProvider的getCameraDeviceInterface_V3_x获取到ICameraDevice的实例(HidlDeviceInfo3有缓存ICameraDevice实例,不会每次都调用Provider接口)
第2步 getResourceCost 调用ICameraDevice的getResourceCost获取到Resource Cost
第3步 创建HidlDeviceInfo3 处理静态信息,比如获取SystemCameraKind和修复/更新 mCameraCharacteristics

创建HidlDeviceInfo3完成5件事情

步骤 描述 ProviderInfo::addDevice
第1步 获取CameraCharacteristics 调用getCameraCharacteristics对mCameraCharacteristics赋值
第2步 获取DeviceStateOrientationMap 获取ANDROID_INFO_DEVICE_STATE_ORIENTATIONS的值,保存在mDeviceStateOrientationMap
第3步 获取到mSystemCameraKind 调用getSystemCameraKind获取到mSystemCameraKind
– 如果Capability是ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA,则返回SystemCameraKind::HIDDEN_SECURE_CAMERA
– 如果Capability有ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA,则返回SystemCameraKind::SYSTEM_ONLY_CAMERA
– 其他情况返回SystemCameraKind::PUBLIC
第4步 修复/更新 mCameraCharacteristics fixupMonochromeTags、addDynamicDepthTags、deriveHeicTags、addRotateCropTags、addPreCorrectionActiveArraySize、overrideZoomRatioTags、fixupTorchStrengthTags、queryPhysicalCameraIds
第5步 修复/更新 未Public 出去的PhysicalCamera Characteristics overrideZoomRatioTags

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Android Camera Native Framework