JPEGD(JPEG decoder)实现.jpg、.jpeg、.JPG、.JPEG图片的解码,对于硬件不支持的格式,会使用软件解码。
如果输入图片的码流中包含Orientation信息(代表捕获图像时摄像机相对于场景的方向),则JPEGD在解码时会解析Orientation信息,将图片进行90度、180度、270度或镜像旋转。旋转后输出图片的宽stride、高stride、输出内存仍需满足JPEGD输出的约束中的要求。如果输入图片的码流异常,导致JPEGD解码时无法读取Orientation信息,则不能实现图片旋转的功能。
如果不清楚JPEG源图片格式时,将输出图片格式配置为PIXEL_FORMAT_UNKNOWN,输出格式默认按源图片格式输出、且是V在前U在后的Semi-Planar格式。例如,JPEG源图片格式为jpeg(440),输出图片格式配置为PIXEL_FORMAT_UNKNOWN,JPEGD解码后,实际输出图片格式为YUV440SP V在前U在后。
源图片格式解码是指解码前后的编码格式保持一致,例如解码前输入图片为jpeg(440),解码后输出图片为YUV440SP V在前U在后或YUV440SP U在前V在后。获取JPEGD解码前输入图片的源图编码格式,可调用函数:dvpp_jpeg_get_image_info_v2接口。
JPEGD解码后的输出图片,如果要直接作为模型推理的输入,建议将输出图片格式配置为PIXEL_FORMAT_UNKNOWN,这时JPEGD使用源图片格式解码(但这里要确保解码后的图片格式模型是支持的),保证模型推理的精度。
JPEGD解码后的输出图片,如果直接作为VPC的输入,该场景下若使用源图片格式解码时,则需要关注解码后的输出图片格式VPC是否支持(VPC输入图片的格式请参见功能及约束说明),如果VPC不支持,则用户需按VPC支持的情况指定JPEGD的输出图片格式。
YUV420SP:大于或等于widthStride*heightStride*3/2
YUV422SP/YUV440SP:大于或等于widthStride*heightStride*2
YUV444SP:大于或等于widthStride*heightStride*3
在昇腾310 AI处理器上,JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽stride*高stride有128*16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以VPC在处理图片前,应首先对JPEGD对齐后的输出图片进行原分辨率裁剪,目的是去除无效数据对图像精度的影响。
在昇腾910 AI处理器上,JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽stride*高stride有128*16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以VPC在处理图片前,应首先对JPEGD对齐后的输出图片进行原分辨率裁剪,目的是去除无效数据对图像精度的影响。
JPEGD性能指标是基于硬件解码的性能,JPEGD硬件解码不支持3个SOS的图片解码,对于硬件不支持的格式,会使用软件解码,软件解码性能参考为1080P*1路 15fps。
1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。
场景举例 |
总帧率 |
---|---|
1080p * 1路 |
128fps |
1080p * n路(n≥2) |
256fps |
4k * 1路 |
32fps |
4k * n路(n≥2) |
64fps |
JPEGD性能指标是基于硬件解码的性能,JPEGD硬件解码不支持3个SOS的图片解码,对于硬件不支持的格式,会使用软件解码,软件解码性能参考为1080P*1路 15fps。
1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。
场景举例 |
总帧率 |
---|---|
1080p * n路(1≤n≤16) |
n*128fps |
1080p * n路(n>16) |
2048fps |
4k * n路(1≤n≤16) |
n*32fps |
4k * n路(n>16) |
512fps |