跳到主要内容

hi_mpi_vdec_get_chn_param

hi_mpi_vdec_reset_chn

函数功能

解码通道长时间没有反应的情况下或者解码失败等情况下,可以调用此接口复位通道,尝试恢复。

约束说明

  • 复位前必须保证通道已创建,否则会返回错误码HI_ERR_VDEC_UNEXIST。
  • 复位前必须停止接收码流,否则返回错误码HI_ERR_VDEC_NOT_PERM。

函数原型

hi_s32 hi_mpi_vdec_reset_chn(hi_vdec_chn chn)

参数说明

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

返回值说明

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

hi_mpi_vdec_set_chn_param

函数功能

改变通道参数的时候调用此接口,设置解码通道参数。

约束说明

  • 必须保证通道已创建,否则会返回错误码HI_ERR_VDEC_UNEXIST。
  • 该接口可设置通道的一些高级属性,创建通道后有默认值,默认值见数据类型hi_vdec_chn_param的说明。
  • 各项参数如超过合法范围,会返回 HI_ERR_VDEC_ILLEGAL_PARAM 的错误码,各参数范围见数据类型hi_vdec_chn_param的说明。
  • 调用hi_mpi_vdec_create_chn接口创建通道时设置按帧发送码流(目前仅支持按帧发送),同时,调用本接口设置解码序输出码流,即将本接口的chn_param->video_param.out_order参数设置为HI_VIDEO_OUT_ORDER_DEC,可以达到快速解码和快速输出的目的,但这种场景不支持解码含有B帧的码流。

函数原型

hi_s32 hi_mpi_vdec_set_chn_param(hi_vdec_chn chn, const hi_vdec_chn_param *chn_param)

参数说明

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

返回值说明

参考资源

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

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

hi_mpi_vdec_get_chn_param

函数功能

修改通道参数前可先调用此接口获取通道参数。

约束说明

必须保证通道已创建,否则会返回错误码HI_ERR_VDEC_UNEXIST。

函数原型

hi_s32 hi_mpi_vdec_get_chn_param(hi_vdec_chn chn, hi_vdec_chn_param *chn_param)

参数说明

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

返回值说明

参考资源

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

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

hi_mpi_vdec_set_protocol_param

函数功能

设置协议相关的内存分配通道参数,如slice、pps(Picture Parameter Set)、sps(Sequence Parameter Set)等。

不支持该接口。

约束说明

  • 必须保证通道已创建,否则会返回错误码HI_ERR_VDEC_UNEXIST。
  • 设置协议参数前必须先停止接收码流,否则返回错误码HI_ERR_VDEC_NOT_PERM。
  • 切换协议参数时,解码器内部会复位解码通道。
  • 协议参数所需的内存是解码器内部根据当前码流实际vps(Video Parameter Set)/sps/pps/slice个数使用vmalloc动态分配的,最大上限不超过此接口设置的最大vps/sps/pps/slice个数。

函数原型

hi_s32 hi_mpi_vdec_set_protocol_param(****hi_vdec_chn chn, const hi_vdec_protocol_param *protocol_param)

参数说明

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

返回值说明

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

hi_mpi_vdec_get_protocol_param

函数功能

获取协议相关的内存分配通道参数,如slice、pps(Picture Parameter Set)、sps(Sequence Parameter Set)等。

约束说明

必须保证通道已创建,否则会返回错误码HI_ERR_VDEC_UNEXIST。

函数原型

hi_s32 hi_mpi_vdec_get_protocol_param(hi_vdec_chn chn, hi_vdec_protocol_param *protocol_param)

参数说明

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

返回值说明

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

hi_mpi_vdec_send_stream

函数功能

解码前,向解码通道发送码流数据及存放解码结果的buffer。

约束说明

  • 发送数据前必须保证已经调用hi_mpi_vdec_start_recv_stream接口启动接收码流,否则直接返回该操作不允许的错误码HI_ERR_VDEC_NOT_PERM。如果在发送数据过程中停止接收码流,就会立刻返回HI_ERR_VDEC_NOT_PERM。
  • 发送数据前必须保证通道已经被创建,否则直接返回通道未创建的错误码HI_ERR_VDEC_UNEXIST。如果在发送码流过程中复位通道或者销毁通道,就会立刻返回错误码HI_ERR_VDEC_UNEXIST。
  • 发送码流时需要按照创建解码通道时设置的发送方式(仅支持按帧发送)进行发送。按帧发送时,调用此接口一次,必须发送完整的一帧码流,否则,解码会出现错误。
  • 不能发送end_of_stream为0的空码流包(码流长度为0或码流地址为空),否则返回错误码。发送end_of_stream为1的空码流包时,解码器会把所有码流全部解完并输出全部图像。除此之外,其它情况应该把end_of_stream置为0。
  • 当码流buffer为空且装不下当前包码流时,会返回参数超出范围的错误码HI_ERR_VDEC_ILLEGAL_PARAM。
  • 以非阻塞方式发送码流,如果码流缓冲区已满,会立刻返回错误码HI_ERR_VDEC_BUF_FULL。
  • 以超时方式发送码流,到达设定的超时时间还不能成功发送码流会返回错误码HI_ERR_VDEC_BUF_FULL。
  • 视频解码时支持设置是否将解码结果写入输出内存中,hi_vdec_stream结构体中将need_display设置为0时,此帧码流的解码结果将不会写入到hi_vdec_pic_info结构体中配置的输出内存中,此时允许将输出内存地址配置为NULL。hi_mpi_vdec_get_frame接口仍然能获取到结构hi_video_frame_info和hi_vdec_stream的信息,但是此时输出内存中无解码结果数据,需要用户释放输出内存(如果用户传入的输出内存地址是NULL,则无需释放)。
  • 解码时,输入输出内存均需要在调用hi_mpi_vdec_get_frame接口获取结果之后才能进行释放。
  • 视频解码,输入输出内存要求、输入码流格式、输出图片格式请参见VDEC功能及约束说明
  • 图像解码,输入输出内存要求、输入图片格式、输出图片格式请参见JPEGD功能及约束说明

函数原型

hi_s32 hi_mpi_vdec_send_stream(hi_vdec_chn chn, const hi_vdec_stream *stream, hi_vdec_pic_info *vdec_pic_info, hi_s32 milli_sec)

参数说明

参数名输入/输出说明
chn输入解码通道号。 Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),JPEGD功能和VDEC功能共用通道,且通道总数最多128。
stream输入输入码流信息的指针。 该结构体内的addr参数配置的地址为Device上的内存地址。
vdec_pic_info输入输出图片信息的指针。
milli_sec输入超时时间,单位是毫秒。
- -1:阻塞方式
- 0:非阻塞方式
- >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。

返回值说明

参考资源

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

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

在线提单