接上篇文章,学习就到了camera启流阶段,先来看open函数
文章开始先附大神链接,我是基于他的思路去学习的,然后补充我自己的想法
高通Camera驱动(2)-- open&initialize_externalcameraproviderimpl-CSDN博客
一、Android 框架结构及camrea框架补充
下面是我总结的一些知识点,字迹潦草,大家凑合看吧
二、学习了基本框架后,接下来学习一些open阶段设计到的一些进程
CameraProvider进程启动,注册
Cameraserver 进程启动,实例化 CameraService,并注册到ServiceManager
初始化CameraService,通过CameraProviderManager来获取已注册的Provide,并实例化、初始化CameraProvider
CameraProvider初始化过程中,从动态库中加载了HAL层的关键结构,并将其封装到CameraModule中
将获取到的CameraProvider保存在ProiderInfo中,以便后续的使用
hal层为了实现统一定义的结构体camera_module_t包含了hw_module_t,主要用于表示camera模块
camera_device_t 包含hw_device_t,定义了camera3_device_ops操作方法结构体,去操作camera
CameraProvider被初始化会调用get_number_of_camera接口获取底层支持的camera数量
接下来是cameraservice的启动流程与注册
cameraService初始化完成会有CameraProviderManager类型的成员函数,用于service与cameraProvior通信,与cameraService一同初始化,初始化时会简介调用cameraModule中的get_number_of_camera函数,这时候就可以掉到hal层了
三、具体的代码流程可以借鉴我开头写的博主的文章,非常详细,下面是我对一些函数功能的补充
open之后会初始化,也是参考开头博主的文章