第10讲 cameraserver进程启动之hidl cameradevice初始化adddevice流程 -凯发k8手机登录

本讲是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教程

计算机教程

大数据教程

开发工具教程

网站地图