Skip to main content

hi_mpi_vdec_get_fd

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视频解码

父主题: VDEC视频解码功能/JPEGD图片解码功能

hi_mpi_vdec_release_frame

函数功能

解码之后,释放资源。

约束说明

  • 此接口需与hi_mpi_vdec_get_frame配对使用,获取的数据应当在使用完之后立即释放,如果不及时释放,会导致解码过程阻塞等待资源。
  • 释放的数据必须是调用hi_mpi_vdec_get_frame接口从该通道获取的数据,不得对数据信息结构体进行任何修改。

函数原型

hi_s32 hi_mpi_vdec_release_frame(hi_vdec_chn chn, const hi_video_frame_info *frame_info)

参数说明

参数名输入/输出说明
chn输入解码通道号。 Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),JPEGD功能和VDEC功能共用通道,且通道总数最多128。
frame_info输入解码后的图像信息指针,调用hi_mpi_vdec_get_frame接口获取。

返回值说明

参考资源

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

父主题: VDEC视频解码功能/JPEGD图片解码功能

hi_mpi_vdec_get_fd

函数功能

获取视频解码通道的设备文件句柄。

约束说明

在进程退出时会自动关闭文件句柄,回收资源。

函数原型

hi_s32 hi_mpi_vdec_get_fd(hi_vdec_chn chn)

参数说明

参数名输入/输出说明
chn输入解码通道号。 Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),JPEGD功能和VDEC功能共用通道,且通道总数最多128。

返回值说明

  • 0或正数值:有效返回值
  • 非正数值:无效返回值

父主题: VDEC视频解码功能/JPEGD图片解码功能

hi_mpi_vdec_close_fd

函数功能

关闭视频解码的设备文件句柄。

不支持该接口。

函数原型

hi_s32 hi_mpi_vdec_close_fd(hi_vdec_chn chn)

参数说明

参数名输入/输出说明
chn输入解码通道号。 Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),JPEGD功能和VDEC功能共用通道,且通道总数最多128。

返回值说明

父主题: VDEC视频解码功能/JPEGD图片解码功能

hi_vdec_get_pic_buf_size

函数功能

获取解码图像需要的Buffer大小。用户在两个地方有使用这个函数:计算视频解码需要的内部缓冲区的大小,在初始化的时候配置对应的通道参数;计算图像解码的输出内存。

约束说明

提供给用户来计算输出图片缓冲区大小。

函数原型

hi_u32 hi_vdec_get_pic_buf_size(hi_payload_type type, hi_pic_buf_attr *buf_attr)

参数说明

参数名输入/输出说明
type输入解码视频类型,当前支持HI_PT_H264、HI_PT_H265、HI_PT_JPEG。
buf_attr输入图片缓冲区信息的指针。

返回值说明

图像存储需要的图像大小。

解码视频类型为HI_PT_JPEG(表示JPEGD解码)时,pixel_format传入不支持的格式或者HI_PIXEL_FORMAT_UNKNOWN,返回值为0。

参考资源

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

父主题: VDEC视频解码功能/JPEGD图片解码功能

hi_vdec_get_tmv_buf_size

函数功能

获取解码图像需要的矢量预测缓冲区的大小。

约束说明

提供给用户来计算矢量预测缓冲区大小,在创建通道的时候初始化对应的参数。

函数原型

hi_u32 hi_vdec_get_tmv_buf_size(hi_payload_type type, hi_u32 width, hi_u32 height)

参数说明

参数名输入/输出说明
type输入解码视频类型。
width输入解码图像宽。
height输入解码图像高。

返回值说明

图像存储需要矢量预测缓冲区大小。

参考资源

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

父主题: VDEC视频解码功能/JPEGD图片解码功能

在线提单