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 出图到最终输出帧的完整路径:
调试提示: 当遇到帧率不稳或预览卡顿时,优先检查 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 参数。