1.ISP7介绍
MTK hal3 ISP7版本引入了新的TinyMW架构,目前此架构支持的Android S + HAL3 + ISP7,此架构涉及的目的是为了解决不同产品线相机软件部分的代码共用,让相机软件的开发与维护更加容易,TinyMW之后kerenl space会统一采用 Linux V4L2 标准接口实现。如下是TinyMW的整体架构图,TinyMW 带来的变化主要是在MTK HAL 部分,改动的部分包括与 Google AOSP 的适配层、MTK Camera HAL Interface 的引入、Custom Zone 的引入、Pipeline Model 层的改动以及 V4L2 版本kernel space 的适配。
下面介绍下MTK HAL3 ISP7和 ISP6s的架构差异
2. ISP7架构
ISP7 TinyMW 主要的变化是引入 Custom Zone , 在Camera Device Session 层分为 Data Collection Zone 和 Post Processing Zone ,这三个区域都统一使用 MTK Camera HAL Interface 作为接口。
3. ISP6s及之前
在Android R 版本以及之前的版本,客户的算法通过 Pipeline/Hwnode 层开出的 PielinePlugin 接口接入在 Camera HAL 内部,客制化代码与MTK Camera HAL 流程耦合比较深。
4. Core Device OverView
Core Device就是下图蓝色框标注的部分,Core Device 往上接AOSP , 往下会创建 PipelineModel 示例,可以提供和实现 AOSP定义的Camera 完整功能。
MTK Camera HAL Interface 引入 Core Device 作为数据采集组件,提供以下功能:
- 提供 MTK 专有的 streaming 和 capture功能。
- 通过 MTK ISP 提供来自sensor 的 stream data。
- 手动控制MTK 实时流的自定义控制
- 提供外围设备信息,例如陀螺仪、ois等
- 禁用mtk的zsl buffer pool
- 支持自定义的zsl buffer选择策略
Core Device 提供 MTK Camera HAL Interface 来接 Custom Zone,作为客户的客制化代码区域。客户在Custom Zone区域集成三方算法,并通过控制 Data Collection Zone 和 Post Processing Zone,形成完整的相机处理流程。
下图就展示了如何在 MTK Camera HAL Interface中实现自定义控制流程。
调用者可以利用 MTK Android HIDL 适配层将 AOSP 捕获请求转换为 MTK HAL Interface请求,并转换捕获请求为自定义捕获请求。例如,Camera App 请求具有捕获意图的帧,在通过 MTK ISP 管道捕获帧并返回自定义区域后,调用者可以通过给定的 3rd 方算法增强帧,或者使用 MTK 硬件加速和其他图像处理算法来减少噪声或增强对比度。增强后,调用者可以利用 MTK 硬件 JPEG 编码器(或 HEIF)将 YUV 压缩为 JPEG/HEIF 并回调到 Camera App。
5. PostProc Device
PostProc Device 如下图蓝色框标注部分,PostProc Device 是 ISP7 TinyMW 新增的部分,为Custom Zone 提供独立的平台硬件能力或者算法。PostProc Device 通过统一的 MTK Camera HAL Interface 开放给 Custom Zone ,可以支援 Streaming feature 如 MCNR、Capture feature 如 MFNR 和 AINR 、独立的 WPE 功能等,也包括 RAW2YUV、YUV2YUV、YUV2JPEG 等处理。
6. isp7 camera 代码目录
isp6s及之前得版本mtk camera hal3的核心代码主要放在mtkcam和mtkcam3这两个目录,mtkcam3主要包含的是middleware的代码,而mtkcam主要包含了ISP、3A和Driver相关的代码。ISP7 TinyMW之后MTK hal3做了更加详细的划分和代码重构,核心代码不再存放在mtkcam和mtkcam3两个目录。
Repo | Description | path |
---|---|---|
mtkcam-android | camera AOSP specific parts | vendor/mediatek/proprietaty/hardware/mtkcam-android |
mtkcam-core | camera core parts | vendor/mediatek/proprietaty/hardware/mtkcam-core |
mtkcam-hwcore | hw info | vendor/mediatek/proprietaty/hardware/mtkcam-hwcore |
mtkcam-interface | interface of the mtkcam | vendor/mediatek/proprietaty/hardware/mtkcam-inteface |
mtkcam-halif | interface of customization zone | vendor/mediatek/proprietaty/hardware/mtkcam-halif |