acl.himpi.venc_create_chn
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图像编码接口
VENC性能指标说明
性能指标说明
720p指分辨率为1280*720的图片;1080p指分辨率为1920*1080的图片;4K指分辨率为3840*2160的图片。
单个Device的基本场景性能指标参考如下(1路对应一个通道,一个通道对应一个线程):
表1 Atlas 200/500 A2推理产品参考性能指标
| 场景举例 | 总帧率 |
|---|---|
| 720p*n路(1≤n≤3) | n*400fps |
| 720p*n路(n>3) | 1200fps |
| 1080p*n路(1≤n≤3) | n*200fps |
| 1080p*n路(n>3) | 600fps |
| 4k*n路(1≤n≤3) | n*50fps |
| 4k*n路(n>3) | 150fps |
注:其它分辨率可以等量估算。
父主题: VENC视频/JPEGE图像编码接口
acl.himpi.venc_create_chn
| c函数原型 | hi_s32 hi_mpi_venc_create_chn(hi_venc_chn chn, const hi_venc_chn_attr *attr); |
|---|---|
| Python函数 | ret = acl.himpi.venc_create_chn(chn, attr) |
| 函数功能 | 创建编码通道。 |
| 输入说明 | - chn:编码通道号。 - Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。(说明:对于 Atlas 200/500 A2推理产品 , 昇腾虚拟化实例(Ascend Virtual Instance)场景下,VENC通道 = ( 被分配的VENC硬件单元 / VENC硬件单元 ) * 128,如果通道总数不为整数,则向下取整。JPEGE的通道数不随算力影响,但JPEGE+VENC的总通道数最大128。) - attr:编码通道属性字典,具体请参见hi_venc_chn_attr。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VENC视频/JPEGE图像编码返回码。 |
| 约束说明 | - 单个Device上的通道号不能超出最大的通道号范围。 - 编码通道属性由三部分组成,编码器属性、码率控制器属性和帧结构类型属性,帧结构类型属性简称GOP(Group of Pictures )类型属性。 - 编码器属性必须设置编码码流buffer深度、获取码流方式、编码profile等,表1详细描述了各种协议的各项属性的特性。 - 推荐的编码宽高为:3840*2160(4k)、1920*1080(1080P)、1280*720(720P)。 - H.264/H.265编码帧存由YHeaderSize、CHeaderSize、YSize、CSize、PmeSize、PmeInfoSize和TmvSize共同构成,编码器默认根据最大宽高计算帧存进行内存分配,在设置通道宽高时需保证根据通道宽高计算的每一部分帧存大小都不能大于最大宽高计算的帧存大小。 - 码率控制器属性中的输入/输出帧率(src_frame_rate/dst_frame_rate)是用于配合编码过程中的码率(bit_rate)分配,不是最终的播放器显示帧率,若想要设置显示帧率请参考acl.himpi.venc_set_h264_vui或acl.himpi.venc_set_h265_vui接口。 建议用户将码控帧率与显示帧率设置一致,否则播放时的码率可能与用户设置的编码码率不同,播放时的码率会随着所设置的显示帧率而变化。 |
| 参考资源 | 接口调用流程,参见JPEGE图片编码、VENC视频编码。 |
参考信息
表1 编码器属性的约束
编码协议 | 编码方式 | 码流 buffer 深度 | 获取码流模式 | 编码 profile |
|---|---|---|---|---|
H.264 | Frame | Frame/Slice | Baseline Mainprofile Highprofile | |
JPEG | Frame | Frame/Ecs | Baseline | |
H.265 | Frame | Frame/Slice | Main profile Main 10 profile(暂不支持) | |
Frame/Slice | Main 10 profile(暂不支持) |
父主题: VENC视频/JPEGE图像编码接口
acl.himpi.venc_destroy_chn
| c函数原型 | hi_s32 hi_mpi_venc_destroy_chn(hi_venc_chn chn); |
|---|---|
| Python函数 | ret = acl.himpi.venc_destroy_chn(chn) |
| 函数功能 | 用户退出编码流程时,需要关闭之前打开的编码通道,以释放相关资源。 |
| 输入说明 | chn:编码通道号。 - Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VENC视频/JPEGE图像编码返回码。 |
| 约束说明 | - 销毁并不存在的通道,返回失败。 - 销毁前必须停止接收图像,否则返回失败。 |
| 参考资源 | 接口调用流程,参见JPEGE图片编码、VENC视频编码。 |
父主题: VENC视频/JPEGE图像编码接口
acl.himpi.venc_start_chn
| c函数原型 | hi_s32 hi_mpi_venc_start_chn (hi_venc_chn chn, const hi_venc_start_param *recv_param); |
|---|---|
| Python函数 | ret = acl.himpi.venc_start_chn(chn, recv_param) |
| 函数功能 | 开启编码通道接收输入图片,允许指定接收帧数,超出指定的帧数后自动停止接收图像。 |
| 输入说明 | - chn:编码通道号。 - Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 - recv_param:接收图像参数字典,用于指定需要接收的图像帧数。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VENC视频/JPEGE图像编码返回码。 |
| 约束说明 | - 如果通道未创建,则返回错误码HI_ERR_VENC_UNEXIST。 - 需要接收的图像帧数设置为-1时表示不指定帧数。 - 如果通道已经开始接收图像,没有停止接收图像前再一次调用此接口指定接收帧数,返回操作不允许。 - 如果通道已经开始接收图像,没有停止接收图像前允许再一次调用此接口不指定接收帧数。 - 只有开启接收之后编码器才开始接收图像编码。 |
| 参考资源 | 接口调用流程,参见JPEGE图片编码、VENC视频编码。 |
父主题: VENC视频/JPEGE图像编码接口
acl.himpi.venc_stop_chn
| c函数原型 | hi_s32 hi_mpi_venc_stop_chn(hi_venc_chn chn); |
|---|---|
| Python函数 | ret= acl.himpi.venc_stop_chn(chn) |
| 函数功能 | 停止编码通道接收输入图片。 |
| 输入说明 | chn:编码通道号。 - Atlas 200/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见VENC视频/JPEGE图像编码返回码。 |
| 约束说明 | - 如果通道未创建,则返回失败。 - 此接口并不判断当前是否停止接收,即允许重复停止接收不返回错误。 - 此接口用于编码通道停止接收图像来编码,在编码通道销毁或复位前必须停止接收图像。 - 调用此接口仅停止接收原始数据编码,码流buffer并不会被清除。 |
| 参考资源 | 接口调用流程,参见JPEGE图片编码、VENC视频编码。 |
父主题: VENC视频/JPEGE图像编码接口
在线提单