基本数据类型说明
hi_mpi_pngd_get_image_data
函数功能
解码后,获取解码通道的解码图像及输入Stream。
约束说明
- 此接口通过改变milli_sec值支持阻塞方式、非阻塞方式、超时方式获取解码图像。
- 获取解码图像时必须保证通道已经被创建,否则直接返回通道未创建的错误码HI_ERR_PNGD_UNEXIST。如果在获取图像的过程中销毁通道,就会立刻返回错误码 HI_ERR_PNGD_UNEXIST。
- 以非阻塞方式获取解码图像,如果缓冲区内无图像,会立刻返回错误码HI_ERR_PNGD_BUF_EMPTY。
- 以超时方式获取解码图像,到达设定的超时时间还不能获取到图像则会返回错误码 HI_ERR_PNGD_BUF_EMPTY。
- 向PNGD获取解码结果,输入buffer和输出buffer一起获取。
- PNGD图片解码时,关于输入、输出图片的要求请参见功能及约束说明。
函数原型
hi_s32 hi_mpi_pngd_get_image_data(hi_pngd_chn chn, hi_pic_info *png_pic_info, hi_img_stream *stream, hi_s32 milli_sec)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 解码通道号。 该参数的取值范围:[0, 128),通道总数最多128。 |
| png_pic_info | 输出 | 已解码的图像信息的指针。解码后的数据存放在Device内存中。 |
| stream | 输出 | 已解码的输入码流信息的指针。 |
| milli_sec | 输入 | 超时时间,单位是毫秒。 - -1:阻塞方式 - 0:非阻塞方式 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
返回值说明
- 0:获取数据成功
- 非0:失败,参见PNGD图像解码返回码。HI_ERR_PNGD_BUF_EMPTY表示无数据,其他错误码表示解码异常
父主题: PNGD图片解码功能
hi_mpi_png_get_image_info
函数功能
根据输入码流,获取png源图片的宽、高、源格式及源格式解码时输出图片的宽stride、高stride、以及所需的内存大小等信息。
约束说明
提供给用户来计算解码后输出图片占用的内存大小。当前仅支持解析png图片。通过本接口获取的widthStride向上128对齐、heightStride向上16对齐。
函数原型
hi_s32 hi_mpi_png_get_image_info(const hi_img_stream *png_stream, hi_img_info *img_info)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| png_stream | 输入 | 输入码流信息的指针。 |
| img_info | 输出 | 图片信息的指针。 |
返回值说明
- 0:成功
- 非0:失败,参见PNGD图像解码返回码
父主题: PNGD图片解码功能
基本数据类型说明
typedef unsigned char hi_u8;
typedef signed char hi_s8;
typedef unsigned short hi_u16;
typedef short hi_s16;
typedef unsigned int hi_u32;
typedef int hi_s32;
typedef unsigned long long hi_u64;
typedef long long hi_s64;
typedef char hi_char;
typedef double hi_double;
typedef hi_u32 hi_fr32;
typedef float hi_float;
typedef enum {
HI_FALSE = 0,
HI_TRUE = 1,
} hi_bool;
#define hi_void void
#define HI_NULL 0L
#define HI_SUCCESS 0
#define HI_FAILURE (-1)
父主题: 公共
hi_pixel_format
说明
DVPP所支持的各种图片格式的枚举。
定义
typedef enum {
HI_PIXEL_FORMAT_YUV_400 = 0, // YUV400 8bit
HI_PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, // YUV420SP NV12 8bit
HI_PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, // YUV420SP NV21 8bit
HI_PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 3, // YUV422SP 8bit
HI_PIXEL_FORMAT_YVU_SEMIPLANAR_422 = 4, // YVU422SP 8bit
HI_PIXEL_FORMAT_YUV_SEMIPLANAR_444 = 5, // YUV444SP 8bit
HI_PIXEL_FORMAT_YVU_SEMIPLANAR_444 = 6, // YVU444SP 8bit
HI_PIXEL_FORMAT_YUYV_PACKED_422 = 7, // YUV422 Package YUYV 8bit
HI_PIXEL_FORMAT_UYVY_PACKED_422 = 8, // YUV422 Package UYVY 8bit
HI_PIXEL_FORMAT_YVYU_PACKED_422 = 9, // YUV422 Package YVYU 8bit
HI_PIXEL_FORMAT_VYUY_PACKED_422 = 10, // YUV422 Package VYUY 8bit
HI_PIXEL_FORMAT_YUV_PACKED_444 = 11, // YUV444 Package 8bit
HI_PIXEL_FORMAT_RGB_888 = 12, // RGB888
HI_PIXEL_FORMAT_BGR_888 = 13, // BGR888
HI_PIXEL_FORMAT_ARGB_8888 = 14, // ARGB8888
HI_PIXEL_FORMAT_ABGR_8888 = 15, // ABGR8888
HI_PIXEL_FORMAT_RGBA_8888 = 16, // RGBA8888
HI_PIXEL_FORMAT_BGRA_8888 = 17, // BGRA8888
HI_PIXEL_FORMAT_YUV_SEMI_PLANNER_420_10BIT = 18, // YUV420SP 10bit
HI_PIXEL_FORMAT_YVU_SEMI_PLANNER_420_10BIT = 19, // YVU420sp 10bit
HI_PIXEL_FORMAT_YVU_PLANAR_420 = 20, // YVU420P 8bit
HI_PIXEL_FORMAT_YVU_PLANAR_422 = 21, // YVU422P 8bit
HI_PIXEL_FORMAT_YVU_PLANAR_444 = 22, // YVU444P 8bit
HI_PIXEL_FORMAT_RGB_444 = 23, // RGB444 R:4bit G:4bit B:4bit,当前不支持该格式
HI_PIXEL_FORMAT_BGR_444 = 24, // BGR444 R:4bit G:4bit B:4bit,当前不支持该格式
HI_PIXEL_FORMAT_ARGB_4444 = 25, // ARGB4444 A:4bit R:4bit G:4bit B:4bit
HI_PIXEL_FORMAT_ABGR_4444 = 26, // ABGR4444 A:4bit B:4bit G:4bit R:4bit,当前不支持该格式
HI_PIXEL_FORMAT_RGBA_4444 = 27, // RGBA4444 R:4bit G:4bit B:4bit A:4bit,当前不支持该格式
HI_PIXEL_FORMAT_BGRA_4444 = 28, // BGRA4444 B:4bit G:4bit R:4bit A:4bit,当前不支持该格式
HI_PIXEL_FORMAT_RGB_555 = 29, // RGB555 R:5bit G:5bit B:5bit,当前不支持该格式
HI_PIXEL_FORMAT_BGR_555 = 30, // BGR555 B:5bit G:5bit R:5bit,当前不支持该格式
HI_PIXEL_FORMAT_RGB_565 = 31, // RGB565 R:5bit G:6bit B:5bit,当前不支持该格式
HI_PIXEL_FORMAT_BGR_565 = 32, // BGR565 B:5bit G:6bit R:5bit,当前不支持该格式
HI_PIXEL_FORMAT_ARGB_1555 = 33, // ARGB1555 A:1bit R:5bit G:6bit B:5bit
HI_PIXEL_FORMAT_ABGR_1555 = 34, // ABGR1555 A:1bit B:5bit G:6bit R:5bit,当前不支持该格式
HI_PIXEL_FORMAT_RGBA_1555 = 35, // RGBA1555 A:1bit B:5bit G:6bit R:5bit,当前不支持该格式
HI_PIXEL_FORMAT_BGRA_1555 = 36, // BGRA1555 A:1bit B:5bit G:6bit R:5bit,当前不支持该格式
HI_PIXEL_FORMAT_ARGB_8565 = 37, // ARGB8565 A:8bit R:5bit G:6bit B:5bit,当前不支持该格式
HI_PIXEL_FORMAT_ABGR_8565 = 38, // ABGR8565 A:8bit B:5bit G:6bit R:5bit,当前不支持该格式
HI_PIXEL_FORMAT_RGBA_8565 = 39, // RGBA8565 A:8bit R:5bit G:6bit B:5bit,当前不支持该格式
HI_PIXEL_FORMAT_BGRA_8565 = 40, // BGRA8565 A:8bit B:5bit G:6bit R:5bit,当前不支持该格式
HI_PIXEL_FORMAT_ARGB_CLUT2 = 41, // ARGB Color Lookup Table 2bit
HI_PIXEL_FORMAT_ARGB_CLUT4 = 42, // ARGB Color Lookup Table 4bit
HI_PIXEL_FORMAT_RGB_BAYER_8BPP = 50,
HI_PIXEL_FORMAT_RGB_BAYER_10BPP = 51,
HI_PIXEL_FORMAT_RGB_BAYER_12BPP = 52,
HI_PIXEL_FORMAT_RGB_BAYER_14BPP = 53,
HI_PIXEL_FORMAT_RGB_BAYER_16BPP = 54, // RGB Bayer 16bit,Bayer图像,当前不支持该格式
HI_PIXEL_FORMAT_YUV_PLANAR_420 = 55, // YUV420P 8bit
HI_PIXEL_FORMAT_YUV_PLANAR_422 = 56, // YUV422P 8bit
HI_PIXEL_FORMAT_YUV_PLANAR_444 = 57, // YUV444P 8bit
HI_PIXEL_FORMAT_YVU_PACKED_444 = 58, // YVU444 Package 8bit
HI_PIXEL_FORMAT_XYUV_PACKED_444 = 59, // AYUV444 Package 8bit
HI_PIXEL_FORMAT_XYVU_PACKED_444 = 60, // AYVU444 Package 8bit
HI_PIXEL_FORMAT_YUV_SEMIPLANAR_411 = 61, // YUV411SP 8bit
HI_PIXEL_FORMAT_YVU_SEMIPLANAR_411 = 62, // YVU411SP 8bit
HI_PIXEL_FORMAT_YUV_PLANAR_411 = 63, // YUV411P 8bit
HI_PIXEL_FORMAT_YVU_PLANAR_411 = 64, // YVU411P 8bit
HI_PIXEL_FORMAT_YUV_PLANAR_440 = 65, // YUV440P 8bit
HI_PIXEL_FORMAT_YVU_PLANAR_440 = 66, // YVU440P 8bit
HI_PIXEL_FORMAT_RGB_888_PLANAR = 69, // RGB888 Planar
HI_PIXEL_FORMAT_BGR_888_PLANAR = 70, // BGR888 Planar
HI_PIXEL_FORMAT_HSV_888_PACKAGE = 71, // HSV Package,HSV图像package格式,当前不支持该格式
HI_PIXEL_FORMAT_HSV_888_PLANAR = 72, // HSV Planar,HSV图像Planar格式,当前不支持该格式
HI_PIXEL_FORMAT_LAB_888_PACKAGE = 73, // LAB Package,LAB图像package格式,当前不支持该格式
HI_PIXEL_FORMAT_LAB_888_PLANAR = 74, // LAB Planar,LAB图像Planar格式,当前不支持该格式
HI_PIXEL_FORMAT_S8C1 = 75, // Signed 8bit for 1pixel 1Channel,每个像素用1个8bit有符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_S8C2_PACKAGE = 76, // Signed 8bit for 1pixel 2Channel Package,每个像素用2个8bit有符号数表示的双通道图像Package格式,当前不支持该格式
HI_PIXEL_FORMAT_S8C2_PLANAR = 77, // Signed 8bit for 1pixel 2Channel Planar,每个像素用2个8bit有符号数据表的双通道图像Planar格式,当前不支持该格式
HI_PIXEL_FORMAT_S16C1 = 78, // Signed 16bit 1pixel 1Channel,每个像素用1个16bit有符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_U8C1 = 79, // Unsigned 8bit 1pixel 1Channel,每个像素用1个8bit无符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_U16C1 = 80, // Unsigned 16bit 1pixel 1Channel,每个像素用1个16bit无符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_S32C1 = 81, // Signed 32bit 1pixel 1Channel,每个像素用1个32bit有符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_U32C1 = 82, // Unsigned 32bit 1pixel 1Channel,每个像素用1个32bit无符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_U64C1 = 83, // Unsigned 64bit 1pixel 1Channel,每个像素用1个64bit无符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_S64C1 = 84, // Signed 64bit 1pixel 1Channel,每个像素用1个64bit有符号数据表示的单通道图像,当前不支持该格式
HI_PIXEL_FORMAT_RGB_888_INT8 = 110, // RGB888 Package 每个像素的单分量占用1个8bit有符号数
HI_PIXEL_FORMAT_BGR_888_INT8 = 111, // BGR888 Package 每个像素的单分量占用1个8bit有符号数
HI_PIXEL_FORMAT_RGB_888_INT16 = 112, // RGB888 Package 每个像素的单分量占用1个16bit有符号数
HI_PIXEL_FORMAT_BGR_888_INT16 = 113, // BGR888 Package 每个像素的单分量占用1个16bit有符号数
HI_PIXEL_FORMAT_RGB_888_INT32 = 114, // RGB888 Package 每个像素的单分量占用1个32bit有符号数
HI_PIXEL_FORMAT_BGR_888_INT32 = 115, // BGR888 Package 每个像素的单分量占用1个32bit有符号数
HI_PIXEL_FORMAT_RGB_888_UINT16 = 116, // RGB888 Package 每个像素的单分量占用1个16bit无符号数
HI_PIXEL_FORMAT_BGR_888_UINT16 = 117, // BGR888 Package 每个像素的单分量占用1个16bit无符号数
HI_PIXEL_FORMAT_RGB_888_UINT32 = 118, // RGB888 Package 每个像素的单分量占用1个32bit无符号数
HI_PIXEL_FORMAT_BGR_888_UINT32 = 119, // BGR888 Package 每个像素的单分量占用1个32bit无符号数
HI_PIXEL_FORMAT_RGB_888_PLANAR_INT8 = 120,// RGB888 Planar 每个像素的单分量占用1个8bit有符号数
HI_PIXEL_FORMAT_BGR_888_PLANAR_INT8 = 121,// BGR888 Planar 每个像素的单分量占用1个8bit有符号数
HI_PIXEL_FORMAT_RGB_888_PLANAR_INT16 = 122,// RGB888 Planar 每个像素的单分量占用1个16bit有符号数
HI_PIXEL_FORMAT_BGR_888_PLANAR_INT16 = 123,// BGR888 Planar 每个像素的单分量占用1个16bit有符号数
HI_PIXEL_FORMAT_RGB_888_PLANAR_INT32 = 124,// RGB888 Planar 每个像素的单分量占用1个32bit有符号数
HI_PIXEL_FORMAT_BGR_888_PLANAR_INT32 = 125,// BGR888 Planar 每个像素的单分量占用1个32bit有符号数
HI_PIXEL_FORMAT_RGB_888_PLANAR_UINT16 = 126,// RGB888 Planar 每个像素的单分量占用1个16bit无符号数
HI_PIXEL_FORMAT_BGR_888_PLANAR_UINT16 = 127,// BGR888 Planar 每个像素的单分量占用1个16bit无符号数
HI_PIXEL_FORMAT_RGB_888_PLANAR_UINT32 = 128,// RGB888 Planar 每个像素的单分量占用1个32bit无符号数
HI_PIXEL_FORMAT_BGR_888_PLANAR_UINT32 = 129,// BGR888 Planar 每个像素的单分量占用1个32bit无符号数
HI_PIXEL_FORMAT_YUV400_UINT16 = 130, // YUV400 Package 每个像素的单分量占用1个16bit无符号数
HI_PIXEL_FORMAT_YUV400_UINT32 = 131, // YUV400 Package 每个像素的单分量占用1个32bit无符号数
HI_PIXEL_FORMAT_YUV400_UINT64 = 132, // YUV400 Package 每个像素的单分量占用1个64bit无符号数
HI_PIXEL_FORMAT_YUV400_INT8 = 133, // YUV400 Package 每个像素的单分量占用1个8bit有符号数
HI_PIXEL_FORMAT_YUV400_INT16 = 134, // YUV400 Package 每个像素的单分量占用1个16bit有符号数
HI_PIXEL_FORMAT_YUV400_INT32 = 135, // YUV400 Package 每个像素的单分量占用1个32bit有符号数
HI_PIXEL_FORMAT_YUV400_INT64 = 136, // YUV400 Package 每个像素的单分量占用1个64bit有符号数
HI_PIXEL_FORMAT_YUV400_FP16 = 137, // YUV400 Package 每个像素用1个float16数据表示
HI_PIXEL_FORMAT_YUV400_FP32 = 138, // YUV400 Package 每个像素用1个float32数据表示
HI_PIXEL_FORMAT_YUV400_FP64 = 139, // YUV400 Package 每个像素用1个float64数据表示
HI_PIXEL_FORMAT_YUV400_BF16 = 140, // YUV400 Package 每个像素用1个BFloat16数据表示,当前不支持该格式
HI_PIXEL_FORMAT_YUV_SEMIPLANAR_440 = 1000, // YUV440SP 8bit
HI_PIXEL_FORMAT_YVU_SEMIPLANAR_440 = 1001, // YVU440SP 8bit
HI_PIXEL_FORMAT_FLOAT32 = 1002, // Float 32bit for 1pixel,每个像素用1个float32数据表示,当前不支持该格式
HI_PIXEL_FORMAT_BUTT = 1003,
HI_PIXEL_FORMAT_RGB_888_PLANAR_FP16 = 1004,// RGB888 Planar 每个像素用1个float16数据表示
HI_PIXEL_FORMAT_BGR_888_PLANAR_FP16 = 1005,// BGR888 Planar 每个像素用1个float16数据表示
HI_PIXEL_FORMAT_RGB_888_PLANAR_FP32 = 1006,// RGB888 Planar 每个像素用1个float32数据表示
HI_PIXEL_FORMAT_BGR_888_PLANAR_FP32 = 1007,// BGR888 Planar 每个像素用1个float32数据表示
HI_PIXEL_FORMAT_RGB_888_PLANAR_BF16 = 1008,// RGB888 Planar 每个像素用1个BFloat16数据表示,当前不支持该格式
HI_PIXEL_FORMAT_BGR_888_PLANAR_BF16 = 1009,// BGR888 Planar 每个像素用1个BFloat16数据表示,当前不支持该格式
HI_PIXEL_FORMAT_RGB_888_FP16 = 1010, // RGB888 Package,每个像素用1个float16数据表示
HI_PIXEL_FORMAT_BGR_888_FP16 = 1011, // BGR888 Package,每个像素用1个float16数据表示
HI_PIXEL_FORMAT_RGB_888_FP32 = 1012, // RGB888 Package,每个像素用1个float32数据表示
HI_PIXEL_FORMAT_BGR_888_FP32 = 1013, // BGR888 Package,每个像素用1个float32数据表示
HI_PIXEL_FORMAT_RGB_888_BF16 = 1014, // RGB888 Package 每个像素用1个BFloat16数据表示,当前不支持该格式
HI_PIXEL_FORMAT_BGR_888_BF16 = 1015, // BGR888 Package 每个像素用1个BFloat16数据表示,当前不支持该格式
HI_PIXEL_FORMAT_UNKNOWN = 10000
} hi_pixel_format;
参考信息
下文以HI_PIXEL_FORMAT_S8C1、HI_PIXEL_FORMAT_S8C2_PACKAGE、HI_PIXEL_FORMAT_S8C2_PLANAR为例说明排布格式,供参考。
图1 HI_PIXEL_FORMAT_S8C1

图2 HI_PIXEL_FORMAT_S8C2_PACKAGE

图3 HI_PIXEL_FORMAT_S8C2_PLANAR

父主题: 公共
hi_payload_type
说明
定义图像或视频类型枚举。
目前DVPP模块仅支持HI_PT_H264、HI_PT_H265、HI_PT_JPEG、HI_PT_VPC,HI_PT_PNG,其中各功能支持的图像或视频类型如下:
- VPC:HI_PT_VPC
- JPEGD:HI_PT_JPEG
- JPEGE:HI_PT_JPEG
- VDEC:HI_PT_H264、HI_PT_H265
- VENC:HI_PT_H264、HI_PT_H265
- PNGD:HI_PT_PNG
定义
typedef enum {
HI_PT_PCMU = 0,
HI_PT_1016 = 1,
HI_PT_G721 = 2,
HI_PT_GSM = 3,
HI_PT_G723 = 4,
HI_PT_DVI4_8K = 5,
HI_PT_DVI4_16K = 6,
HI_PT_LPC = 7,
HI_PT_PCMA = 8,
HI_PT_G722 = 9,
HI_PT_S16BE_STEREO = 10,
HI_PT_S16BE_MONO = 11,
HI_PT_QCELP = 12,
HI_PT_CN = 13,
HI_PT_MPEGAUDIO = 14,
HI_PT_G728 = 15,
HI_PT_DVI4_3 = 16,
HI_PT_DVI4_4 = 17,
HI_PT_G729 = 18,
HI_PT_G711A = 19,
HI_PT_G711U = 20,
HI_PT_G726 = 21,
HI_PT_G729A = 22,
HI_PT_LPCM = 23,
HI_PT_CelB = 25,
HI_PT_JPEG = 26,
HI_PT_CUSM = 27,
HI_PT_NV = 28,
HI_PT_PICW = 29,
HI_PT_CPV = 30,
HI_PT_H261 = 31,
HI_PT_MPEGVIDEO = 32,
HI_PT_MPEG2TS = 33,
HI_PT_H263 = 34,
HI_PT_SPEG = 35,
HI_PT_MPEG2VIDEO = 36,
HI_PT_AAC = 37,
HI_PT_WMA9STD = 38,
HI_PT_HEAAC = 39,
HI_PT_PCM_VOICE = 40,
HI_PT_PCM_AUDIO = 41,
HI_PT_MP3 = 43,
HI_PT_ADPCMA = 49,
HI_PT_AEC = 50,
HI_PT_X_LD = 95,
HI_PT_H264 = 96,
HI_PT_D_GSM_HR = 200,
HI_PT_D_GSM_EFR = 201,
HI_PT_D_L8 = 202,
HI_PT_D_RED = 203,
HI_PT_D_VDVI = 204,
HI_PT_D_BT656 = 220,
HI_PT_D_H263_1998 = 221,
HI_PT_D_MP1S = 222,
HI_PT_D_MP2P = 223,
HI_PT_D_BMPEG = 224,
HI_PT_MP4VIDEO = 230,
HI_PT_MP4AUDIO = 237,
HI_PT_VC1 = 238,
HI_PT_JVC_ASF = 255,
HI_PT_D_AVI = 256,
HI_PT_DIVX3 = 257,
HI_PT_AVS = 258,
HI_PT_REAL8 = 259,
HI_PT_REAL9 = 260,
HI_PT_VP6 = 261,
HI_PT_VP6F = 262,
HI_PT_VP6A = 263,
HI_PT_SORENSON = 264,
HI_PT_H265 = 265,
HI_PT_VP8 = 266,
HI_PT_MVC = 267,
HI_PT_PNG = 268,
HI_PT_AMR = 1001,
HI_PT_MJPEG = 1002,
HI_PT_AMRWB = 1003,
HI_PT_PRORES = 1006,
HI_PT_OPUS = 1007,
HI_PT_VPC = 2000,
HI_PT_BUTT
} hi_payload_type;
父主题: 公共
在线提单