camera开发,我对预览请求的理解

手机启动后,cameraService启动后,会调用独立进程camera_hal,通过get_hw_module加载hal库,然后cameraService服务注册到binder驱动中,启动线程池,等待客户端连接。这里硬件抽象层必须是独立进程,不能在cameraService进程,这是谷歌要求的,防止供应商代码内部有内存泄露或者致命错误,导致整个系统垮掉,而且也是出于方便硬件供应商代码升级的。

此时客户端app发起open请求,客户端app通过servicemanager获取到BpBinder客户端,然后通过transact发起binder请求。binder驱动收到后,转发给cameraservice,然后从线程池中挑一个空闲的线程池进行处理。此时,cameraservice会创建一个cameradevice对象,绑定具体的摄像头,然后把这个cameradevice对象的代理对象返回给客户端app,再有客户端app创建cameraCaptureSession对象。

然后开始通过客户端app,通过cameradevice代理对象发起cameraCaptureRequest预览请求,此时上层会把surface所对应的图形缓存空间传到hal层,后续产生的视频,就存放在此。然后摄像头创建视频。创建一个视频帧后,这个视频会通过数据链路传递,但是传递前,需要binder链路通知到cameraservice,再binder链路到客户端app,告诉客户端可以取视频了,然后再通过图形缓存空间取出视频显示。

相关推荐
通玄1 小时前
Jetpack Compose 入门系列(十):Paging 3 分页加载
android
hunterandroid1 小时前
DataStore 工程化实践:迁移、并发更新与异常恢复
android·前端
程序员-珍4 小时前
报错下载android sdk失败
android·java
齊家治國平天下5 小时前
AAOS 电源管理深度解析:休眠/唤醒/功耗优化
android·车载系统·aaos·aosp·电源管理·休眠唤醒·carpowermanager
Xzaveir5 小时前
企业号码展示不可观测怎么办:状态机、拨测事件与异常回放
android·人工智能
2501_916007475 小时前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
黄林晴6 小时前
Nearby Connections 重大变更:不再自动开启 Wi-Fi / 蓝牙,适配指南
android
恋猫de小郭6 小时前
Flutter 全新真 3D 实现,用 flutter_scene 能开发一个「我的世界」
android·前端·flutter
止语Lab7 小时前
从 PHP 到 Go:真正迁移的是复杂度的归属
android·golang·php
HLC++19 小时前
Linux的进程间通信
android·linux·服务器