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

相关推荐
Patrick在香港2 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
海雅达手持终端PDA4 小时前
工业手持终端的“去手机化”演进:看海雅达如何以“同轴扫摄”终结工程妥协,重塑工业PDA新范式
android·物联网·智能手机·硬件工程·能源·制造·iot
booboosui4 小时前
删掉一个住在本机的 agent:8 处要清,顺序不能反
android
hcgeng5 小时前
Android获取崩溃日志
android
aqi005 小时前
AI编程让鸿蒙开发电子书APP更加快捷
android·华为·harmonyos·鸿蒙·harmony
GY-935 小时前
【Android】Android Studio 中的协程
android
Geek-Chow5 小时前
移动 App 侧载攻击:Android 与 iOS 的信任链、突破口与防护
android
Android小码家6 小时前
framework&framework-minus-apex&android.jar的区别
android·python·jar
技术风向解码者7 小时前
安卓跨端选型:为什么优先看 Kuikly
android