昇腾社区首页
中文
注册

vdec_get_frame

产品支持情况

产品

是否支持

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

Atlas A2 训练系列产品 / Atlas 800I A2 推理产品 /A200I A2 Box 异构组件

Atlas 训练系列产品

x

Atlas 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 200/300/500 推理产品

x

功能说明

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

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

函数原型

  • C函数原型
    1
    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);
    
  • python函数
    1
    frame_info, supplement, stream, ret = acl.himpi.vdec_get_frame(chn, milli_sec)
    

参数说明

参数名

说明

chn

int,解码通道号。

  • Atlas 推理系列产品 ,该参数的取值范围:[0, 256),JPEGD功能和VDEC功能共用通道,且通道总数最多256。
  • Atlas A2 训练系列产品 / Atlas 800I A2 推理产品 /A200I A2 Box 异构组件,该参数的取值范围:[0, 256),JPEGD功能和VDEC功能共用通道,且通道总数最多256,其中,JPEGD解码通道总数最多256,VDEC解码通道总数最多32。
  • Atlas 200I/500 A2 推理产品 ,该参数的取值范围:[0, 128),JPEGD功能和VDEC功能共用通道,且通道总数最多128。
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ,该参数的取值范围:[0, 256),JPEGD功能和VDEC功能共用通道,且通道总数最多256,其中,JPEGD解码通道总数最多256,VDEC解码通道总数最多32。

milli_sec

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

    JPEGD图像解码场景下,此处配置的超时时间仅指获取硬件解码结果的等待时间,不包含软件解码的时间。

返回值说明

返回值

说明

frame_info

dict,获取已经完成解码的图像信息。解码后的数据存放在Device内存中,具体请参见hi_video_frame_info

supplement

dict,获取的解码图像补充信息。预留参数,暂未使用。

stream

dict,获取已完成解码的输入码流信息字典,具体请参见hi_vdec_stream

ret

int,错误码。
  • 返回0表示成功,获取解码数据成功后,需调用acl.himpi.vdec_release_frame接口释放解码相关资源。本接口虽返回成功,但有可能是解码失败的数据,解码成功或失败,需要查看hi_video_frame字典(hi_video_frame_info字典的成员)中的“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”,此时则可增大超时时间,或循环调用本接口等待解码结果。

约束说明

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

资源参考

接口调用流程,参见JPEGE图片编码VENC视频编码