acldvppPngDecodeAsync
acldvppJpegPredictEncSize
函数功能
根据输入图片描述信息、图片编码配置数据预估图片编码后所需的输出内存的大小。
函数原型
aclError acldvppJpegPredictEncSize(const acldvppPicDesc *inputDesc, const acldvppJpegeConfig *config, uint32_t *size)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDesc | 输入 | 输入图片描述信息的指针。 调用acldvppCreatePicDesc接口创建图片描述信息,调用acldvppSetPicDesc系列接口设置图片描述参数(例如,图片格式、宽、高等)。 |
| config | 输入 | 图片编码配置数据的指针。 调用acldvppCreateJpegeConfig接口创建图片编码配置数据。 |
| size | 输出 | 预估JPEG图片编码后所需输出内存大小的指针,单位为Byte。 预估的输出内存会大于实际输出内存,实际输出内存需从acldvppJpegEncodeAsync接口的输出参数size获取。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用流程及示例,参见JPEGE图片编码。
父主题: JPEGE功能
功能及约束说明
功能说明
PNGD(PNG Decoder)功能:实现PNG格式图片的解码。
**PNGD在解码图片时,支持按源图片格式解码。**在调用PNGD解码接口时,直接将输出图片格式配置为PIXEL_FORMAT_UNKNOWN,输出格式默认按源图片格式输出。
源图片格式解码是指解码前后图片的编码格式保持一致,例如解码前输入图片格式为RGB,解码后输出图片格式为RGB888。
图片分辨率约束
-
输入图片分辨率:
最大分辨率4096*4096,最小分辨率32*32。
-
输出图片分辨率
PNGD只对图片解码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致。
图片格式、宽高对齐、内存约束
实现图片解码功能时,需调用acldvppMalloc接口申请Device上的输入、输出内存,调用acldvppFree接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。
- 输入内存的大小就是指实际的输入图片所占用的大小。
- 输出内存的大小可调用acldvppPngPredictDecSize接口预估。
:::note 说明 输出图片格式的定义请参见acldvppPixelFormat,宽stride、高stride等概念请参见基本概念。 :::
表1 图片格式、宽高对齐、内存大小约束
输入图片格式 | 输出图片格式 | 输出图片宽、高对齐要求 | 输出图片宽stride、高stride、内存大小要求 |
|---|---|---|---|
RGB | RGB888 | 无对齐要求 | |
GRAY | RGB888 | 无对齐要求 | |
RGBA | RGB888 | 无对齐要求 | |
RGBA8888 8bit | 无对齐要求 | ||
AGRAY | RGB888 | 无对齐要求 | |
RGBA8888 8bit | 无对齐要求 |
父主题: PNGD功能
性能指标说明
性能指标说明(Atlas 200/500 A2推理产品)
以下性能数据,是基于一个stream上下发10个异步媒体数据处理任务后,执行一次aclrtSynchronizeStream接口。
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功能
acldvppPngDecodeAsync
函数功能
解码png图片,异步接口。
| 功能 | 输入图片格式 | 输出图片格式 |
|---|---|---|
| 调用本接口时将输出图片格式设置为PIXEL_FORMAT_UNKNOWN 表示不指定输出图片格式,输出图片格式与输入图片格式一致 | RGB/GRAY | RGB |
| 调用本接口时将输出图片格式设置为PIXEL_FORMAT_UNKNOWN 表示不指定输出图片格式,输出图片格式与输入图片格式一致 | RGBA/AGRAY | RGBA |
| 调用本接口时将输出图片格式设置为PIXEL_FORMAT_RGB_888,表示指定输出图片格式,将输入图片格式转换为输出图片格式 | RGB/RGBA/GRAY/AGRAY | RGB |
函数原型
aclError acldvppPngDecodeAsync(acldvppChannelDesc *channelDesc,
const void *data,
uint32_t size,
acldvppPicDesc *outputDesc,
aclrtStream stream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| channelDesc | 输入 | 通道描述信息的指针。 与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
| data | 输入 | 输入图片内存地址的指针。 |
| size | 输入 | 输入图片的实际数据大小,单位Byte。 |
| outputDesc | 输入&输出 | 输出图片信息的指针。 outputDesc参数作为输入时,需要用户调用如下接口: - 调用acldvppCreatePicDesc接口创建图片描述信息。 - 调用acldvppSetPicDesc系列接口设置输出图片的内存地址、内存大小、格式。 - 输出图片的内存大小可提前调用acldvppPngPredictDecSize接口获取。 - png原图信息(例如宽、高)可通过acldvppPngGetImageInfo接口获取。 - 输出图片格式、内存等要求,请参见功能及约束说明。 outputDesc参数作为输出时,用户可以从内存地址中获取解码后的输出图片数据。 |
| stream | 输入 | 指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
参考资源
接口调用流程及示例,参见PNGD图片解码。
父主题: PNGD功能
acldvppPngGetImageInfo
函数功能
从存放png图片数据的内存中读取png图片的宽、高。
函数原型
aclError acldvppPngGetImageInfo(const void *data,
uint32_t dataSize,
uint32_t *width,
uint32_t *height,
int32_t *components)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| data | 输入 | 存放png图片数据内存地址的指针。 |
| dataSize | 输入 | 内存大小,单位为Byte。 |
| width | 输出 | 图片宽的指针。 |
| height | 输出 | 图片高的指针。 |
| components | 输出 | 颜色通道个数的指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: PNGD功能
acldvppPngPredictDecSize
函数功能
根据存放png图片数据的内存计算出png图片解码后所需的输出内存的大小。
函数原型
aclError acldvppPngPredictDecSize(const void *data,
uint32_t dataSize,
acldvppPixelFormat outputPixelFormat,
uint32_t *decSize)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| data | 输入 | 存放png图片数据内存地址的指针。 |
| size | 输入 | 内存大小,单位为Byte。 |
| outputPixelFormat | 输入 | 解码后的输出图片的格式,支持设置如下格式: - PIXEL_FORMAT_UNKNOWN:按占用内存大小最大的PNG解码输出格式计算内存大小。 - PIXEL_FORMAT_RGB_888 - PIXEL_FORMAT_RGBA_8888 |
| decSize | 输出 | png图片解码后所需输出内存大小的指针,单位为Byte。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用流程及示例,参见PNGD图片解码。
父主题: PNGD功能
功能及约束说明
功能说明
VDEC(Video Decoder)实现视频的解码,VDEC内部经过VPC处理后,输出指定格式的图片,参见码流/图片格式、宽高对齐、内存约束。
分辨率约束
-
输入码流分辨率:
版本 分辨率范围 Atlas 200/500 A2推理产品 对于H264输入码流,最大分辨率8192*8192,最小分辨率128*128。 对于H265输入码流,最大分辨率5400*8192,最小分辨率128*128。 -
输出图片分辨率:
版本 分辨率范围 Atlas 200/500 A2推理产品 输出图片最大分辨率8192*8192;当输入码流宽度小于或等于4096时,输出图片最小分辨率为10*6,当输入码流宽度大于4096时,输出图片最小分辨率为128*128。
码流/图片格式、宽高对齐、内存约束
实现VDEC视频解码功能时,输入或输出内存的生命周期由用户自行管理:
-
输入内存
调用acldvppMalloc/acldvppFree接口申请/释放内存、或调用aclrtMalloc/aclrtFree接口申请/释放内存,内存大小就是指实际的输入码流所占用的大小。
调用acldvppMalloc接口申请的内存为媒体数据处理的专用内存,但专用内存的地址空间有限,若关注内存规划或内存资源有限时,使用VDEC视频解码功能时,建议调用aclrtMalloc接口申请内存。
-
输出内存
需调用acldvppMalloc接口申请Device上的输出内存,调用acldvppFree接口释放输出内存,内存大小请参见下表中的计算公式。
:::note 说明 输出图片格式的定义请参见acldvppPixelFormat,宽stride、高stride等概念请参见基本概念。 :::
VDEC视频解码时,输入码流支持如下格式:
- H264 bp/mp/hp level5.1 YUV420编码的码流,当前只支持annex-B的裸码流。
- H265 8/10bit level5.1 YUV420编码的码流,当前只支持annex-B的裸码流。
VDEC视频解码时,输出图片格式、宽高对齐要求等如下表所示:
表1 码流/图片格式、宽高对齐、内存大小约束
版本 | 输出图片格式 | 输出图片宽、高对齐要求 | 输出图片宽stride、高stride、内存大小要求 Atlas 200/500 A2推理产品 |
|---|---|---|---|
通用格式,各版本都支持 | YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride无对齐要求,与宽相同即可,最小10,最大24576。 高stride无对齐要求,与高相同即可,最小6,最大24576。 内存大小(单位Byte)≥ 宽stride * 高stride * 3/2 |
YUV420SP NV21 8bit | |||
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | RGB888 | 无对齐要求 | 宽stride为宽乘以3的值,最小30,最大24576。 高stride无对齐要求,最小6,最大24576。 内存大小(单位Byte)≥ 宽stride * 高stride |
BGR888 |
其它约束
- VDEC只支持按帧输入码流进行解码。
- 若码流中有坏帧、缺帧等情况,解码器VDEC可能会丢帧。
- 通过隔行扫描方式编码出来的码流,VDEC仅支持解码H264 8bit编码的码流。
父主题: VDEC功能
在线提单