推广

深入理解Android相机体系结构之二 相机架构概览

iseeyu2年前 (2024-02-22)推广118

程序员Android转于网络

Camera App

应用层处于整个框架的顶端,承担着于用户直接进行交互的责任,承接来自用户直接或者间接的比如预览/拍照/录像等一系列具体需求,一旦接收到用户相关UI操作,便会通过Camera Api v2标准接口将需求发送至Camera Framework部分,并且等待Camera Framework回传处理结果,其中包括了图像数据以及整体相机系统状态参数,之后将结果以一定方式反馈给用户,达到记录显示种种美好瞬间的目的。

Camera Framework

该层主要位于Camera App与Camera Service之间,以jar包的形式运行在App进程中,它封装了Camera Api v2接口的实现细节,暴露接口给App进行调用,进而接收来自App的请求,同时维护着请求在内部流转的业务逻辑,最终通过调用Camera AIDL跨进程接口将请求发送至Camera Service中进行处理,紧接着,等待Camera Service结果的回传,进而将最终结果发送至App。

Camera Service

该层位于Camera Framework与Camera Provider之间,作为一个独立进程存在于Android系统中,在系统启动初期会运行起来,它封装了Camera AIDL跨进程接口,提供给Framework进行调用,进而接收来自Framework的图像请求,同时内部维护着关于请求在该层的处理逻辑,最终通过调用Camera HIDL跨进程接口将请求再次下发到Camera Provider中,并且等待结果的回传,进而将结果上传至Framework中。

Camera Provider

该层位于Camera Service与Camera Driver之间,作为一个独立的进程存在于Android系统中,同时在系统启动初期被运行,提供Camera HIDL跨进程接口供Camera Service进行调用,封装了该接口的实现细节,接收来自Service的图像请求,并且内部加载了Camera HAL Module,该Module由OEM/ODM实现,遵循谷歌制定的标准Camera HAL3接口,进而通过该接口控制Camera HAL部分,最后等待Camera HAL的结果回传,紧接着Provider通过Camera HIDL接口将结果发送至Camera Service。

CamX-CHI(Camera HAL)

该部分是高通对谷歌Camera HAL3接口的实现,以so库的形式被加载至Camera Provider中,之前采用的是QCamera & MM-Camera架构,但是为了更好灵活性和可扩展性,而今高通又提出了CamX-CHI架构,该架构提供HAL3接口给Provider进行调用,接收来自Provider的请求,而内部对HAL3接口进行了实现,并且通过V4L2标准框架控制着相机驱动层,将请求下发至驱动部分,并且等待结果回传,进而上报给Camera Provider。

CamX-CHI架构由CamX和CHI两个部分组成,CamX负责一些基础服务代码的实现,不经常改动,CHI负责实现一些可扩展性和定制化的需求,方便OEM/ODM添加自己的扩展功能。CamX主要包括实现HAL3入口的hal模块,实现与V4L2驱动交互的csl模块,实现硬件node的hwl和实现软件node的swl。CHI通过抽象出Usecase、Feature、Session、Pipeline、Node的概念,使厂商可以通过实现Node接口来接入自己的算法,并通过XML文件灵活配置Usecase、Pipeline、Node的结构关系。

Camera Driver

Linux为视频采集设备制定了标准的V4L2接口,并在内核中实现了其基础框架V4L2 Core。用户空间进程可以通过V4L2接口调用相关设备功能,而不用考虑其实现细节。V4L2提出了总设备和子设备的概念,并通过media controller机制向用户空间暴露自己的硬件拓扑结构。视频采集设备驱动厂商按照V4L2 Core的要求开发自己的驱动程序,只需要实现相应的结构体和函数接口并调用注册函数注册自己就行。

在高通平台上,高通对相机驱动部分进行了实现,利用了V4L2框架的可扩展特性,设计出了一套独特的KMD框架。在该框架内部主要包含了三个部分,CRM、Camera Sync以及一系列子设备,首先,作为框架顶层管理者,CRM创建了一个V4L2主设备用来管理所有的子设备,并且暴露设备节点video0给用户空间,同时内部维护着整个底层驱动业务逻辑。其次,Camera Sync创建了一个V4L2主设备,同时暴露了设备节点video1给用户空间,主要用于向用户空间反馈图像数据处理状态。最后,子设备模块被抽象成v4l2_subdev设备,同样也暴露设备节点v4l2-subdev给用户空间进行更精细化的控制。另外,在整个框架初始化的过程中,通过media controller机制,保持了在用户空间进行枚举底层硬件设备的能力。

Camera Hardware

相机硬件处在整个相机体系的最底层,是相机系统的物理实现部分,该部分包括镜头、感光器、ISP三个最重要的模块,还有对焦马达、闪光灯、滤光片、光圈等辅助模块。镜头的作用是汇聚光线,利用光的折射性把射入的光线汇聚到感光器上。感光器的作用是负责光电转换,通过内部感光元件将接收到的光信号转换为电子信号进而通过数电转换模块转为数字信号,并最后传给ISP。ISP负责对数字图像进行一些算法处理,如白平衡、降噪、去马赛克等。

通过上面的介绍,我们可以发现,谷歌通过以上五级分层,形成了整个相机框架体系,其中层与层之间通过行业协会、开源社区或者谷歌制订的标准接口进行连接,上层通过调用标准接口下发请求到下层,下层负责对标准接口进行实现,最终将请求再次封装并调用下一层级的对外接口下发到下层。所以总得来说,谷歌使用标准接口作为骨架搭建整体框架,而其具体实现交由各层自己负责,从整体上来看,职责划分明确,界限分明,这样的设计,一来利用标准接口,保持了整个框架业务正常流转,二来极大地降低了各层耦合度,保持了各层的相互独立,最终让整个框架处于一个稳定同时高效的运行状态。

原文链接:https://blog.csdn.net/u012596975/article/details/107136568

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56421.html

相关文章

疫情时期广告投放建议!

疫情时期广告投放建议!

在这个特殊的春节假期期间,百度系产品DAU也有着非常可观的增量,百度APP增长20%,好看视频增长25%,全民小视频增加18%。各个时段用户在百度全平台找信息、刷资讯、看视频,驱动百度流量增长,流量增长下客户可要把握好这个流量机会哦! 这段时间,流量持续增长涨势较好,同时各流量位资源...

补淘宝单平台是真的吗( 淘宝补单平台选择技巧)

补淘宝单平台是真的吗( 淘宝补单平台选择技巧)

  淘宝补单平台都有哪些?该如何选择安全靠谱的   淘宝卖家在开店或者报名活动的时候,基本都知道要进行淘宝补单,但是怎么补单,如何选择一个靠谱的补单平台,好多商家就会有很多疑惑,作为一个淘宝卖家,补单能一直存在,也是最简单,最粗暴的一种提升销量的方法,不但能提升销量,还能对宝贝的排名有提升效果...

教你绵阳网页设计要打破的设计原则。

教你绵阳网页设计要打破的设计原则。

    您会铭记很多设计方案标准,尤其是在开展时。高級室内设计师强烈推荐的大量內容,设计概论因素或沿路学习培训的课程内容。 可是或许您事实上应当摆脱在其中一些标准?     伴随着时间的流逝,设计方案发展趋势和定义将产生前所未有的巨大改变。 尤其是,技术性发...

SEO搜索引擎和抓取索引背后的原则。

SEO搜索引擎和抓取索引背后的原则。

随着时代的发展,越来越多的事物都展示到了线上,那么线上的排名就至关重要了,排名次越靠前,就意味着看到的人越多。Seo就是实现这种效果的一种技术,当然想要做好网站排名主要有四个步骤:抓取、过滤、收录和输出结果。只有这四方面全都做好,你的网站排名才会越靠前,被大众的看的的几率才会大大提高。今天SEO的小...

EDM营销:邮件营销技巧有哪些

EDM营销:邮件营销技巧有哪些

我想说,没有什么比一大早看到企业自动批量毫无特色的邮件更糟糕的事了,这种感受甚至可能让您直接把该企业拉入黑名单。但尴尬的是,手动发送每封邮件虽然非常个性化定制化,但对于企业来说既耗时又效率低下,实在不是最佳方案。别担心,今天小微汇总了23个邮件营销模板,妥妥的EDM营销,赶...

教你全网营销的方式是什么?怎么做全网整合营销。

教你全网营销的方式是什么?怎么做全网整合营销。

全网营销的方式有哪些?全网?下面就由云裂变来为大家诉说以上问题。 中国大部分中小企业对互联网是非常陌生的,也缺乏相关专业人才,但是很渴望通过互联网开设一个新的营销渠道。中小企业做网络营销时非常的急功近利,所以被形形色色的骗子和伪专家抓住了机会。那么全网营销也是网络营销当中其中一种营销方式...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片