文章目录

  • 一、android的camera框架

借鉴RK的相关文档,对andriod的一些camera的东西进行整体学习,内容无法确定是否完全正确。

一、android的camera框架

android 相机预览添加边框 安卓相机框架_App

在rk的相关文档中,这里有对应的说明文档,大致分为4层,与android的框架对应,分别为驱动、HAL、framwork、APP四个层次,每个层有不同的作用。以及最底层的硬件自然不用说必须得有才可以。

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

**驱动层:**主要是配置摄像头的通讯接口,MIPI接口、USB接口、CSI接口以及DVP接口,上电时序,对应的GPIO控制,以及对应的驱动移植。内核中也配置了V4l2的框架,方便我们在调试的时候可以通过这中框架来进行一些底层配置判断,具体的V4l2框架还是很大的,需要自己去学习。

**HAL层:**又可以叫做硬件抽象层,包括一些so库和一些3A算法库,主体功能为获取驱动数据流。从 ISP 驱动获取3A统计,调用3A库实现 3A调整,为上层提供一些接口,一些显示角度问题也可以在此进行修改,比如拍摄照片的时候,照片呈现为逆时针90旋转。

**framwork层:**连接上层的APK和HAL的纽带,以jar包的形式运行在App进程中,它封装了Camera Api 接口的实现细节,暴露接口给App进行调用,进而接收来自App的请求,同时维护着请求在内部流转的业务逻辑,最终通过调用Camera AIDL跨进程接口将请求发送至Camera Service中进行处理,紧接着,等待Camera Service结果的回传,进而将最终结果发送至App。

**APP层:**就是相机APP的应用层,不同的APP依次往下调用对应的接口实现拍照,原理为通过Camera Api标准接口将需求发送至Camera Framework部分,并且等待Camera Framework回传处理结果

之前并为接触高通的camera,但是因为工作原因后面应该都会是高通的,但是整体框架都差不多