Android Camera Framework目录结构

概述

Android系统利用分层思想,将各层的接口定义与实现分离开来,以接口作为各层的脉络连接整体框架。

其中,谷歌根据职能的不同将Camera框架一共划分成了五层,分别是App、Service、Provider、Driver以及Hardware。

Camera App

应用层处于整个框架的顶端,承担着于用户直接进行交互的责任,承接来自用户直接或者间接的比如预览/拍照/录像等一系列具体需求,一旦接收到用户相关UI操作,便会通过Camera Api v2标准接口将需求发送至Camera Framework部分,并且等待Camera Framework回传处理结果。

Camera Framework

Framework由两部分组成。

  • 第一部分是Framework Java层,核心目录在framework/base/core目录下,主要提供给Camera App提供接口使用,运行在App进程中。
frameworks\base\core\java\android\hardware\camera2\OWNERS
  • 第二部分是Framework native层,核心目录在framework/av目录下,主要是和Java层通讯使用,有独立的进程,进程名:“cameraserver”,由init进程拉起,开机启动。
主要涉及两个代码目录,可参考下面bp文件,进行具体学习。
frameworks\av\camera\Android.bp
frameworks\av\services\camera\libcameraservice\Android.bp

“cameraserver”进程主要由多个so组成,其中最主要的两个so,位于手机操作系统的/system/lib64目录下。

上面两个bp分别构建出来so文件为:libcamera_client.so  libcameraservice.so

Camera Provider

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

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相关的一些基础知识点,几乎不涉及技术相关。后面会android S版本的源码进行详细的camera framework框架分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值