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

相关推荐
明君6895 分钟前
一套专注 Android 逆向分析的 Skills
android·android逆向·agents·skills
stone203532 分钟前
造一个"录制回放 + LLM 自主操作手机"的 Android 自动化测试平台(一)整体架构与录制引擎
android
事圆则缓37 分钟前
Android 声明式 API 的翻译过程
android
mmsx44 分钟前
MapLibre 实战 13|让比例尺显示 100m 而不是 347.2m:屏幕距离换算与两个易错点
android·前端·app
邪修king1 小时前
Re:Linux 系统篇(三十一):库的制作与原理Chapter2:静态链接与程序加载 —— 从磁盘 ELF 到运行中进程的完整旅程
android·linux·运维·开发语言
邪修king3 小时前
Re:Linux 系统篇(二十九):动静态库Chapter2:动态库深度辨析 —— 核心本质、制作流程、双阶段查找模型与排错指南
android·java·linux·开发语言
Mr YiRan10 小时前
网络请求API监控与网络切换埋点
android·网络
美狐美颜sdk13 小时前
直播APP开发技术栈详解:视频美颜SDK、人脸识别与实时渲染
android·人工智能·音视频·美颜sdk·直播美颜sdk
奈斯先生Vector19 小时前
当模型版本不断变化,RelayRouter 能否帮助 AI 应用摆脱深度绑定
android·java·人工智能·开源·aigc