---
title: hi_mpi_vdec_get_frame
description: "解码后，获取解码通道的解码图像及输入Stream。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgc/aclcppdevg_03_1027.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgc/aclcppdevg_03_1027.html
indexId: 79d46166b492a30f59b16785c6cf6578b5d8c759ce308bb1630fb611d782504c105
---
# hi_mpi_vdec_get_frame

#### 函数功能

解码后，获取解码通道的解码图像及输入Stream。

JPEGD图像解码场景下，在调用本接口时，如果硬件解码失败，则会在本接口内部触发软件解码。


#### 约束说明

- 向VDEC获取解码结果，输入buffer和输出buffer一起获取。
- JPEGD图片解码时，默认对于jpeg(420)、jpeg(422)、jpeg(440)格式的输入图片，如果输入图片的宽高为奇数，JPEGD解码输出图片的宽高为向下2对齐；默认对于jpeg(444)、jpeg(400)格式的输入图片，JPEGD解码输出图片的宽高与输入图片保持一致。若需调整输出图片的宽、高对齐模式，可调用  hi_mpi_vdec_set_jpegd_precision_mode
接口。


#### 函数原型

hi_s32 hi_mpi_vdec_get_frame(hi_vdec_chn chn, hi_video_frame_info *frame_info, hi_vdec_supplement_info *supplement, hi_vdec_stream *stream, hi_s32 milli_sec)


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| chn | 输入 | 解码通道号。 Atlas 200/500 A2推理产品，该参数的取值范围：[0, 128)，JPEGD功能和VDEC功能共用通道，且通道总数最多128。 |
| frame\_info | 输出 | 已解码的图像信息的指针。解码后的数据存放在Device内存中。 |
| supplement | 输出 | 解码图像补充信息的指针。预留参数，暂未使用，建议用户设置为NULL。 |
| stream | 输出 | 已解码的输入码流信息指针。 |
| milli\_sec | 输入 | 超时时间，单位是毫秒。 \-1：阻塞方式 0：非阻塞方式 >0：超时方式，配置具体的超时时间。超时时间受操作系统影响，一般偏差在操作系统的一个时间片内，例如，操作系统的一个时间片为4ms，用户设置的milli\_sec参数值为1，则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下，超时时间仍可能存在波动。 说明： JPEGD图像解码场景下，此处配置的超时时间仅指获取硬件解码结果的等待时间，不包含软件解码的时间。 |


#### 返回值说明

- 0：成功，获取解码数据成功后，需调用  hi_mpi_vdec_release_frame
接口释放解码相关资源。
  本接口虽返回成功，但有可能获取到的是解码失败的数据，解码是否成功，需要查看hi_video_frame_info结构体的v_frame成员下的frame_flag参数值说明。

- 非0：失败，参见VDEC视频解码/JPEGD图片解码返回码
注意：

  - 如果在解码图像时未创建通道，则会返回错误码HI_ERR_VDEC_UNEXIST。
  - 如果在获取图像的过程中销毁通道，则会返回错误码HI_ERR_VDEC_UNEXIST。
  - 如果在获取解码图像的过程中复位通道，则会返回错误码HI_ERR_VDEC_UNEXIST。
  - 以非阻塞方式获取解码图像，如果缓冲区内无图像，则会返回错误码HI_ERR_VDEC_BUF_EMPTY。
  - 以超时方式获取解码图像，到达设定的超时时间还不能获取到硬件解码结果则会返回错误码HI_ERR_VDEC_BUF_EMPTY，此时则可增大超时时间，或循环调用本接口等待解码结果。


#### 参考资源

接口调用流程及示例，参见JPEGD图片解码、VDEC视频解码。
