hi_mpi_venc_create_chn
函数功能
创建编码通道。
Atlas 200/300/500 推理产品,不支持该接口。
Atlas 训练系列产品,不支持该接口。
约束说明
- 单个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)分配,不是最终的播放器显示帧率,若想要设置显示帧率请参考hi_mpi_venc_set_h264_vui或hi_mpi_venc_set_h265_vui接口。
建议用户将码控帧率与显示帧率设置一致,否则播放时的码率可能与用户设置的编码码率不同,播放时的码率会随着所设置的显示帧率而变化。
函数原型
hi_s32 hi_mpi_venc_create_chn(hi_venc_chn chn, const hi_venc_chn_attr *attr)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
chn |
输入 |
编码通道号。 Atlas 推理系列产品(Ascend 310P处理器),编码通道号的取值范围:[0, 256),JPEGE功能和VENC功能共用通道,且通道总数最多256。 Atlas A2训练系列产品,编码通道号的取值范围:[0, 256),JPEGE功能通道总数最多256。 Atlas 200I/500 A2推理产品,编码通道号的取值范围:[0, 128),JPEGE功能和VENC功能共用通道,且通道总数最多128。
说明:
对于Atlas 推理系列产品(Ascend 310P处理器),昇腾虚拟化实例(Ascend Virtual Instance)场景下,VENC通道和JPEGE通道总数 = ( 被分配的VENC硬件单元+JPEGE硬件单元数量之和 / VENC硬件单元+JPEGE硬件单元总数之和 ) * 256,如果通道总数不为整数,则向下取整。 对于Atlas A2训练系列产品,昇腾虚拟化实例(Ascend Virtual Instance)场景下,JPEGE通道总数最多256。 对于Atlas 200I/500 A2推理产品,昇腾虚拟化实例(Ascend Virtual Instance)场景下,VENC通道 = ( 被分配的VENC硬件单元 / VENC硬件单元 ) * 128,如果通道总数不为整数,则向下取整。JPEGE的通道数不随算力影响,但JPEGE+VENC的总通道数最大128。 昇腾虚拟化实例(Ascend Virtual Instance)的详细描述,以及各场景下的算力资源规格请参见《昇腾虚拟化实例(AVI)用户指南》。 |
attr |
输入 |
编码通道属性的指针。 |
返回值说明
- 0:成功
- 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
参考信息
编码协议 |
编码方式 |
码流 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(暂不支持) |