【Camera Framework笔记】二、Camera Native Framework架构①

一、总体架构:

service -> opencamera -> client(api1/api2) -> device3(hal3)

| |

(不opencamera) |

| |

providermanager |

| |

hal hal

app通过service创建一个client并且维护,后续所有操作均由app与client直接交互

二、 service和client架构

  1. cameraservice 与 cameraprovidermanager 的关系

cameraservice对上实现Bncameraservice接口,对外提供服务

对下与cameraprovidermanager交互,通过cameraprovidermanager调用到底层hal的实现

从上到下的流程:

上层调用到 cameraservice后,cameraservice 调用cameraprovidermanager, cameraprovidermanager 通过 providerinfo对象 调用到 providerinfo类,providerinfo 中通过遍历 device调用到 deviceinfo -> deviceinfo3 -> aidlDeviceinfo3/hidlDeviceinfo3 类中

  1. cameraservice 实现了 Bncameraservice 接口,上层调用到 cameraservice 后,cameraservice通过 mcameraprovidermanager调用到 cameraprovidermanager

  2. cameraprovidermanager内部再次分为两个类: providerinfo 与 deviceinfo

  3. providerinfo是为了区分 aidl 与 hidl,抽象作为基类,差异化的地方由子类aidl/hidl去实现

  4. deviceinfo 中继续对aidl 与 hidl进行区分,抽象出deviceinfo3,差异化的地方由子类aidlDeviceinfo3/hidlDeviceinfo3去实现

回调:

deviceinfo 可以通过 mParentProvider 调用到 providerinfo ,providerinfo 通过 mManager 调用到 cameraprovidermanager,cameraprovidermanager 通过 mStatusListener 调用到 cameraservice

  1. clientManager

clientManager 用于管理处理active状态的所有camera client对象

clientDescriptor 本质是一个map,key:string8 cameraid,value:cameraservice::basicClient(当前处于active的client 实例),用于描述一个 camera client对象的信息

cameraservice 通过 mactiveClientManager 调用到 clientManager,clientManager 通过mclients调用到clientDescriptor中具体的basicClient,

basicClient又可以调用到 cameraservice。

clientManager中存在一个listener会调用到 cameraservice的 clientEventListener,作用为监听每个client的add或remove操作

  1. camera client

所有的client都继承自 basicClient

API2:

bninterface<IcameraDeviceUser>

|

BncameraDeviceUser

|

cameraservice::basicClient <- cameraDeviceClientBase

|

camera2ClientBase<cameraDeviceClientBase>(封装对camera device的操作)

|

cameraDeviceClient(具体实现)

相关推荐
千里马学框架4 分钟前
聊一聊豆包AI手机助手高度敏感权限CAPTURE_SECURE_VIDEO_OUTPUT
android·ai·智能手机·安卓framework开发·车载开发·豆包手机助手
正经教主26 分钟前
【Trae+AI】和Trae学习搭建App_1.2:第2章·App开发环境配置
android·学习·android studio
pandarking34 分钟前
[CTF]攻防世界:love_math
android·web安全·网络安全
非凡ghost38 分钟前
Brightness.Manager.OK(显示器亮度调节软件)
android·智能手机·计算机外设·软件需求
_李小白1 小时前
【Android FrameWork】延伸阅读:MediaRecorder状态机
android
陌sr,1 小时前
关于TMK的生成及安全注入方式
android·运维·服务器·安全·pos机·edc·刷卡
键来大师1 小时前
Android16 RK3576 系统清理缓存
android·缓存·framework·rk3588·android15
私人珍藏库1 小时前
[吾爱大神原创工具] PPT演讲倒计时工具 高级专业版 v2.0
android·app·工具·ppt·辅助
2501_916007471 小时前
没有 Mac,如何在 Windows 上架 iOS 应用?一套可落地的工程方案
android·macos·ios·小程序·uni-app·iphone·webview
正经教主2 小时前
【Trae+AI】和Trae学习搭建App_2.2.2:第4章·安卓APP调用Express后端实:2:网络请求工具封装(OkHttp3)
android·学习·app·express