1. 课程导论:多路Stream并行捕获的应用场景与课程目标

在移动设备与嵌入式视觉系统中,单一摄像头输出一路图像数据已无法满足日益复杂的应用需求。现代相机应用往往需要同时获取不同分辨率、不同帧率、不同格式或不同色彩空间的图像流,这一技术被称为多路Stream并行捕获。本课程将深入剖析Camera HAL层如何配置和管理这些并行数据流,帮助开发者掌握从底层驱动到上层框架的完整实现路径。

核心概念:多路Stream并行捕获是指在同一Camera设备上,同时打开多个独立的图像数据通道(Stream),每个通道可配置不同的输出参数(如分辨率、格式、帧率),且数据流在时间上保持同步或独立。

1.1 典型应用场景

多路Stream并行捕获并非理论概念,而是直接服务于以下三大主流场景:

应用场景 核心需求 典型Stream配置
HDR(高动态范围) 同时捕获短曝光、中曝光、长曝光帧,合成高动态范围图像 3路YUV/RAW流,不同曝光时间,相同分辨率
双摄虚化(Bokeh) 主摄与副摄同时捕获,通过视差计算深度图,实现背景虚化 2路YUV流,主摄高分辨率,副摄低分辨率
多码流录制 同时输出预览流(低分辨率高帧率)与录制流(高分辨率低帧率) 2路YUV/HEVC流,不同分辨率与帧率
行业趋势:随着AI计算摄影的普及,多路Stream并行捕获已从高端旗舰机下沉至中端设备。Android 14+ 强制要求Camera HAL支持至少3路并发Stream,以满足多摄像头协同与实时计算需求。

1.2 多路Stream并行捕获的架构挑战

在Camera HAL层实现多路Stream并行捕获,需要解决以下关键技术难题:

  • 带宽瓶颈:多路高分辨率流同时传输,ISP带宽与DDR带宽成为首要限制。
  • 帧同步:不同Stream的帧率可能不同,需在HAL层实现时间戳对齐与帧序管理。
  • 资源复用:硬件ISP管线、MIPI接口、内存缓冲区需要在多个Stream间动态分配。
  • 功耗控制:多路并行意味着更高的功耗,需通过动态调频与时钟门控优化。
多路Stream并行捕获架构图 多路Stream并行捕获架构图 Camera Sensor(图像传感器) ISP 图像信号处理管线 RAW域处理 → 去马赛克 → 降噪 → 色彩校正 → 缩放 Stream 分发器(HAL层) Stream 1: 预览流 Stream 2: 录制流 Stream 3: 计算流 说明:ISP输出统一帧数据后,由HAL层Stream分发器根据配置创建多个独立输出通道

1.3 课程目标与学习路径

通过本课程的学习,你将能够:

  1. 理解Camera HAL架构:掌握Android Camera HAL3/4中Stream配置的数据结构与生命周期。
  2. 实现多路Stream配置:学会在HAL层代码中创建、绑定、启动多个Stream,并处理冲突与降级策略。
  3. 优化并行性能:掌握带宽计算、帧同步、缓冲区管理、功耗调优等实战技巧。
  4. 调试与验证:使用dumpsys、trace、perfetto等工具分析多路Stream运行状态。
前置要求:本课程假设学习者已具备C/C++编程基础,了解Android Camera框架基本概念(如CameraDevice、CaptureRequest、Surface),并熟悉Linux内核驱动与V4L2框架。如不具备,建议先学习《Camera HAL基础入门》系列课程。

1.4 课程内容概览

章节 核心内容 实战产出
第1章 课程导论与场景分析 理解多路Stream价值
第2-5章 HAL层Stream配置数据结构与API 编写Stream配置代码
第6-10章 多路Stream并行捕获实现 实现HDR/双摄/多码流案例
第11-15章 性能优化与调试 带宽分析与帧同步调优
第16-20章 进阶专题与项目实战 完整多路Stream HAL模块

本课程共20章,从基础概念到高级优化,配合大量代码示例与调试工具使用,确保学习者能够独立完成Camera HAL层多路Stream并行捕获的配置与调优工作。