acl.himpi.vdec_set_jpegd_precision_mode
acl.himpi.vdec_set_jpegd_precision_mode
| c函数原型 | hi_u32 **hi_mpi_vdec_set_jpegd_precision_mode(**hi_vdec_chn chn, const hi_jpegd_precision_mode mode) |
|---|---|
| Python函数 | ret = acl.himpi.vdec_set_jpegd_precision_mode(chn, mode) |
| 函数功能 | 设置JPEGD解码输出图片的宽、高对齐模式。 |
| 输入说明 | - chn:解码通道号。 - Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),JPEGD功能和VDEC功能共用通道,且通道总数最多128。 - mode:设置JPEGD解码输出图片的宽、高对齐模式。 |
| 返回值说明 | ret:int,错误码。 - 0:成功 - 非0:失败,参见VDEC视频/JPEGD图像解码返回码 |
| 约束说明 | - 调用本接口设置对齐模式前,必须保证通道已创建,否则会返回通道未创建的错误码HI_ERR_VDEC_UNEXIST。 - 调用本接口设置对齐模式仅对JPEGD解码通道有效,其它类型通道返回操作不支持。 - 在调用acl.himpi.vdec_start_recv_stream接口之前调用本接口设置对齐模式,在调用acl.himpi.vdec_start_recv_stream接口之后调用本接口,系统会返回操作不允许的错误提示。 |
父主题: VDEC视频解码/JPEGD图像解码接口
acl.himpi.vdec_get_jpegd_output_info
| c函数原型 | hi_s32 hi_mpi_vdec_get_jpegd_output_info(const hi_vdec_stream *stream, const hi_pixel_format output_format, hi_img_info *img_info) |
|---|---|
| Python函数 | img_info, ret = acl.himpi.vdec_get_jpegd_output_info(stream, output_format**)** |
| 函数功能 | 图片解码场景下,根据输入码流,获取按源图格式或指定图片格式输出时的图片宽、高、宽stride、高stride、解码后占用的内存大小、图片格式等信息。 该接口会检查图片格式是否支持解码,如果遇到不支持的码流则该接口会返回HI_ERR_VDEC_NOT_SUPPORT错误码,该错误码的详细描述请参见公共返回码。 |
| 输入说明 | - stream:dict,输入码流信息字典。具体参见hi_vdec_stream。 Atlas 200/500 A2推理产品,RC模式下,在Device上调用本接口时,该结构体内的addr参数配置的地址必须是Device上的内存地址。 - output_format:int,输出图片格式。 若按源图格式获取相关信息,则将该参数值设置为HI_PIXEL_FORMAT_UNKNOWN = 0。若按指定格式获取相关信息,则将该参数值设置为对应的图片格式,支持的图片格式请参见图片格式、宽高对齐、内存约束。 |
| 返回值说明 | - img_info:dict,输出图片信息字典,包含图片宽、高、宽stride、高stride、解码后占用的内存大小、图片格式等信息。其中,输出图片格式,通过pixel_format参数返回。具体参见hi_img_info。 - ret:int,错误码。 - 0:成功。 - 非0:失败,参见VDEC视频/JPEGD图像解码返回码。 |
父主题: VDEC视频解码/JPEGD图像解码接口
JPEGE功能及约束说明
功能说明
JPEGE(JPEG Encoder)将YUV格式图片编码成JPEG压缩格式的图片文件,例如*.jpg。
图片分辨率约束
-
输入图片分辨率:
版本 分辨率范围 Atlas 200/500 A2推理产品 最大分辨率:16384*16384,最小分辨率:32*32。 -
输出图片分辨率
JPEGE只对图片编码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致。
图片格式、宽高对齐、内存约束
实现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),数据长度会长一点。
-
:::note 说明 输入图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念。 :::
表1 图片格式、宽高对齐、内存大小约束
输入图片格式 | 输入图片宽、高对齐要求 | 输入图片宽stride、高stride、内存大小要求 | 输出图片格式 |
|---|---|---|---|
YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽16对齐后的值,兼容对齐到16的倍数如128(按128对齐时,性能更优)。 高stride无需设置。 内存大小(单位Byte)= 宽stride * 高 * 3/2 | JPEG压缩格式的图片文件,例如*.jpg。 只支持huffman编码,不支持算术编码,不支持渐进编码。 |
YUV420SP NV21 8bit | |||
YUV422Packed YUYV 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽的两倍再16对齐后的值。 高stride无需设置。 内存大小(单位Byte)= 宽stride * 高 | |
YUV422Packed UYVY 8bit | |||
YUV422Packed YVYU 8bit | |||
YUV422Packed VYUY 8bit |
父主题: VENC视频/JPEGE图像编码接口
JPEGE性能指标说明
性能指标说明
1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。单个Device的基本场景性能指标参考如下(1路对应一个通道,一个通道对应一个线程):
表1 Atlas 200/500 A2推理产品性能规格数据
| 场景举例(输入图片格式:YUV420 8bit) | 总帧率 |
|---|---|
| 1080p*n路 | 256fps |
| 4k*n路 | 64fps |
父主题: VENC视频/JPEGE图像编码接口
VENC功能及约束说明
功能说明
VENC(Video Encoder)将YUV420SP NV12/NV21-8bit图片数据编码成H264/H265格式的视频码流。
分辨率约束
-
输入图片分辨率:
版本 分辨率范围 Atlas 200/500 A2推理产品 最大分辨率8192*8192,最小分辨率114*114 -
输出码流分辨率
VENC只对图片编码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致。
码流/图片格式、宽高对齐、内存约束
实现VENC视频编码功能时:
-
输入内存
需调用acl.himpi.dvpp_malloc接口申请Device上的输入内存,调用acl.himpi.dvpp_free接口释放输入内存,这部分内存的生命周期由用户自行管理。内存大小参见下表中的计算公式。
-
输出内存
不需要用户管理输出内存,由系统管理内存。
:::note 说明 输入图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念。 :::
表1 图片格式、宽高对齐、内存大小约束
输入图片格式 | 输入图片宽、高对齐要求 | 输入图片宽stride、高stride、内存大小要求 | 输出码流格式 |
|---|---|---|---|
YUV420SP NV12 8bit | 宽2对齐 高2对齐 | 宽stride为宽16对齐后的值。 高stride无需设置。 内存大小(单位Byte)= 宽stride * 高stride * 3/2 | |
YUV420SP NV21 8bit |
父主题: VENC视频/JPEGE图像编码接口
在线提单