c函数原型 |
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函数 |
frame_info, supplement, stream, ret = acl.himpi.vdec_get_frame(chn, milli_sec) |
函数功能 |
解码后,获取视频解码通道的解码图像及输入Stream。 Atlas 200/300/500 推理产品,当前版本不支持该接口。 Atlas 训练系列产品,当前版本不支持该接口。 |
输入说明 |
- chn:解码通道号。
- 该参数的取值范围:[0, 256),JPEGD功能和VDEC功能共用通道,且通道总数最多256。
- 该参数的取值范围:[0, 256),JPEGD功能和VDEC功能共用通道,且通道通道总数最多256,其中,JPEGD解码通道总数最多256,VDEC解码通道总数最多128。
- milli_sec:超时时间,单位是毫秒。
- “-1”:阻塞方式。
- “0”:非阻塞方式。
- >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的“milli_sec”参数值为“1”,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。
|
返回值说明 |
- ret:int,错误码。
- stream:获取已完成解码的输入码流信息指针。
- frame_info:获取已经完成解码的图像信息。解码后的数据存放在Device内存中。
- supplement:获取的解码图像补充信息。预留参数,暂未使用。
|
注意事项 |
无 |
约束说明 |
- 获取解码图像时必须保证通道已经被创建,否则直接返回通道未创建的错误码“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接口。
- 调用acl.himpi.vdec_get_frame接口且返回成功后,需调用acl.himpi.vdec_release_frame接口释放解码相关接口。
|
参考资源 |
接口调用流程,参见JPEGD图片解码、VDEC视频解码。 |