---
title: 功能及约束说明
description: "图1 图像/视频数据处理"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/dvpp/aclcppdevg_03_0384.html
sourcePath: /source/zh/canncommercial/900/API/dvpp/aclcppdevg_03_0384.html
indexId: 9f83dd36f4d110cd251c9faa6909e4e51c0051cfd8061b729b5ad40c33f6656762
---
# 功能及约束说明

#### 图像/视频/音频数据处理的典型功能介绍

图1 图像/视频数据处理

各功能的介绍如下表所示，各产品型号上媒体数据处理各功能的支持度请参见各产品型号的功能支持情况，其中，AIPP当前各版本均支持。

| 功能 | 子功能模块 | 描述 |
| --- | --- | --- |
| 获取视频数据 | ISP（Image Signal Processing）系统控制 | 系统控制部分用于注册3A算法、注册Sensor驱动、初始化ISP firmware、运行ISP firmware、退出ISP firmware、配置ISP属性等功能。 |
| 获取视频数据 | MIPI Rx ioctl命令字 | MIPI Rx是一个支持多种差分视频输入接口的采集单元，通过combo\-PHY接收MIPI/LVDS/sub\-LVDS/HiSPi接口的数据，通过不同的功能模式配置，MIPI Rx可以支持多种速度和分辨率的数据传输需求，支持多种外部输入设备。 |
| 获取视频数据 | VI（Video Input） | VI模块捕获视频图像，可对其做裁剪、颜色优化、亮度优化、噪声去除等处理，并输出YUV或RAW格式的图像数据。 |
| 展示视频数据 | VO（Video Output） | VO模块接收VPSS处理后的输出图像，可进行播放控制等处理，最后按用户配置的输出协议（当前仅支持HDMI）输出给外围视频设备。 VO可配合TDE（Two Dimensional Engine）模块、HIFB（Hisilicon Framebuffer）模块，利用硬件分别进行图形绘制、叠加图形层管理。 |
| 展示视频数据 | HDMI（High Definition Multimedia Interface） | HDMI是全数字化影像和声音发送接口，可以发送未压缩的音频及视频信号。 |
| 展示视频数据 | TDE（Two Dimensional Engine） | TDE是图形二维加速引擎，它利用硬件为OSD（On Screen Display）和GUI（Graphics User Interface）提供快速的图形绘制功能，主要有快速拷贝、快速色彩填充、模式填充（当前仅支持Alpha Blending操作）。 |
| 展示视频数据 | HIFB（Hisilicon Framebuffer） | HIFB用于管理叠加图形层，它不仅提供Linux Framebuffer的基本功能，还在Linux Framebuffer的基础上增加图层显示起始位置修改、层间Alpha等扩展功能。 |
| 区域管理 | Region | 叠加在视频上的OSD (On Screen Display)和遮挡在视频上的色块统称为区域。区域管理模块，用于统一管理这些区域资源，用于在视频上显示一些特定信息（如通道号、时间戳等）、或在视频中填充色块用于遮挡，当前该功能需配合VPSS一起使用。 |
| 图像/视频数据处理 | VPSS（Video Process Sub\-System） | VPSS模块支持对输入图像进行统一预处理，如去噪、去隔行、裁剪等，然后再对各通道分别进行处理，如缩放、加边框等。 |
| 图像数据处理 | AIPP（Artificial Intelligence Pre\-Processing） | AIPP人工智能预处理，在AI Core上完成数据预处理，主要功能包括改变图像尺寸（抠图、填充等）、色域转换（转换图像格式）、减均值/乘系数（改变图像像素）等。 AIPP分为静态AIPP和动态AIPP。您只能选择静态AIPP或动态AIPP中的一种来处理图片，不能同时配置静态AIPP和动态AIPP两种方式。 静态AIPP：模型转换时设置AIPP模式为静态，同时设置AIPP参数，模型生成后，AIPP参数值被保存在离线模型（\*.om）中，每次模型推理过程采用固定的AIPP预处理参数（无法修改）。 如果使用静态AIPP方式，多Batch情况下共用同一份AIPP参数，AIPP参数值在使用ATC工具进行模型转换时设置，ATC工具的详细说明请参见《ATC离线模型编译工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/atctool/atlasatc\_16\_0001.html)》。 动态AIPP：模型转换时仅设置AIPP模式为动态，每次模型推理前，根据需求，在执行模型前设置动态AIPP参数值，然后在模型执行时可使用不同的AIPP参数。 |
| 图像/视频数据处理 | DVPP（Digital Vision Pre\-Processing） | DVPP是AI处理器内置的图像处理单元，通过媒体数据处理接口提供强大的媒体处理硬加速能力，主要功能包括以下功能： VPC（Vision Preprocessing Core）：处理YUV、RGB等格式的图片，包括缩放、抠图、图像金字塔、色域转换等。 JPEGD（JPEG Decoder）：JPEG压缩格式\-\->YUV格式的图片解码。 JPEGE（JPEG Encoder）：YUV格式\-\->JPEG压缩格式的图片编码。 VDEC（Video Decoder）：H264/H265格式\-\->YUV/RGB格式的视频码流解码。 VENC（Video Encoder）：YUV420SP格式\-\->H264/H265格式的视频码流编码。 PNGD（PNG Decoder）：PNG格式\-\->RGB格式的图片解码。 AIPP、DVPP可以分开独立使用，也可以组合使用。组合使用场景下，一般先使用DVPP对图片/视频进行解码、抠图、缩放等基本处理，但由于DVPP硬件上的约束，DVPP处理后的图片格式、分辨率有可能不满足模型的要求，因此还需要再经过AIPP进一步做色域转换、抠图、填充等处理。 例如，在 Atlas 200/300/500 推理产品 和 Atlas 训练系列产品 上，由于DVPP视频解码仅支持输出YUV格式的图片，如果模型需要RGB格式的图片，则需要再经过AIPP做色域转换的处理。 |
| 音频数据获取和输出 | AI（Audio Input） | AI模块捕获音频数据。 |
| 音频数据获取和输出 | AO（Audio Output） | 通过ADEC模块解码后的音频数据，AO模块支持播放音频。 |
| 音频数据编解码 | AENC（Audio Encoder） | 通过AI模块获取的音频数据，AENC模块支持对其进行编码，输出音频码流。 |
| 音频数据编解码 | ADEC（Audio Decoder） | ADEC支持解码G.711a、G.711u等协议的音频码流，再通过AO模块播放音频。 |


#### 各产品型号的功能支持情况

各产品型号上媒体数据处理V2版本各功能的支持度如下表所示。

各标识的含义如下：- √：支持。

- x：不支持。


| 型号 | VPC | JPEGD | JPEGE | PNGD | VDEC | VENC | 视频数据获取 | VPSS视频处理 | 音频功能（录音/播音/音量调节） | 视频数据展示 | 区域管理 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Atlas 训练系列产品 | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ |
| Atlas 推理系列产品 | √ | √ | √ | √ | √ | √ | ☓ | ☓ | ☓ | ☓ | ☓ |
| Atlas 200I/500 A2 推理产品 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ | √ | √ | √ | √ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ | √ | √ | √ | √ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ |
| Atlas 350 加速卡 | √ | √ | √ | √ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ | ☓ |


#### 整体约束说明

使用本章中介绍的接口，有以下注意点：

- 关于内存申请/释放：

  1. 实现媒体数据处理的VPC、JPEGD、JPEGE等功能前，需申请内存存放输入或输出数据，由于媒体数据处理功能对存放输入、输出数据的内存有更高的要求，因此需调用专用的内存申请接口，请查看各功能章节下的约束说明。如果多个功能串联使用的场景，需要复用同一段内存，则按最大内存要求来申请内存。
  2. 调用    1
申请出来的内存可以满足媒体数据处理的要求，也可以在其它任务中使用，例如，从性能角度，为了减少拷贝，媒体数据处理的输出作为模型推理的输入，实现内存复用。
  3. 但由于媒体数据处理访问的地址空间有限，为确保媒体数据处理时内存足够，除媒体数据处理功能外的其它功能（例如，模型加载），建议调用其它内存申请接口，例如aclrtMalloc接口。
- 关于通道的要求：
  实现媒体数据处理的各功能前，必须调用接口创建对应功能的通道，请分别参见VPC图像处理功能、VDEC视频解码功能/JPEGD图片解码功能、VENC视频编码功能/JPEGE图片编码功能、PNGD图片解码功能章节下的通道创建与销毁接口，查看接口说明以及通道数的最大限制。

  通道的创建与销毁会涉及资源的申请与释放，反复创建与销毁通道会影响业务性能，因此建议根据实际场景管理通道，例如，如果有持续VPC图片处理，则创建VPC的通道后，等到所有VPC功能调用完成后，再销毁该VPC通道。

  通道数量多，会影响Device的CPU占用率和内存占用，通道数量建议参考各功能章节下的性能指标的路数。

- 本章节描述结构体、枚举值等，预留的字段需要手动设置为0，避免后续版本的兼容性问题。
  结构体或枚举值中的预留字段，其名称中包含*_BUTT字符串的，例如HI_COMPRESS_MODE_BUTT。
