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,告诉客户端可以取视频了,然后再通过图形缓存空间取出视频显示。

相关推荐
2501_9160074713 小时前
iOS开发中抓取HTTPS请求的完整解决方法与步骤详解
android·网络协议·ios·小程序·https·uni-app·iphone
lvronglee15 小时前
【数字图传第四步】Android App查看图传视频
android·音视频
90后的晨仔15 小时前
Android 程序入口与核心组件详解
android
90后的晨仔15 小时前
Kotlin 简介与开发环境搭建
android
BU摆烂会噶16 小时前
【LangGraph】House_Agent 实战(四):预定流程 —— 中断与人工干预
android·人工智能·python·langchain
AI玫瑰助手16 小时前
Python运算符:比较运算符(等于不等等于大于小于)与返回值
android·开发语言·python
new_dev16 小时前
Python实现Android自动化打包工具:加固、签名、多渠道一键完成
android·python·自动化
小孔龙16 小时前
Android `<activity-alias>` 指南:动态图标 · 多入口 · 重命名兼容
android·程序员·掘金·日新计划
QING61817 小时前
Kotlin inline 实战详解 —— 新手须知
android·kotlin·android jetpack
ElevenS_it18817 小时前
MySQL慢查询监控与告警实战:从slow_log采集到分钟级定位慢SQL的完整链路配置
android·sql·mysql