昇腾社区首页
中文
注册

PNGD功能

昇腾310 AI处理器上,当前版本不支持该功能。

昇腾910 AI处理器上,当前版本不支持该功能。

功能说明

PNGD(PNG decoder)实现.png、.PNG图片的解码。

  • 关于输入
    • 输入码流分辨率

      最大像素尺寸4096*4096,最小像素尺寸32*32。

    • 输入图片格式

      RGBA、RGB、GRAY、AGRAY。

    • 输入内存

      Device的内存,调用acl.himpi.dvpp_malloc接口/acl.himpi.dvpp_free接口申请或释放内存。

      输入内存的大小就是指实际的输入图片所占用的大小。

  • 关于输出
    • 输出图片格式

      支持hi_pixel_format枚举值中的如下枚举项,如果输入图片格式为RGB或GRAY,则输出只能为RGB;如果输入图片格式为RGBA或AGRAY,则输出支持RGB或RGBA。

      HI_PIXEL_FORMAT_RGB_888 = 12,    // RGB888  
      HI_PIXEL_FORMAT_RGBA_8888 = 16,  // RGBA_8888 8bit
      HI_PIXEL_FORMAT_UNKNOWN = 10000   //不确定输出格式

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

      • 在调用PNGD解码接口时,直接将输出图片格式配置为HI_PIXEL_FORMAT_UNKNOWN,输出格式默认按源图片格式输出。此种方式,由于不知道输出图片格式,因此需要用户申请尽量大的内存,防止内存不够,无法存放输出图片。

        输入图片格式

        操作

        实际输出图片格式

        RGB/GRAY

        将输出图片格式设置为PIXEL_FORMAT_UNKNOWN

        RGB888

        RGBA/AGRAY

        将输出图片格式设置为PIXEL_FORMAT_UNKNOWN

        RGBA8888

      • 先调用acl.himpi.png_get_image_info接口根据传入的PNG源图片,获取按源图解码时的输出图片的宽、高、宽stride、高stride、解码输出内存大小、图片格式等信息后,再调用PNGD解码接口,使用通过acl.himpi.png_get_image_info接口获取的图片格式来设置输出图片格式。
    • 输出内存
    • 输出图片的widthStride、heightStride对齐要求:
      • widthStride:
        • RGB_888:输出图片的宽(width)先向上1对齐、或16对齐、或128对齐,再乘以3。
        • RGBA_8888:输出图片的宽(width)先向上1对齐、或16对齐、或128对齐,再乘以4。
        • 不确定输出格式时:如果输入图片是RGB或GRAY格式,则widthStride为输出图片的宽(width)先向上128对齐,再乘以3;如果输入图片是RGBA或AGRAY格式,则widthStride为输出图片的宽(width)先向上128对齐,再乘以4。
      • heightStride:
        • RGB_888/RGBA_8888:heightStride取值范围:[输出图片的高, 输出图片的高向上128对齐]。
        • 不确定输出格式时:heightStride为输出图片的高(height)向上16对齐。

      如果用户将widthStride、heightStride设置为0,传入对应的接口,PNGD内部在处理时,会默认根据输出图片格式将widthStride向上128对齐、heightStride向上16对齐。

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