---
title: 总体说明
description: "- 本手册中媒体数据处理V1版本与媒体数据处理V2版本的接口都是描述处理媒体数据的接口，用于实现视频编解码、图像编解码、图像处理等功能，但两套接口不能混用。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgc/aclcppdevg_03_0656.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgc/aclcppdevg_03_0656.html
indexId: 138d4b4e2757059c0b453ec2c6985360f0fba308921a3ccbcfcde6c9f99f9609105
---
# 总体说明

#### 多版本接口差异

- 本手册中媒体数据处理V1版本与媒体数据处理V2版本的接口都是描述处理媒体数据的接口，用于实现视频编解码、图像编解码、图像处理等功能，但两套接口不能混用。

  - V2版本的功能比V1版本更多，如下：

    - JPEGE：V2版本接口支持高级的参数配置，如huffman表配置。
    - VENC：V2版本接口支持更加细化的码控参数配置和效果调优，如I/P帧QP、宏块码控等。
    - VDEC：V2版本接口支持更细化的内存控制，如设置输入码流缓存。
    - 视频数据获取功能（ISP系统控制&MIPI命令字&VI功能）：仅V2版本接口支持。
    - VPSS视频处理：仅V2版本接口支持。
    - 音频相关功能，包括录音、播音、音量调节：仅V2版本接口支持。
    - 视频数据展示功能（VO功能&HDMI外设）：仅V2版本接口支持。
  - 建议使用V2版本中的接口，保证后续版本接口功能以及业务的连续演进。
  - V1版本中的接口是为了兼容旧版本，保证使用该部分接口的用户能继续使用，后续版本不再演进。


#### 功能说明

本章节介绍媒体数据处理V1版本（DVPP，Digital Vision Pre-Processing）的功能，如表1所示。


**表1 功能说明**

| 功能 | 功能 |
| --- | --- |
| VPC（Vision Preprocessing Core） | 负责图像处理功能，支持对图片做抠图、缩放、格式转换等操作，详细描述请参见约束说明。 |
| JPEGD（JPEG Decoder） | 负责完成图像解码功能，将.jpg、.jpeg、.JPG、.JPEG图片解码成YUV格式图片，详细描述请参见功能及约束说明。 |
| JPEGE（JPEG Encoder） | 负责完成图像编码功能，将YUV格式图片编码成.jpg图片，详细描述请参见功能及约束说明。 |
| VDEC（Video Decoder） | 负责视频解码，详细描述请参见功能及约束说明。 |
| VENC（Video Encoder） | 负责视频编码，详细描述请参见功能及约束说明。 |
| PNGD（PNG decoder） | 负责PNG格式图片的解码，详细描述请参见功能及约束说明。 |


#### 功能支持度说明

昇腾AI处理器对媒体数据处理V1版本各功能的支持度如表2所示。


**表2 功能支持度说明**

| 昇腾AI处理器 | VPC | JPEGD | JPEGE | PNGD | VDEC | VENC |
| --- | --- | --- | --- | --- | --- | --- |
| Atlas 200/500 A2推理产品 | √ | √ | √ | √ | √ | √ |


#### 整体约束说明

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

- 关于异步接口：
  对于本章介绍的异步接口，调用接口成功仅表示任务下发成功，不表示任务执行成功，对于有依赖的接口，为确保能按序执行任务，建议用户在多个接口中指定同一个stream，因为同一个stream中的任务按接口调用顺序执行。

  在调用异步口对图片进行解码、抠图、缩放等操作时，如果任务之间有依赖，一定要调用aclrtSynchronizeStream接口确保在同一个Stream中的任务按序执行。

  从性能角度考虑，建议一个stream上下发多个异步媒体数据处理任务后，执行一次aclrtSynchronizeStream接口。

  调用异步接口后，不能马上释放资源，需调用同步等待接口（例如，aclrtSynchronizeStream）确保Device侧任务执行完成后才能释放。

- 关于内存申请/释放：

  1. 实现媒体数据处理的VPC、JPEGD、JPEGE等功能前，若需要申请Device上的内存存放输入或输出数据，需调用    acldvppMalloc
申请内存、调用    acldvppFree
接口释放内存。如果多个功能串联使用的场景，需要复用同一段内存，则按最大内存要求来申请内存。
  2. 调用    1
申请出来的内存可以满足媒体数据处理的要求，也可以在其它任务中使用，例如，从性能角度，为了减少拷贝，媒体数据处理的输出作为模型推理的输入，实现内存复用。
  3. 但由于媒体数据处理访问的地址空间有限，为确保媒体数据处理时内存足够，除媒体数据处理功能外的其它功能（例如，模型加载），建议调用    内存管理
章节下的    aclrtMalloc
接口、或    aclrtMallocHost
接口、或    aclrtMallocCached
接口申请内存。
- 关于通道的要求：
  实现媒体数据处理的各功能前，必须调用接口创建对应功能的通道，创建通道的接口请参见通道创建与释放。通道的创建与销毁会涉及资源的申请与释放，反复创建与销毁通道会影响业务性能，因此建议根据实际场景管理通道，例如，如果有持续VPC图片处理，则创建VPC的通道后，等到所有VPC功能调用完成后，再销毁该VPC通道。

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

  Atlas 200/500 A2推理产品上，各功能的通道数有一定的限制，VPC的通道数最多128，JPEGD的通道数最多128，VDEC的通道数最多128，JPEGE的通道数最多128，VENC的通道数最多128，PNGD的通道数最多128。创建通道的接口请参见通道创建与释放。

  对于Atlas 200/500 A2推理产品，昇腾虚拟化实例（Ascend Virtual Instance）场景下，如果通道总数不为整数，则向下取整： VPC通道总数最多128。 VDEC通道 = ( 被分配的VDEC硬件单元 / VDEC硬件单元 ) * 128，如果通道总数不为整数，则向下取整。JPEGD的通道数不随算力影响，但JPEGD+VDEC的总通道数最大128。 VENC通道 = ( 被分配的VENC硬件单元 / VENC硬件单元 ) * 128，如果通道总数不为整数，则向下取整。JPEGE的通道数不随算力影响，但JPEGE+VENC的总通道数最大128。
