功能及约束说明

Atlas 200/300/500 推理产品上,不支持本章中的PNGD功能。

Atlas 训练系列产品上,不支持本章中的PNGD功能。

功能说明

PNGD(PNG Decoder)功能:实现PNG格式图片的硬件解码。

PNGD在解码图片时,支持按源图片格式解码。源图片格式解码是指解码前后图片的编码格式保持一致,例如解码前输入图片格式为RGB,解码后输出图片格式为RGB888。

如果不清楚PNG源图片格式、但想使用源格式解码时,有以下两种方式:

图片分辨率约束

内存申请/释放接口说明

输入内存的大小就是指实际的输入图片所占用的大小,输出内存的大小参见表1中的计算公式。

版本

内存申请/释放接口

Atlas 推理系列产品

PNG图片解码时,调用acl.himpi.dvpp_malloc\acl.himpi.dvpp_free接口申请\释放Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。

Atlas A2训练系列产品/Atlas 800I A2推理产品

Atlas 200I/500 A2推理产品

PNG图片解码时,支持以下两种内存申请接口:

调用acl.himpi.dvpp_malloc接口申请的内存为媒体数据处理的专用内存,但专用内存的地址空间有限,若关注内存规划或内存资源有限时,建议调用acl.rt.malloc接口申请内存。

图片格式、宽高对齐、内存约束

若不确定输出格式、将输出图片格式设置为“HI_PIXEL_FORMAT_UNKNOWN”时:

表1 图片格式、宽高对齐、内存大小约束

输入图片格式

输出图片格式

输出图片宽、高对齐要求

输出图片宽Stride、高Stride、内存大小要求

RGB

RGB888

无对齐要求

宽Stride为宽向上1对齐、16对齐或128对齐后再乘以3的值。

高Stride的取值范围:[输出图片的高, 输出图片的高向上128对齐]。

内存大小(单位Byte)= 宽Stride * 高Stride

GRAY

RGB888

RGBA

RGB888

宽Stride为宽向上1对齐、16对齐或128对齐后再乘以3的值。

高Stride的取值范围:[输出图片的高, 输出图片的高向上128对齐]。

内存大小(单位Byte)= 宽Stride * 高Stride

RGBA8888 8bit

宽Stride为宽向上1对齐、16对齐或128对齐后再乘以4的值。

高Stride的取值范围:[输出图片的高, 输出图片的高向上128对齐]。

内存大小(单位Byte)= 宽Stride * 高Stride

AGRAY

RGB888

宽Stride为宽向上1对齐、16对齐或128对齐后再乘以3的值。

高Stride的取值范围:[输出图片的高, 输出图片的高向上128对齐]。

内存大小(单位Byte)= 宽Stride * 高Stride

RGBA8888 8bit

宽Stride为宽向上1对齐、16对齐或128对齐后再乘以4的值。

高Stride的取值范围:[输出图片的高, 输出图片的高向上128对齐]。

内存大小(单位Byte)= 宽Stride * 高Stride

  • 输出图片格式的定义请参见hi_pixel_format,宽Stride、高Stride等概念请参见基本概念
  • 如果用户将宽Stride、高Stride设置为0,传入对应的接口,PNGD内部在处理时,会默认根据输出图片格式将宽Stride向上128对齐、高Stride向上16对齐。

其它约束

PNGD只支持对完整PNG图片进行解码,不支持将一张PNG图片分割成多个数据包后,由PNGD解码。