1. MTK Camera HAL 架构概述:HAL3 vs HAL1 架构对比、Pipeline 模型、关键模块

MTK Camera HAL 层是连接 Android 上层框架与底层硬件驱动的桥梁。理解其架构演进与核心模块,是进行 Camera 调试与问题定位的基础。本章重点对比 HAL1 与 HAL3 的架构差异,解析 Pipeline 模型,并介绍 ISP、Sensor、Tuning 三大关键模块。

1.1 HAL3 vs HAL1 架构对比

Android Camera HAL 从 HAL1 演进到 HAL3,核心变化在于从“黑盒”控制转向“显式 Pipeline”控制。HAL1 将 ISP 处理、3A 算法等封装在内部,上层只能通过固定接口(如 startPreview、takePicture)操作;HAL3 则暴露了更细粒度的 Capture Request/Result 模型,允许上层灵活配置每一帧的处理参数。

对比维度 HAL1 HAL3
控制模型 基于 Stream(流)的隐式控制 基于 Capture Request(捕获请求)的显式控制
帧处理 内部串行 Pipeline,上层无法干预 支持多请求并发、重排序、分阶段处理
3A 控制 由 HAL 内部 3A 算法完全接管 上层可指定 AE/AWB/AF 区域、模式、策略
输出流 通常只支持 Preview + Snapshot 双流 支持多路输出(YUV、JPEG、RAW、Depth)
性能开销 较低,适合低端平台 较高,但灵活性大幅提升
调试复杂度 较低,问题多集中在底层驱动 较高,需关注 Request 流、Buffer 管理、同步
MTK 适配情况 已逐步废弃,仅 legacy 项目使用 当前主力架构,MTK HAL3 基于自定义 Pipeline 实现

关键结论: 在 MTK 平台上,HAL3 是当前及未来的主流架构。所有新项目(Android 10+)均强制使用 HAL3。调试时需重点掌握 Request 生命周期、Buffer 流转与 Pipeline 阶段划分。

1.2 Pipeline 模型

MTK HAL3 的核心是一个高度模块化的 Pipeline 模型。它将一次 Capture 请求拆解为多个可配置的阶段(Stage),每个阶段由对应的硬件或软件模块处理。这种设计使得 MTK 可以灵活组合不同 Sensor、ISP 和算法模块,同时支持多路并发流。

下图展示了 MTK Camera HAL3 的典型 Pipeline 架构,从 Sensor 出图到最终输出帧的完整路径:

MTK Camera HAL3 Pipeline 架构图 Sensor 驱动 RAW / YUV 输出 ISP Pre-Proc BLC / LSC / OBC ISP Main Demosaic / AWB / AE Post-Proc NR / Sharpen / Scale 3A 反馈 (AE/AWB/AF) 输出帧 YUV / JPEG / RAW 说明: Pipeline 各阶段可独立配置。3A 反馈回路将 ISP Main 的统计结果回传给 Sensor 和 ISP Pre-Proc,形成闭环控制。

调试提示: 当遇到帧率不稳或预览卡顿时,优先检查 Pipeline 中哪个阶段耗时异常。MTK 提供 perfetto 或 sysdump 工具可抓取各阶段耗时分布。

1.3 关键模块介绍

1.3.1 ISP(图像信号处理器)

ISP 是 Camera 硬件链路中最核心的处理单元。MTK ISP 通常包含多个子模块:

  • Pre-Proc(预处理): 黑电平校正(BLC)、镜头阴影校正(LSC)、坏点校正(OBC)。
  • Main(主处理): 去马赛克(Demosaic)、自动白平衡(AWB)、自动曝光(AE)统计、自动对焦(AF)统计。
  • Post-Proc(后处理): 降噪(NR)、锐化(Sharpen)、缩放(Scale)、色彩矩阵转换(CCM)。

在 HAL3 中,ISP 的每个子模块都可以通过 Tuning 参数独立调节,这也是画质调试的核心工作。

1.3.2 Sensor(图像传感器)

Sensor 负责将光信号转换为电信号。MTK 平台支持多种 Sensor 接口(MIPI、LVDS)和厂商(Sony、Samsung、OmniVision)。HAL 层通过 Sensor 驱动 控制:

  • 帧率(FPS)与分辨率切换
  • 曝光时间与增益(模拟/数字)
  • 输出格式(RAW10、RAW12、YUV)
  • HDR 模式(DOL-HDR、Staggered HDR)

1.3.3 Tuning(画质调校)

Tuning 是 MTK Camera 开发中工作量最大的部分。它通过修改 Tuning 文件(.xml 或 .bin) 来调整 ISP 各模块的参数,以达到目标画质。Tuning 涉及的主要维度:

调校维度 关键参数 常见问题
AE(曝光) 目标亮度、曝光补偿、AE 速度 过曝/欠曝、闪烁、亮度跳变
AWB(白平衡) 色温范围、R/G/B 增益、收敛速度 偏色、色温切换卡顿
AF(对焦) 对焦步长、搜索范围、VCM 曲线 对焦不准、来回搜索、马达异响
NR(降噪) 空域/时域降噪强度、边缘保护 涂抹感、噪点残留、运动拖影
Sharpen(锐化) 锐化强度、阈值、过冲控制 边缘振铃、纹理过锐

常见陷阱: 在 HAL3 架构下,Tuning 参数与 Capture Request 中的 android.control.* 元数据存在交互。例如,上层设置了 AE 区域,但 Tuning 中的 AE 权重表未正确配置,会导致曝光异常。调试时务必同时检查 HAL 日志与 Tuning 参数。

1.4 小结