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

相关推荐
工程师老罗3 小时前
如何在Android工程中配置NDK版本
android
Libraeking6 小时前
破壁行动:在旧项目中丝滑嵌入 Compose(混合开发实战)
android·经验分享·android jetpack
市场部需要一个软件开发岗位7 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
JMchen1239 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
crmscs9 小时前
剪映永久解锁版/电脑版永久会员VIP/安卓SVIP手机永久版下载
android·智能手机·电脑
localbob9 小时前
杀戮尖塔 v6 MOD整合版(Slay the Spire)安卓+PC端免安装中文版分享 卡牌肉鸽神作!杀戮尖塔中文版,电脑和手机都能玩!杀戮尖塔.exe 杀戮尖塔.apk
android·杀戮尖塔apk·杀戮尖塔exe·游戏分享
机建狂魔9 小时前
手机秒变电影机:Blackmagic Camera + LUT滤镜包的专业级视频解决方案
android·拍照·摄影·lut滤镜·拍摄·摄像·录像
hudawei9969 小时前
flutter和Android动画的对比
android·flutter·动画
lxysbly11 小时前
md模拟器安卓版带金手指2026
android
儿歌八万首12 小时前
硬核春节:用 Compose 打造“赛博鞭炮”
android·kotlin·compose·春节