3. MTK Camera HAL 架构概览:HAL 3.4/3.8 架构、P1/P2/P3 模块、ISP Pipeline 设计

MTK Camera HAL 架构与高通平台在抽象层次和模块划分上存在显著差异。理解 MTK 的 HAL 版本演进、核心处理模块(P1/P2/P3)以及 ISP Pipeline 的数据流,是从高通平台移植到 MTK 平台的关键第一步。本章将系统梳理 MTK Camera HAL 3.4 与 3.8 架构的异同,深入解析 P1/P2/P3 模块职责,并绘制 ISP Pipeline 的完整数据通路。

3.1 MTK Camera HAL 版本演进:HAL 3.4 vs HAL 3.8

MTK 平台主要维护两套 Camera HAL 架构:HAL 3.4(基于 Android N/O)和 HAL 3.8(基于 Android P/Q/R/S)。两者在模块组织、Pipeline 管理、以及 Vendor 扩展接口上有较大差异。

对比维度 HAL 3.4(传统架构) HAL 3.8(统一架构)
Android 基线 Android 7.x ~ 8.x Android 9.x ~ 13.x
Pipeline 模型 静态 Pipeline,每个 Stream 独立配置 动态 Pipeline,支持 Reconfiguration
模块划分 P1(Capture)/ P2(Process)/ P3(Display) P1(Capture)/ P2(Process)/ P3(Display),但 P2 内部增加 Feature 插件化
Vendor Tag 较少,通过 Metadata 扩展 丰富,支持 Vendor Customization
Buffer 管理 基于 ION/DMABUF,Stream 间 Buffer 独立 基于 DMA-BUF Heaps,支持 Buffer Sharing
多摄支持 物理 Camera 独立,逻辑 Camera 由上层组合 原生支持 Multi-Camera Session,内置 Sync
调试接口 依赖 Log + dump 内置 Trace + Dump Tool
移植提示: 从高通平台移植到 MTK 时,如果目标 Android 版本 >= 9,建议直接基于 HAL 3.8 架构进行适配。HAL 3.4 的静态 Pipeline 模型在高通平台中对应的是 Legacy Camera HAL,两者在 Buffer 管理和 Stream 配置上差异较大,需要重点关注。

3.2 P1/P2/P3 模块职责与数据流

MTK Camera HAL 的核心处理流水线由三个主要模块构成:P1(Capture)、P2(Process)、P3(Display/Encode)。每个模块负责 ISP Pipeline 中的一个特定阶段。

  • P1 模块(Capture):负责 Sensor 驱动、RAW 数据采集、Binning、HDR 合成、以及 3A(AE/AWB/AF)统计信息生成。P1 输出 RAW 图或 YUV 图给 P2。
  • P2 模块(Process):负责图像处理管线,包括 Demosaic、降噪、锐化、色彩校正、几何校正(EIS/DIS)、以及多帧融合(MFSR)。P2 输出处理后的 YUV 图。
  • P3 模块(Display/Encode):负责将 YUV 图转换为 Preview/Video/Snapshot 所需的格式,包括 Scaling、Rotation、Format Conversion,并分发到 Display 或 Video Encoder。
关键差异: 高通平台的 ISP Pipeline 通常将 Capture 和 Process 合并到 ISP 硬件中,而 MTK 平台通过 P1/P2 的软件模块划分,使得算法集成更加灵活。P2 模块是 MTK 平台算法定制的主要入口。
MTK Camera HAL P1/P2/P3 模块数据流 MTK Camera HAL P1/P2/P3 模块数据流 Sensor P1 Capture RAW / YUV P2 Process YUV P3 Display/Encode Preview/Video/Snapshot P1 职责 Sensor 驱动 RAW 采集 / Binning 3A 统计 P2 职责 Demosaic / 降噪 色彩校正 / 锐化 EIS / MFSR P3 职责 Scaling / Rotation Format Conversion 分发到 Display/Encoder

3.3 ISP Pipeline 设计详解

MTK 的 ISP Pipeline 是一个高度模块化的硬件+软件协同处理链路。从 Sensor 输出 RAW 数据到最终输出 YUV 数据,中间经过多个 ISP 硬件模块,每个模块由 P1/P2 驱动和算法库控制。

3.3.1 ISP Pipeline 主要阶段

  1. RAW Domain:Sensor 输出 RAW10/RAW12 数据,经过 OB(Optical Black)、LSC(Lens Shading Correction)、BPC(Bad Pixel Correction)等预处理。
  2. Bayer Domain:进行 Demosaic 插值,将 Bayer 格式转换为 RGB 格式。同时进行 AWB(Auto White Balance)增益调整。
  3. RGB Domain:进行 CCM(Color Correction Matrix)、Gamma 校正、以及色彩增强。
  4. YUV Domain:进行降噪(NR)、锐化(Edge Enhancement)、以及几何校正(如 EIS)。
  5. Post-Processing:由 P3 模块进行 Scaling、Rotation、以及 Format Conversion(如 NV12 -> JPEG)。
Pipeline 阶段 Domain 主要硬件模块 控制模块
Sensor 输出 RAW Sensor + MIPI CSI P1 Driver
预处理 RAW OB / LSC / BPC P1 ISP Driver
Demosaic Bayer -> RGB ISP Demosaic Engine P2 ISP Driver
色彩处理 RGB CCM / Gamma P2 Algorithm
降噪与锐化 YUV NR / EE Engine P2 Algorithm
几何校正 YUV EIS / DIS Engine P2 Algorithm
输出处理 YUV Scaler / Rotator P3 Driver
移植注意: 高通平台的 ISP Pipeline 通常将 RAW Domain 和 Bayer Domain 的处理集成在 ISP 硬件内部,而 MTK 平台允许通过 P2 模块的算法插件对中间结果进行干预。这意味着在高通平台上通过硬件固定的处理,在 MTK 平台上可能需要通过软件算法重新实现,反之亦然。务必仔细核对每个 Pipeline 阶段的参数配置。
MTK ISP Pipeline 详细流程图 MTK ISP Pipeline 详细流程图 Sensor RAW 预处理 (OB/LSC/BPC) Demosaic 色彩处理 (CCM/Gamma) 降噪 / 锐化 几何校正 (EIS/DIS) 输出处理 (Scaler/Rotator) RAW Domain RAW Domain Bayer -> RGB RGB Domain YUV Domain YUV Domain YUV Domain P1 Driver P1 ISP Driver P2 ISP Driver P2 Algorithm P2 Algorithm P2 Algorithm P3 Driver

3.4 HAL 3.8 架构中的关键组件

在 HAL 3.8 架构中,除了 P1/P2/P3 核心模块外,还引入了几个关键组件来增强灵活性和可扩展性:

  • CamAdapter:负责将 Android HAL 3.x 的接口请求转换为 MTK 内部的 Pipeline 配置。每个 Camera 设备对应一个 CamAdapter 实例。
  • PipelineModel:管理 Stream 的创建、配置、以及 Reconfiguration。支持 Multi-Camera Session 的同步。
  • FeaturePlugin:P2 模块的算法插件框架,允许第三方算法(如美颜、HDR、夜景)以插件形式集成到 Pipeline 中。
  • BufferPool:统一的 Buffer 管理模块,支持跨模块的 Buffer 共享和复用,减少内存拷贝。
架构对比: 高通平台的 HAL 3.x 架构中,Pipeline 管理由 CameraDevice 和 Stream 直接控制,而 MTK 的 CamAdapter + PipelineModel 相当于在高通平台的 CameraDevice 和 ISP 之间增加了一层抽象,用于处理 MTK 特有的硬件配置。移植时需要将高通的 Stream 配置逻辑映射到 MTK 的 PipelineModel 配置中。

3.5 移植关注点总结

关注点 高通平台 MTK 平台 移植策略
Pipeline 配置 Stream 直接配置 ISP CamAdapter -> PipelineModel 重写 Stream 到 Pipeline 的映射逻辑
3A 集成 AE/AWB/AF 通过 Stats 回调 P1 模块直接输出 3A 统计 适配 3A 统计数据的格式和回调接口
算法集成 通过 Vendor Tag 扩展 通过 FeaturePlugin 插件 将算法封装为 FeaturePlugin
Buffer 管理 ION/DMABUF DMA-BUF Heaps 适配 Buffer Allocator 接口
多摄同步 依赖上层 Sync 原生 Multi-Camera Session 利用 MTK 的同步机制简化上层逻辑