---
title: Decode
description: "VideoDecoder的视频解码接口。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/msadg/mxvisionug_0833.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/msadg/mxvisionug_0833.html
indexId: 8b43c11362d9952355a261ed291900a6a034edb6b509d84fa98895d89822e7e1102
---
# Decode

#### 函数功能

VideoDecoder的视频解码接口。

一个实例化的解码器在首次调用Decode接口时，会判断是否为预申请场景。使用预申请场景时，用户需要在后续调用Decode接口进行预申请输出内存，防止接口调用失败。


#### 函数原型

```
APP_ERROR Decode(const std::shared_ptr<uint8_t> data, const uint32_t dataSize,
const uint32_t frameId, void* userData);
APP_ERROR Decode(const std::shared_ptr<uint8_t> data, const uint32_t dataSize, const uint32_t frameId,
Image& preMallocData, void* userData);
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| data | 输入 | 输入解码前的数据内存地址。 |
| dataSize | 输入 | 输入解码前的数据内存大小。 |
| frameId | 输入 | 输入解码前视频帧的帧ID，输出的帧顺序跟发帧顺序不一定一致。 |
| userData | 输入/输出 | 用户自定义数据（用于传入用户自定义回调函数内，主要用来获取解码结果）。 |
| preMallocData | 输入 | 用户需要使用预申请内存场景时需要通过申请好的内存地址，内存大小，图像宽高，设备ID及图像格式 来构造Image类。 |


“frameId”采用显示序进行输出与解码序（输出的帧顺序与发帧顺序一致）不同，其输出的帧顺序与发帧的顺序不一定一致，但与实际画面的显示一致。


#### 返回参数说明

| 数据结构 | 说明 |
| --- | --- |
| APP\_ERROR | 程序执行返回的错误码，请参考APP\_ERROR说明。 |
