JPEGE功能及约束说明
Atlas 200/300/500 推理产品上,该功能为预留功能,暂不支持。
Atlas 训练系列产品上,该功能为预留功能,暂不支持。
功能说明
JPEGE(JPEG Encoder)将YUV格式图片编码成JPEG压缩格式的图片文件,例如*.jpg。
图片格式、宽高对齐、内存约束
实现JPEGE图片编码功能时:
- 输入内存
需调用acl.himpi.dvpp_malloc接口申请Device上的输入、输出内存,调用acl.himpi.dvpp_free接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。内存大小请参见下表中的计算公式。
- 输出内存
支持DVPP内部管理输出内存,或用户自行管理输出内存两种方式:
- 不需要用户管理、由DVPP内部管理输出内存时,调用acl.himpi.venc_send_frame接口发送原始图像进行图像编码。
在调用acl.himpi.venc_create_chn接口创建通道时,必须正确设置hi_venc_chn_attr.venc_attr.buf_size参数值(参数描述请参见hi_venc_attr)。
该方式下,相比由用户管理内存,输出结果数据的JPEG头中不存在COM注释字段,数据长度会短一点,但需要用户从DVPP返回的内存中拷贝输出结果数据到指定内存。
- 由用户自行管理输出内存、管理内存的生命周期,调用acl.himpi.venc_send_jpege_frame接口发送原始图像进行图像编码。
在调用acl.himpi.venc_create_chn接口创建通道时,需将hi_venc_chn_attr.venc_attr.buf_size参数值设置为0(参数描述请参见hi_venc_attr),然后调用acl.himpi.venc_get_jpege_predicted_size接口预估输出内存大小,调用acl.himpi.dvpp_malloc/acl.himpi.dvpp_free接口申请/释放输出内存。
该方式下,直接在调用acl.himpi.venc_send_jpege_frame接口时,设置输出内存地址,输出结果数据直接存放到用户设置的内存中,相比由系统管理内存的方式,用户可减少一次“从DVPP返回的内存中拷贝输出结果数据到指定内存”的操作,但输出结果数据的JPEG头中可能会存在COM注释字段(字段长度范围4~19Byte),数据长度会长一点。
- 不需要用户管理、由DVPP内部管理输出内存时,调用acl.himpi.venc_send_frame接口发送原始图像进行图像编码。
输入图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念。
输入图片格式 |
输入图片宽、高对齐要求 |
输入图片宽stride、高stride、内存大小要求 |
输出图片格式 |
---|---|---|---|
YUV420SP NV12 8bit |
宽2对齐 高2对齐 |
宽stride为宽16对齐后的值,兼容对齐到16的倍数如128(按128对齐时,性能更优)。 高stride支持以下两种配置:
内存大小(单位Byte)= 宽stride * 高stride * 3/2 |
JPEG压缩格式的图片文件,例如*.jpg。 只支持huffman编码,不支持算术编码,不支持渐进编码。 |
YUV420SP NV21 8bit |
|||
YUV422Packed YUYV 8bit |
宽2对齐 高无对齐要求 |
宽stride为宽的两倍再16对齐后的值。 高stride支持以下两种配置:
内存大小(单位Byte)= 宽stride * 高stride |
|
YUV422Packed UYVY 8bit |
|||
YUV422Packed YVYU 8bit |
|||
YUV422Packed VYUY 8bit |