768 字
4 分钟
[海思 3519DV500] MPP 业务流程分析

在海思 MPP (Media Process Platform) 架构中,视频数据的处理是一个典型的流水线过程。本文将结合 sample_venc.c 源码,深入分析从采集到编码的完整业务流程与数据流转机制。


1. 业务全景:从 Sensor 到码流#

一个典型的编码业务链路如下: Sensor -> VI (ISP) -> VPSS -> VENC (编码) -> Bitstream (网络/存储) 同时通常伴随预览链路: VPSS -> VO (显示) -> HDMI/LCD


2. 模块职责与数据规格深度解析#

在流水线的每个阶段,数据的性质和模块的职责都在发生变化:

2.1 VI (Video Input) - 采集与转换#

  • 职责:物理接口对接、ISP 图像质量处理。
  • 输入Sensor RAW 数据 (Bayer 格式,10/12bit)。
  • 输出YUV 图像帧 (通常为 YUV422/420)。
  • 代码实现:调用 sample_comm_vi_start_vi 配置 Sensor、MIPI 和 Pipe。

2.2 VPSS (Video Process Sub-System) - 加工与分发#

  • 职责图像工厂。负责缩放、去噪、格式转换及多路分发。
  • 输入:单路 YUV 帧 (来自 VI)。
  • 输出多路规格各异的 YUV 帧。例如:
    • 通道 0 输出 4K 用于主码流编码。
    • 通道 1 输出 1080P 用于预览或子码流。
  • 代码实现:在 sample_venc_vpss_init 中配置各物理通道分辨率及压缩模式。

2.3 VENC (Video Encode) - 压缩成流#

  • 职责:将 YUV 序列压缩为 H.264/H.265 或 JPEG。
  • 输入:VPSS 通道输出的 YUV 帧。
  • 输出压缩码流 (Bitstream) (NALU 单元)。
  • 代码实现:启动 sample_comm_venc_get_stream_proc 线程获取数据包。

3. 核心业务流程 (以 sample_venc_normal 为例)#

3.1 初始化阶段#

  1. GOP 属性配置:获取用户指定的 GOP 模式。
  2. 编码参数设置:初始化 chn_param(分辨率、负载类型、RC 模式等)。

3.2 启动与绑定阶段#

绑定关系是自动流转的关键

数据流通过 BIND 建立自动流转关系,无需手动拷贝数据:

  1. VI -> VPSS: sample_comm_vi_bind_vpss(vi_pipe, vi_chn, vpss_grp, 0)
  2. VPSS -> VENC: sample_comm_vpss_bind_venc(vpss_grp, vpss_chn, venc_chn)
  3. VPSS -> VO: sample_comm_vpss_bind_vo(vpss_grp, vpss_chn, vo_layer, vo_chn)

3.3 数据获取阶段#

启动码流获取线程,调用 hi_mpi_venc_get_stream。该 API 会阻塞或非阻塞地从硬件缓冲区提取编码完成的包。


4. 底层数据载体与缓冲区机制#

4.1 核心结构体#

  • 帧数据 (YUV/RAW)hi_video_frame_info
    • 包含:像素格式、宽高、物理地址 (VB)、时间戳。
  • 码流数据 (Encoded)hi_venc_stream
    • 包含:包数量 (Pack Count)、每个包的地址偏移。

4.2 VB (Video Buffer) 引用计数机制#

高效性能的秘密

MPP 内部使用 VB 引用计数。当数据从 VI 产生并存入 DDR 后,后续的 VPSS 和 VENC 模块实际上是在操作同一块内存的引用。只有当所有绑定模块都处理完该帧并释放后,该内存块(VB Block)才会被重新放回缓冲池(VB Pool)。


5. 总结#

  • VI 解决了“怎么看”的问题。
  • VPSS 解决了“怎么变”的问题。
  • VENC 解决了“怎么存/传”的问题。

通过合理的绑定(Bind)配置和缓冲区(VB)管理,海思 MPP 平台在极低 CPU 负载下实现了高性能、低时延的 4K 视频编解码业务。

[海思 3519DV500] MPP 业务流程分析
https://www.eustia-astraea.top/posts/hisi/hi3519dv500-mpp-venc-flow/
作者
mcsl
发布于
2024-03-16
许可协议
CC BY-NC-SA 4.0