Android Camera MtkCam3架构流程分析

1.HAL

MTK Camera Hal,目前最新Android Camera Api2下用的都是HAL3的内存,HAL3主要代码

在mtkcam3中,有些工具类复用了mtkcam中。

vendor/mediatek/proprietary/hardware/mtkcam/

vendor/mediatek/proprietary/hardware/mtkcam3/

2.Camera HAL3 init

在这里插入图片描述

上层framework通过ServiceManger得到CameraService服务,进而得到CameraProvider服务,

而CameraProvider与Camera HAL绑定,这样framwork就能与Camera HAL层联系了。

getCameraDeviceManager是一个单例模式,Singleton.initialin(),对单例的实例进行了初始化。

initialine函数,获取android,mtk,vivo定义的tag,加载设备库,物理设备和虚拟设备的创建和

添加,初始化结束。

3.OpenCamera

在这里插入图片描述

清理和设置死亡回调,第一次Camera open是关闭闪光灯,检查deviceName或者设备模块是否

有效,检查Camera device是否已经打开,检查是否安全模式下,安全模式下普通相机不能打开。

onOpenLocked创建AppstrramManager,PipelineModel,IpipelineModelManger,调用powerOn

函数,对每个Sensor进行PowerOn操作,调用ioctl函数进入kernel。

4.ConfigureStream

在这里插入图片描述

configurestream调用,onconfistreamLock函数获取AppstreamManger,PipelineModel对象

进行config操作。

AppstreamManger进行config操作,设置操作模式,去除无用数据流,重设数据流,获取数据流。

PipelineModel进行config操作,获取HAL层物理设备列表ID,后面是对应相机模式选择,来创建

实例,SMVRBatch(慢动作),4Cell(4和1),Streaming(预览),VSdof(景深),Zoom(聚焦),Mulficom(多摄),HDR(高动态),MFNR(多帧降噪)。

生成PipelineContext,配置数据流,配置HWNode(P1Node,P2Node,FDNode,

JpegNode),配置Pipeline,设置回调。

5. Request

在这里插入图片描述

Request流程第一步,获取pPipoeModel,pAppStreamManager,pDeviceSessionPolicy对象。

pPipoeModel,pAppStreamManager进行submitRequest操作。

pAppStreamManager的submitRequest操作:遍历所有请求,注册Freme,注册数据缓冲流。

pPipoeModel的submitRequest操作:遍历请求,单独处理。
 

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式_笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值