PNGD(PNG Decoder)功能:实现PNG格式图片的解码。
PNGD在解码图片时,支持按源图片格式解码。源图片格式解码是指解码前后图片的编码格式保持一致,例如解码前输入图片格式为RGB,解码后输出图片格式为RGB888。
如果不清楚PNG源图片格式、但想使用源格式解码时,有以下两种方式:
输入图片格式 |
操作 |
实际输出图片格式 |
---|---|---|
RGB/GRAY |
将输出图片格式设置为HI_PIXEL_FORMAT_UNKNOWN |
RGB888 |
RGBA/AGRAY |
将输出图片格式设置为HI_PIXEL_FORMAT_UNKNOWN |
RGBA8888 |
实现图片解码功能时,需调用hi_mpi_dvpp_malloc接口申请Device上的输入、输出内存,调用hi_mpi_dvpp_free接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。
若不确定输出格式、将输出图片格式设置为HI_PIXEL_FORMAT_UNKNOWN时:
如果输入图片是RGB或GRAY格式,则宽stride为输出图片的宽先向上128对齐后再乘以3的值;如果输入图片是RGBA或AGRAY格式,则宽stride为输出图片的宽先向上128对齐后再乘以4的值。
输入图片格式 |
输出图片格式 |
输出图片宽、高对齐要求 |
输出图片宽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 |
PNGD只支持对完整PNG图片进行解码,不支持将一张PNG图片分割成多个数据包后,由PNGD解码。