1.ISP7介紹
MTK hal3 ISP7版本引入了新的TinyMW架構(gòu),目前此架構(gòu)支持的Android S + HAL3 + ISP7,此架構(gòu)涉及的目的是為了解決不同產(chǎn)品線(xiàn)相機(jī)軟件部分的代碼共用,讓相機(jī)軟件的開(kāi)發(fā)與維護(hù)更加容易,TinyMW之后kerenl space會(huì)統(tǒng)一采用 Linux V4L2 標(biāo)準(zhǔn)接口實(shí)現(xiàn)。如下是TinyMW的整體架構(gòu)圖,TinyMW 帶來(lái)的變化主要是在MTK HAL 部分,改動(dòng)的部分包括與 Google AOSP 的適配層、MTK Camera HAL Interface 的引入、Custom Zone 的引入、Pipeline Model 層的改動(dòng)以及 V4L2 版本kernel space 的適配。

下面介紹下MTK HAL3 ISP7和 ISP6s的架構(gòu)差異
2. ISP7架構(gòu)
ISP7 TinyMW 主要的變化是引入 Custom Zone , 在Camera Device Session 層分為 Data Collection Zone 和 Post Processing Zone ,這三個(gè)區(qū)域都統(tǒng)一使用 MTK Camera HAL Interface 作為接口。

3. ISP6s及之前
在Android R 版本以及之前的版本,客戶(hù)的算法通過(guò) Pipeline/Hwnode 層開(kāi)出的 PielinePlugin 接口接入在 Camera HAL 內(nèi)部,客制化代碼與MTK Camera HAL 流程耦合比較深。

4. Core Device OverView
Core Device就是下圖藍(lán)色框標(biāo)注的部分,Core Device 往上接AOSP , 往下會(huì)創(chuàng)建 PipelineModel 示例,可以提供和實(shí)現(xiàn) AOSP定義的Camera 完整功能。
MTK Camera HAL Interface 引入 Core Device 作為數(shù)據(jù)采集組件,提供以下功能:
- 提供 MTK 專(zhuān)有的 streaming 和 capture功能。
- 通過(guò) MTK ISP 提供來(lái)自sensor 的 stream data。
- 手動(dòng)控制MTK 實(shí)時(shí)流的自定義控制
- 提供外圍設(shè)備信息,例如陀螺儀、ois等
- 禁用mtk的zsl buffer pool
- 支持自定義的zsl buffer選擇策略

Core Device 提供 MTK Camera HAL Interface 來(lái)接 Custom Zone,作為客戶(hù)的客制化代碼區(qū)域??蛻?hù)在Custom Zone區(qū)域集成三方算法,并通過(guò)控制 Data Collection Zone 和 Post Processing Zone,形成完整的相機(jī)處理流程。

下圖就展示了如何在 MTK Camera HAL Interface中實(shí)現(xiàn)自定義控制流程。
調(diào)用者可以利用 MTK Android HIDL 適配層將 AOSP 捕獲請(qǐng)求轉(zhuǎn)換為 MTK HAL Interface請(qǐng)求,并轉(zhuǎn)換捕獲請(qǐng)求為自定義捕獲請(qǐng)求。例如,Camera App 請(qǐng)求具有捕獲意圖的幀,在通過(guò) MTK ISP 管道捕獲幀并返回自定義區(qū)域后,調(diào)用者可以通過(guò)給定的 3rd 方算法增強(qiáng)幀,或者使用 MTK 硬件加速和其他圖像處理算法來(lái)減少噪聲或增強(qiáng)對(duì)比度。增強(qiáng)后,調(diào)用者可以利用 MTK 硬件 JPEG 編碼器(或 HEIF)將 YUV 壓縮為 JPEG/HEIF 并回調(diào)到 Camera App。

5. PostProc Device
PostProc Device 如下圖藍(lán)色框標(biāo)注部分,PostProc Device 是 ISP7 TinyMW 新增的部分,為Custom Zone 提供獨(dú)立的平臺(tái)硬件能力或者算法。PostProc Device 通過(guò)統(tǒng)一的 MTK Camera HAL Interface 開(kāi)放給 Custom Zone ,可以支援 Streaming feature 如 MCNR、Capture feature 如 MFNR 和 AINR 、獨(dú)立的 WPE 功能等,也包括 RAW2YUV、YUV2YUV、YUV2JPEG 等處理。

6. isp7 camera 代碼目錄
isp6s及之前得版本mtk camera hal3的核心代碼主要放在mtkcam和mtkcam3這兩個(gè)目錄,mtkcam3主要包含的是middleware的代碼,而mtkcam主要包含了ISP、3A和Driver相關(guān)的代碼。ISP7 TinyMW之后MTK hal3做了更加詳細(xì)的劃分和代碼重構(gòu),核心代碼不再存放在mtkcam和mtkcam3兩個(gè)目錄。
| 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 |