性能指标说明
hi_mpi_venc_get_chn_attr
函数功能
获取编码通道当前的属性。
约束说明
- 本接口在编码通道创建之后、编码通道销毁之前调用。
- 仅H.265/H.264编码通道支持。
函数原型
hi_s32 hi_mpi_venc_get_chn_attr(****hi_venc_chn chn, hi_venc_chn_attr *chn_attr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 编码通道号。 Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
| chn_attr | 输出 | 编码通道属性的指针。 |
返回值说明
- 0:成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
功能及约束说明
功能说明
PNGD(PNG Decoder)功能:实现PNG格式图片的解码。
**PNGD在解码图片时,支持按源图片格式解码。**源图片格式解码是指解码前后图片的编码格式保持一致,例如解码前输入图片格式为RGB,解码后输出图片格式为RGB888。
如果不清楚PNG源图片格式、但想使用源格式解码时,有以下两种方式:
-
在调用PNGD解码接口时,直接将输出图片格式配置为HI_PIXEL_FORMAT_UNKNOWN,输出格式默认按源图片格式输出。此种方式,由于不知道输出图片格式,因此需要用户申请尽量大的内存,防止内存不够,无法存放输出图片。
输入图片格式 操作 实际输出图片格式 RGB/GRAY 将输出图片格式设置为HI_PIXEL_FORMAT_UNKNOWN RGB888 RGBA/AGRAY 将输出图片格式设置为HI_PIXEL_FORMAT_UNKNOWN RGBA8888 -
先调用hi_mpi_png_get_image_info接口根据传入的PNG源图片,获取按源图解码时的输出图片的宽、高、宽stride、高stride、解码输出内存大小、图片格式等信息后,再调用PNGD解码接口,使用通过hi_mpi_png_get_image_info接口获取的图片格式来设置输出图片格式。
图片分辨率约束
-
输入图片分辨率:
最大分辨率4096*4096,最小分辨率32*32。
-
输出图片分辨率
PNGD只对图片解码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致。
内存申请/释放接口说明
输入内存的大小就是指实际的输入图片所占用的大小,输出内存的大小参见表1中的计算公式。
| 版本 | 内存申请接口 |
|---|---|
| Atlas 200/500 A2推理产品 | PNG图片解码时,支持以下两种内存申请接口: - 调用aclrtMalloc[aclrtFree](./aclcppdevg_03_0101.md)接口申请\释放Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。 - 调用hi_mpi_dvpp_malloc[hi_mpi_dvpp_free](./aclcppdevg_03_0726.md)接口申请\释放Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。 注意:调用hi_mpi_dvpp_malloc接口申请的内存为媒体数据处理的专用内存,但专用内存的地址空间有限,若关注内存规划或内存资源有限时,建议调用aclrtMalloc接口申请内存。 |
图片格式、宽高对齐、内存约束
若不确定输出格式、将输出图片格式设置为HI_PIXEL_FORMAT_UNKNOWN时:
-
宽stride:
如果输入图片是RGB或GRAY格式,则宽stride为输出图片的宽先向上128对齐后再乘以3的值;如果输入图片是RGBA或AGRAY格式,则宽stride为输出图片的宽先向上128对齐后再乘以4的值。
-
高stride:为输出图片的高向上16对齐后的值。
表1 图片格式、宽高对齐、内存大小约束
输入图片格式 | 输出图片格式 | 输出图片宽、高对齐要求 | 输出图片宽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 |
:::note 说明
- 输出图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念。
- 如果用户将宽stride、高stride设置为0,传入对应的接口,PNGD内部在处理时,会默认根据输出图片格式将宽stride向上128对齐、高stride向上16对齐。 :::
其它约束
PNGD只支持对完整PNG图片进行解码,不支持将一张PNG图片分割成多个数据包后,由PNGD解码。
父主题: PNGD图片解码功能
性能指标说明
性能指标说明
1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。单个Device的基本场景性能指标参考如下(1路对应一个通道,一个通道对应一个线程):
| 场景举例 | 总帧率 |
|---|---|
| 1080p*n路(1≤n≤5) | n*4fps |
| 1080p*n路(n≥ 6) | 24fps |
| 4k*n路(1≤n≤5) | n*1fps |
| 4k*n路(n≥ 6) | 6fps |
父主题: PNGD图片解码功能
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图片解码功能
在线提单