📸 HAL3 数据结构精讲
30 章 · 从入门到深度
01
Camera HAL3 概述
Android Camera 架构演进 · HAL3 设计哲学 · 与 HAL1 核心区别
02
camera3_device_t 结构体
设备接口定义 · ops 函数指针表 · open/close 流程
03
camera3_callback_ops_t
回调机制 · notify/process_capture_result 详解
04
camera3_stream_t 结构体
Stream 类型 (INPUT/OUTPUT) · 格式/分辨率 · usage 标志位
05
camera3_stream_buffer_t
Buffer 句柄 · 状态管理 · acquire/release fence
06
camera3_stream_configuration_t
配置流程 · operation_mode · num_streams
07
camera3_capture_request_t
Request 生命周期 · settings · input/output buffers
08
camera3_capture_result_t
Result 回调 · partial_result · metadata 与 buffers 关联
09
camera3_notify_msg_t
Error 消息 · Shutter 消息 · 请求结果状态通知
10
camera_metadata_t 核心机制
Metadata 存储结构 · entry/data 组织 · 查找与更新
11
Camera Metadata 标签体系
ANDROID_SENSOR · LENS · CONTROL 等核心 Tag 分类
12
Static Metadata
Characteristics 生成 · 硬件能力描述 (AE/AWB/FPS)
13
Dynamic Metadata
Result metadata 填充 · 3A 状态更新 · 帧率控制
14
Request Metadata
App 下发 settings 解析 · 手动曝光/对焦/ISO 控制
15
Buffer Management 机制
Gralloc Buffer 分配 · IMPLEMENTATION_DEFINED · Buffer 池管理
16
Fence 同步机制
acquire_fence / release_fence · sync fence fd · Buffer 同步策略
17
Pipeline Depth & Partial Result
Pipeline 深度计算 · partial_result 分段上报 · 帧延迟优化
18
3A (AE/AWB/AF) 数据结构
AE 状态机 · AWB 增益矩阵 · AF 模式与触发机制
19
Sensor 与 Flash 控制
SENSOR_INFO 结构 · Flash 模式 (SINGLE/TORCH) · 帧同步控制
20
JPEG 与 YUV 处理
JPEG 编码参数 · YUV 格式转换 · Thumbnail 生成
21
ZSL (Zero Shutter Lag) 实现
ZSL 环形 Buffer · Request 重排序 · Metadata 时间戳
22
High Speed Recording
高速录制模式 · CONSTRAINED_HIGH_SPEED 配置 · 帧率控制策略
23
Logical Camera & Multi-Camera
Logical Camera 概念 · Physical Camera ID 映射 · 同步曝光
24
Torch 模式与控制
Torch 模式切换 · Flash 驱动控制 · 电流限制
25
Camera HAL3 调试技巧
logcat 日志分析 · dumpsys 命令 · Systrace 抓取
26
常见错误码与处理
CAMERA3_STATUS_INVALID_PARAM · INTERNAL_ERROR 等
27
性能优化
Buffer 复用策略 · Metadata 缓存 · 减少 IPC 开销
28
兼容性测试
CTS 测试要点 · VTS 测试 · XTS 兼容性套件
29
Vendor Tag 扩展
自定义 Metadata Tag · Vendor 扩展接口 · QCOM/MTK 差异
30
HAL3 未来演进
HIDL → AIDL 迁移 · Camera HAL4 展望 · AI 与 Camera 结合