hi_mpi_pngd_send_stream
hi_mpi_pngd_create_chn
函数功能
根据设置的通道属性创建解码通道
约束说明
- 单个Device上的通道号不能超出最大的通道号范围。
- 如果参数attr为空,会返回错误码HI_ERR_PNGD_NULL_PTR。
- 在创建PNG解码通道之前必须保证通道未创建(或者已经销毁),否则会直接返回错误。
- 系统内存不足时会返回HI_ERR_PNGD_NO_MEM的错误码,可考虑扩展OS内存。
- 当通道属性attr中的值超过解码能力集时,会返回HI_ERR_PNGD_ILLEGAL_PARAM的错误码。
函数原型
hi_s32 hi_mpi_pngd_create_chn(hi_pngd_chn chn, const hi_pngd_chn_attr *attr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 解码通道号。 该参数的取值范围:[0, 128),通道总数最多128。 |
| attr | 输入 | 解码通道属性指针。 |
返回值说明
- 0:成功
- 非0:失败,参见PNGD图像解码返回码
父主题: PNGD图片解码功能
hi_mpi_pngd_destroy_chn
函数功能
用户退出流程时,需要关闭之前创建的解码通道,以释放相关资源。
约束说明
销毁前必须保证通道已创建,否则会返回通道未创建的错误。
函数原型
hi_s32 hi_mpi_pngd_destroy_chn(hi_pngd_chn chn)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 解码通道号。 该参数的取值范围:[0, 128),通道总数最多128。 |
返回值说明
- 0:成功
- 非0:失败,参见PNGD图像解码返回码
父主题: PNGD图片解码功能
hi_mpi_pngd_send_stream
函数功能
解码前,向解码通道发送码流数据及存放解码结果的buffer。
约束说明
- 发送数据前必须保证通道已经被创建,否则直接返回通道未创建的错误码HI_ERR_PNGD_UNEXIST。如果在发送码流过程中销毁通道,就会立刻返回错误码HI_ERR_PNGD_UNEXIST。
- 发送码流时需要送入整张png图片。否则,解码会出现错误。
- 以非阻塞方式发送码流,如果码流缓冲区已满,会立刻返回错误码HI_ERR_PNGD_BUF_FULL。
- 以超时方式发送码流,到达设定的超时时间还不能成功发送码流会返回错误码HI_ERR_PNGD_BUF_FULL。
- 图像解码时,对输入、输出图片的要求请参见功能及约束说明。
- 解码时,输入输出内存必须使用hi_mpi_dvpp_malloc接口和hi_mpi_dvpp_free接口进行申请和释放,输入输出内存均需要在调用hi_mpi_pngd_get_image_data接口获取结果之后才能进行释放。
函数原型
hi_s32 hi_mpi_pngd_send_stream(hi_pngd_chn chn, const hi_img_stream *stream, hi_pic_info *png_pic_info, hi_s32 milli_sec)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 解码通道号。 该参数的取值范围:[0, 128),通道总数最多128。 |
| stream | 输入 | 输入码流信息的指针。 该结构体内的addr参数配置的地址为Device上的内存地址。 |
| png_pic_info | 输入 | 输出图片信息的指针。 |
| milli_sec | 输入 | 超时时间,单位是毫秒。 - -1:阻塞方式 - 0:非阻塞方式 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
返回值说明
- 0:成功
- 非0:失败,参见PNGD图像解码返回码
父主题: PNGD图片解码功能
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)
父主题: 公共
在线提单