函数:dvpp_destroy_jpege_config
函数:dvpp_jpeg_encode_async
| C函数原型 | aclError acldvppJpegEncodeAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, const void *data, uint32_t *size, acldvppJpegeConfig *config, aclrtStream stream) |
|---|---|
| Python函数 | ret = acl.media.dvpp_jpeg_encode_async(dvpp_channel_desc, input_dvpp_pic_desc, data, size_ptr, dvpp_jpege_config, stream) |
| 函数功能 | 将YUV格式图片编码成.jpg图片,异步接口。 |
| 输入说明 | dvpp_channel_desc:int,指定通道描述信息的指针地址,与调用acl.media.dvpp_create_channel接口创建通道时指定的dvpp_channel_desc保持一致。 input_dvpp_pic_desc:int,输入图片描述信息的指针地址。 - 调用acl.media.dvpp_create_pic_desc接口创建图片描述信息。 - 调用acl.media.dvpp_set_pic_desc系列接口设置图片描述参数(例如,图片格式、宽、高等)。 输入图片分辨率(≤通道的最大宽度*高度)、图像格式的要求,请参见功能及约束说明。 data:int,输出内存地址的指针地址,存放编码后的数据。 size_ptr:int,指向输出内存大小的指针地址,内存大小单位Byte。 - 可提前调用acl.media.dvpp_jpeg_predict_enc_size接口预估输出内存大小out_buffer_size。 - 调用np_out_size = np.array([out_buffer_size], dtype=np.int32)创建numpy array类型数据。再调用bytes_data = np_out_size.tobytes()-> ->size_ptr = acl.util.bytes_to_ptr(bytes_data),将数据转换为对象作为入参。 注意:函数调用成功后,size_ptr指向的数据(即np_out_size)会发生改变。 dvpp_jpege_config:int,表示图片编码配置数据的指针地址。 - 调用acl.media.dvpp_create_jpege_config接口创建图片编码配置数据,调用acl.media.dvpp_set_jpege_config_level接口设置编码配置数据。 stream:int,指定Stream对象。 |
| 返回值说明 | ret:int,错误码。 - 返回0,表示任务下发成功。 - 返回非0,表示任务下发失败。 |
| 参考资源 | 接口调用流程及示例,参见JPEGE图片编码。 |
父主题: JPEGE功能
函数:dvpp_jpeg_predict_enc_size
| C函数原型 | aclError acldvppJpegPredictEncSize(const acldvppPicDesc *inputDesc, const acldvppJpegeConfig *config, uint32_t *size) |
|---|---|
| Python函数 | size, ret = acl.media.dvpp_jpeg_predict_enc_size(input_dvpp_pic_desc, config) |
| 函数功能 | 根据输入图片描述信息、图片编码配置数据预估图片编码后所需的输出内存的大小。 |
| 输入说明 | input_dvpp_pic_desc: int,输入图片描述信息。 - 调用acl.media.dvpp_create_pic_desc接口创建图片描述信息。 - 调用acl.media.dvpp_set_pic_desc系列接口设置图片描述参数(例如,图片格式、宽、高等)。 config:int,图片编码配置数据。 调用acl.media.dvpp_create_jpege_config接口创建图片编码配置数据。 |
| 返回值说明 | size:int,预估JPEG图片编码后所需的输出内存的大小,单位为Byte。 预估的输出内存会大于实际输出内存,实际输出内存需从acl.media.dvpp_jpeg_encode_async接口的输出参数size获取。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 参考资源 | 接口调用流程及示例,参见JPEGE图片编码。 |
父主题: JPEGE功能
函数:dvpp_create_jpege_config
| C函数原型 | acldvppJpegeConfig *acldvppCreateJpegeConfig() |
|---|---|
| Python函数 | dvpp_jpege_config = acl.media.dvpp_create_jpege_config() |
| 函数功能 | 创建acldvppJpegeConfig类型的数据,表示图片编码配置数据。同步接口。 如需销毁acldvppJpegeConfig类型的数据,请参见acl.media.dvpp_destroy_jpege_config。 |
| 返回值说明 | dvpp_jpege_config:int,acldvppJpegeConfig类型的指针地址。 - 返回非0值,表示成功。 - 返回0,表示失败。 |
父主题: JPEGE功能
函数:dvpp_destroy_jpege_config
| C函数原型 | aclError acldvppDestroyJpegeConfig(acldvppJpegeConfig *jpegeConfig) |
|---|---|
| Python函数 | ret = acl.media.dvpp_destroy_jpege_config(dvpp_jpege_config) |
| 函数功能 | 销毁通过acl.media.dvpp_create_jpege_config接口创建的编码配置数据。同步接口。 |
| 输入说明 | dvpp_jpege_config:int,指定待销毁数据的指针地址。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
父主题: JPEGE功能
函数:dvpp_set_jpege_config_level
| C函数原型 | aclError acldvppSetJpegeConfigLevel(acldvppJpegeConfig *jpegeConfig, uint32_t level) |
|---|---|
| Python函数 | ret = acl.media.dvpp_set_jpege_config_level(dvpp_jpege_config, level) |
| 函数功能 | 设置编码配置数据。同步接口。 |
| 输入说明 | dvpp_jpege_config:int,指定编码配置数据。调用acl.media.dvpp_create_jpege_config接口创建的编码配置数据。 level:int,编码质量范围。 Atlas 200/500 A2推理产品,该参数取值范围:[1, 100],数值越小输出图片质量越差。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
父主题: JPEGE功能
函数:dvpp_get_jpege_config_level
| C函数原型 | uint32_t acldvppGetJpegeConfigLevel(const acldvppJpegeConfig *jpegeConfig) |
|---|---|
| Python函数 | level = acl.media.dvpp_get_jpege_config_level(dvpp_jpege_config) |
| 函数功能 | 获取编码配置数据。同步接口。 |
| 输入说明 | dvpp_jpege_config:int,指定编码配置数据的指针地址。调用acl.media.dvpp_create_jpege_config接口创建acldvppJpegeConfig类型的数据,调用acl.media.dvpp_set_jpege_config_level接口设置编码配置数据。 |
| 返回值说明 | level:int,返回编码质量范围。 Atlas 200/500 A2推理产品,该参数取值范围:[1, 100],数值越小输出图片质量越差。 |
父主题: JPEGE功能
功能及约束说明
功能说明
VDEC(Video Decoder)实现视频的解码,VDEC内部经过VPC处理后,输出指定格式的图片,参见码流/图片格式、宽高对齐、内存约束。
分辨率约束
-
输入码流分辨率:
昇腾AI处理器 分辨率范围 Atlas 200/500 A2推理产品 对于H264输入码流,最大分辨率8192*8192,最小分辨率128*128。 对于H265输入码流,最大分辨率5400*8192,最小分辨率128*128。 -
输出图片分辨率:
昇腾AI处理器 分辨率范围 Atlas 200/500 A2推理产品 输出图片最大分辨率8192*8192;当输入码流宽度小于或等于4096时,输出图片最小分辨率为10*6,当输入码流宽度大于4096时,输出图片最小分辨率为128*128。
码流/图片格式、宽高对齐、内存约束
实现VDEC视频解码功能时,输入或输出内存的生命周期由用户自行管理:
-
输入内存
调用acl.media.dvpp_malloc/acl.media.dvpp_free接口申请/释放内存或调用acl.rt.malloc/acl.rt.free接口申请/释放内存,内存大小就是指实际的输入码流所占用的大小。
调用acl.media.dvpp_malloc接口申请的内存为媒体数据处理的专用内存,但专用内存的地址空间有限,若关注内存规划或内存资源有限时,使用VDEC视频解码功能时,建议调用acl.rt.malloc接口申请内存。
-
输出内存
需调用acl.media.dvpp_malloc接口申请Device上的输出内存,调用acl.media.dvpp_free接口释放输出内存,内存大小请参见下表中的计算公式。
:::note 说明 输出图片格式的定义请参见acldvppPixelFormat,宽stride、高stride等概念请参见基本概念。 :::
VDEC视频解码时,输入码流支持如下格式:
- H264 bp/mp/hp level5.1 YUV420编码的码流,当前只支持annex-B的裸码流。
- H265 8/10bit level5.1 YUV420编码的码流,当前只支持annex-B的裸码流。
VDEC视频解码时,输出图片格式、宽高对齐要求等如下表所示:
表1 码流/图片格式、宽高对齐、内存大小约束
版本 | 输出图片格式 | 输出图片宽、高对齐要求 | 输出图片宽stride、高stride、内存大小要求 Atlas 200/500 A2推理产品 |
|---|---|---|---|
通用格式,各版本都支持 | YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride无对齐要求,与宽相同即可,最小10,最大24576。 高stride无对齐要求,与高相同即可,最小6,最大24576。 内存大小(单位Byte)≥ 宽stride * 高stride * 3/2 |
YUV420SP NV21 8bit | |||
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | RGB888 | 无对齐要求 | 宽stride为宽乘以3的值,最小30,最大24576。 高stride无对齐要求,最小6,最大24576。 内存大小(单位Byte)≥ 宽stride * 高stride |
BGR888 |
其它约束
- VDEC只支持按帧输入码流进行解码。
- 若码流中有坏帧、缺帧等情况,解码器VDEC可能会丢帧。
- 通过隔行扫描方式编码出来的码流,VDEC仅支持解码H264 8bit编码的码流。
父主题: VDEC功能
在线提单