函数:dvpp_jpeg_get_image_info_v2
函数:dvpp_jpeg_decode_async
| C函数原型 | aclError acldvppJpegDecodeAsync(acldvppChannelDesc *channelDesc, const void *data, uint32_t size, acldvppPicDesc *outputDesc, aclrtStream stream) |
|---|---|
| Python函数 | ret = acl.media.dvpp_jpeg_decode_async(dvpp_channel_desc, data, size, output_dvpp_pic_desc, stream) |
| 函数功能 | 解码.jpg、.jpeg、.JPG、.JPEG图片,异步接口。 |
| 输入说明 | dvpp_channel_desc:int,指定通道描述信息的指针地址,与调用acl.media.dvpp_create_channel接口创建通道时指定的dvpp_channel_desc保持一致。 data:int,输入图片的内存地址的指针地址。 size:int,输入图片的实际数据大小,单位Byte。 output_dvpp_pic_desc:int,输出图片信息的指针地址。 - 调用acl.media.dvpp_create_pic_desc接口创建图片描述信息。 - 调用acl.media.dvpp_set_pic_desc系列接口设置输出图片的内存地址、内存大小、格式、width_stride、height_stride。 - 输出图片的内存大小可提前调用acl.media.dvpp_jpeg_predict_dec_size接口预估。 - JPEG原图的宽、高可通过acl.media.dvpp_jpeg_get_image_info/acl.media.dvpp_jpeg_get_image_info_v2接口获取。 - 输出图片格式、输出图片的宽高对齐要求,请参见功能及约束说明。 作为输出时,用户可以从内存地址中获取解码后的输出图片数据、可以调用acl.media.dvpp_get_pic_desc系列接口获取输出图片的宽/高。 (说明:Atlas 200/500 A2推理产品 上,如果解码后的输出图片数据需要在后续操作(例如,使用VPC实现抠图、缩放等功能)中使用,建议在解码后调用acl.media.dvpp_get_pic_desc获取输出图片的宽/高,因为解码过程中可能会对输出图片的宽高执行对齐操作,例如,jpeg(444) 源码的图片解码成YUV420SP格式的输出图片时,当jpeg(444) 源码图片的宽/高为奇数时,解码出来的YUV420SP格式的输出图片的宽/高理论上应该为奇数,但是YUV420SP格式本身要求图片的宽/高都为偶数,这时JPEGD会对奇数宽/高做向下2对齐的操作。) stream:int,指定Stream对象。 |
| 返回值说明 | ret:int,错误码。 - 返回0,表示任务下发成功。 - 返回非0,表示任务下发失败。 |
| 参考资源 | 接口调用流程及示例,参见JPEGD图片解码。 |
父主题: JPEGD功能
函数:dvpp_jpeg_get_image_info
| C函数原型 | aclError acldvppJpegGetImageInfo(const void *data, uint32_t size, uint32_t *width, uint32_t *height, int32_t *components) |
|---|---|
| Python函数 | width, height, components, ret = acl.media.dvpp_jpeg_get_image_info(data, size) |
| 函数功能 | 从存放JPEG图片数据的内存中读取JPEG图片的宽、高、颜色通道个数。 该接口会检查图片格式是否支持解码,如果遇到不支持的码流则该接口会返回ACL_ERROR_UNSUPPORTED_JPEG错误码,该错误码的详细描述请参见aclError。 |
| 输入说明 | data:int,存放JPEG图片数据的内存的地址。 size:int,内存大小,单位为Byte。 |
| 返回值说明 | width:int,图片的宽的指针地址。 height:int,图片的高的指针地址。 components:int,颜色通道个数的指针地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
父主题: JPEGD功能
函数:dvpp_jpeg_get_image_info_v2
| C函数原型 | aclError acldvppJpegGetImageInfoV2(const void *data, uint32_t size, uint32_t *width, uint32_t *height, int32_t *components, acldvppJpegFormat *format) |
|---|---|
| Python函数 | width, height, components, format, ret = acl.media.dvpp_jpeg_get_image_info_v2(data, size) |
| 函数功能 | 从存放JPEG图片数据的内存中读取JPEG图片的宽、高、颜色通道个数、JPEG原图编码格式。 该接口会检查图片格式是否支持解码,如果遇到不支持的码流则该接口会返回ACL_ERROR_UNSUPPORTED_JPEG错误码,该错误码的详细描述请参见aclError。 |
| 输入说明 | data:int,存放JPEG图片数据的内存的地址。 size:int,内存大小,单位为Byte。 |
| 返回值说明 | width:int,图片的宽的指针地址。 height:int,图片的高的指针地址。 components:int,颜色通道个数的指针地址。 format:int,JPEG原图编码格式的指针地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
父主题: JPEGD功能
函数:dvpp_jpeg_predict_dec_size
| C函数原型 | aclError acldvppJpegPredictDecSize(const void *data, uint32_t dataSize, acldvppPixelFormat outputPixelFormat, uint32_t *decSize) |
|---|---|
| Python函数 | dec_size, ret = acl.media.dvpp_jpeg_predict_dec_size(data, data_size, format) |
| 函数功能 | 根据存放JPEG图片数据的内存预估JPEG图片解码后所需的输出内存的大小。 |
| 输入说明 | data:int,Host上存放JPEG图片数据的内存的地址。 data_size:int,内存大小,单位为Byte。 format:int,解码后的输出图片的格式。详情见acl.media.dvpp_set_pic_desc_format介绍。 |
| 返回值说明 | dec_size:int,预估JPEG图片解码后所需的输出内存的大小的指针地址,单位为Byte。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
父主题: JPEGD功能
功能及约束说明
功能说明
JPEGE(JPEG Encoder)将YUV格式图片编码成JPEG压缩格式的图片文件,例如*.jpg。
图片分辨率约束
-
输入图片分辨率:
昇腾AI处理器 分辨率范围 Atlas 200/500 A2推理产品 最大分辨率:16384*16384,最小分辨率:32*32。 -
输出图片分辨率
JPEGE只对图片编码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致。
图片格式、宽高对齐、内存约束
实现JPEGE图片编码功能时,需调用acl.media.dvpp_malloc接口申请Device上的输入、输出内存,调用acl.media.dvpp_free接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。
- 输入内存的大小请参见下表中的计算公式。
- 输出内存的大小就是指实际的编码后图片所占用的大小,可调用acl.media.dvpp_jpeg_predict_enc_size接口预估输出内存大小。
:::note 说明 输入图片格式的定义请参见acldvppPixelFormat,宽stride、高stride等概念请参见基本概念。 :::
表1 图片格式、宽高对齐、内存大小约束
输入图片格式 | 输入图片宽、高对齐要求 | 输入图片宽stride、高stride、内存大小要求 | 输出图片格式 |
|---|---|---|---|
YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽16对齐后的值,兼容对齐到16的倍数如128(按128对齐时,性能更优)。 高stride支持以下两种配置: 内存大小(单位Byte)= 宽stride * 高stride * 3/2 | JPEG压缩格式的图片文件,例如*.jpg。 只支持huffman编码,不支持算术编码,不支持渐进编码。 |
YUV420SP NV21 8bit | |||
YUV422Packed YUYV 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽的两倍再16对齐后的值。 高stride支持以下两种配置: 内存大小(单位Byte)= 宽stride * 高stride | |
YUV422Packed UYVY 8bit | |||
YUV422Packed YVYU 8bit | |||
YUV422Packed VYUY 8bit |
父主题: JPEGE功能
性能指标说明
性能指标说明
以下性能数据,是基于一个stream上下发10个异步媒体数据处理任务后,执行一次acl.rt.synchronize_stream接口。
1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。单个Device的基本场景性能指标参考如下(1路对应一个通道,一个通道对应一个线程):
| 场景举例(输入图片格式:YUV420 8bit) | 总帧率 |
|---|---|
| 1080p*n路 | 256fps |
| 4k*n路 | 64fps |
父主题: JPEGE功能
在线提单