昇腾社区首页
中文
注册

hi_mpi_vdec_get_frame

函数功能

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

Atlas 200/300/500 推理产品,当前版本不支持该接口。

Atlas 训练系列产品,当前版本不支持该接口。

约束说明

  • 获取解码图像时必须保证通道已经被创建,否则直接返回通道未创建的错误码HI_ERR_VDEC_UNEXIST。如果在获取图像的过程中销毁通道,就会立刻返回错误码HI_ERR_VDEC_UNEXIST。
  • 如果在获取解码图像的过程中复位通道,则会返回错误码HI_ERR_VDEC_UNEXIST。
  • 以非阻塞方式获取解码图像,如果缓冲区内无图像,会立刻返回错误码HI_ERR_VDEC_BUF_EMPTY。
  • 以超时方式获取解码图像,到达设定的超时时间还不能获取到图像则会返回错误码HI_ERR_VDEC_BUF_EMPTY。
  • 向VDEC获取解码结果,输入buffer和输出buffer一起获取。
  • JPEGD图片解码时,对于jpeg(420)、jpeg(422)、jpeg(440)格式的输入图片,如果输入图片的宽高为奇数,JPEGD解码输出图片的宽高为向下2对齐;对于jpeg(444)、jpeg(400)格式的输入图片,JPEGD解码输出图片的宽高与输入图片保持一致。

函数原型

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

输入

解码通道号。

该参数的取值范围:[0, 256),通道总数最多256。

frame_info

输出

已解码的图像信息的指针。解码后的数据存放在Device内存中。

supplement

输出

解码图像补充信息的指针。预留参数,暂未使用,建议用户设置为NULL。

stream

输出

已解码的输入码流信息指针。

milli_sec

输入

超时时间,单位是毫秒。
  • -1:阻塞方式
  • 0:非阻塞方式
  • >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。

返回值说明

  • 0:获取数据成功,但有可能是解码失败的数据,解码成功或失败,需要查看hi_video_frame结构体(hi_video_frame_info结构体的成员)中的frame_flag参数
  • 非0:失败,参见VDEC视频解码/JPEGD图片解码返回码

参考资源

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