昇腾社区首页
中文
注册

功能及约束说明

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

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

功能说明

PNGD(PNG Decoder)实现.png、.PNG图片的解码。实现PNGD功能的接口请参见PNGD功能

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

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

    • 输入图片格式:

      RGBA、RGB、GRAY、AGRAY。

    • 输入内存:

      Device的内存,调用hi_mpi_dvpp_malloc接口/hi_mpi_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

      • 先调用hi_mpi_png_get_image_info接口根据传入的PNG源图片,获取按源图解码时的输出图片的宽、高、宽stride、高stride、解码输出内存大小、图片格式等信息后,再调用PNGD解码接口,使用通过hi_mpi_png_get_image_info接口获取的图片格式来设置输出图片格式。
    • 输出内存:
      • Device的内存,调用hi_mpi_dvpp_malloc接口/hi_mpi_dvpp_free接口申请或释放内存。
      • 输出内存大小(单位Byte)的计算公式:widthStride*heightStride。
    • 输出图片的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解码。