函数功能
创建编码通道。
昇腾310 AI处理器,当前版本该接口预留。
约束说明
- 单个Device上的通道号不能超出最大的通道号范围。
- 编码通道属性由三部分组成,编码器属性、码率控制器属性和帧结构类型属性,帧结构类型属性简称GOP(Group of Pictures )类型属性。
- 编码器属性最大宽高,通道宽高必须满足如下约束:
max_pic_width∈[MIN_WIDTH, MAX_WIDTH]
max_pic_height∈[MIN_HEIGHT, MAX_HEIGHT]
pic_width∈[MIN_WIDTH, MAX_WIDTH]
pic_height∈[MIN_HEIGHT, MAX_HEIGHT]
VENC的最大宽高,通道宽高必须是MIN_ALIGN的整数倍,JPEGE的最大宽度,通道宽度必须是MIN_ALIGN的整数倍。
其中MIN_WIDTH、MAX_WIDTH、MIN_HEIGHT、MAX_HEIGHT、MIN_ALIGN分别表示编码通道支持的最小宽度、最大宽度、最小高度、最大高度、最小对齐单元(像素)。
编码器支持通道宽高见表1。
- 编码器属性必须设置编码码流buffer深度、获取码流方式、编码profile等,表2详细描述了各种协议的各项属性的特性。
- 推荐的编码宽高为:
昇腾310 AI处理器上,推荐1920x1080(1080P)、1280x720(720P)。
- 编码器属性中除通道宽高(pic_width和pic_height)外都是静态属性,一旦创建编码通道成功,静态属性不支持被修改,除非该通道被销毁,重新创建。
- H.264/H.265编码帧存由YHeaderSize、CHeaderSize、YSize、CSize、PmeSize、PmeInfoSize和TmvSize共同构成,编码器默认根据最大宽高计算帧存进行内存分配,在设置通道宽高时需保证根据通道宽高计算的每一部分帧存大小都不能大于最大宽高计算的帧存大小。
- JPEG通道宽高的设置要满足:pic_width*pic_height<= max_pic_width*max_pic_height。
- 码率控制器属性首先需要配置RC(Rate Control)模式,JPEG不需要配置码率控制器属性,其它协议类型通道(H.264/H.265)都必须配置。码率控制器属性RC模式必须与编码器属性协议类型匹配。
- 两种编码协议(H.264/H.265),码率控制有以下模式:CBR(Constant Bit Rate)、VBR(Variable Bit Rate)、AVBR(Adaptive Variable Bit Rate)、QVBR(Quality Variable Bit Rate)、CVBR(Constrained Variable Bit Rate)、QPMAP(Quantization Parameter Map) 和 FIXQP(Fix Quantization Parameter),昇腾310 AI处理器支持CBR、VBR模式。并且对于不同协议,相同 RC 模式的属性变量基本一致。表3介绍了几种RC模式的公共的属性。
- CBR除了上述的属性之外,还需要设置平均比特率。平均比特率的单位是kbps。平均比特率的设置与编码通道宽高以及图像帧率都有关系。典型的平均比特率的设置如下表所示。注意,表4中的平均比特率的设置是在通道编码帧率为满帧率(30fps)时的设置。当用户设置编码输出帧率不为满帧率时,可以对下表中的码率按用户设置帧率与满帧率(30fps)的比例进行换算。
- VBR除了上述属性之外,还需要设置MaxBitRate,表示编码通道在码率统计时间内允许的最大码率。
参数说明
参数名 |
输入/输出 |
说明 |
chn |
输入 |
编码通道号。 在昇腾310 AI处理器上,编码通道号固定为0。 typedef hi_s32 hi_venc_chn; |
attr |
输入 |
编码通道属性指针。 |
其它参考信息
表1 编码通道宽高
W/H (pixel) |
H.264 |
H.265 |
JPEG |
MIN_WIDTH |
128 |
128 |
32 |
MAX_WIDTH |
4096 |
4096 |
8192 |
MIN_HEIGHT |
128 |
128 |
32 |
MAX_HEIGHT |
4096 |
4096 |
8192 |
MIN_ALIGN |
2 |
2 |
2 |
表2 编码器属性的约束
编码协议 |
编码方式 |
码流 buffer 深度 |
获取码流模式 |
编码 profile |
H.264 |
Frame |
- 当 mini_buf_mode=0时,Buffer≥ max_pic_width*max_pic_height*3/4;
- 当 mini_buf_mode=1
时,Buffer≥32*1024 Byte;
|
Frame/Slice |
Baseline Mainprofile Highprofile |
JPEG |
Frame |
- mini_buf_mode=0 时,如果原图格式为YUV420,Buffer最小值为原图宽16对齐*原图高16对齐*3/2 ;如果原图格式为YUV422 Packed,Buffer最小值为原图宽16对齐*原图高16对齐*2
- mini_buf_mode=1 时,Buffer≥32*1024 Byte;
|
Frame/Ecs |
Baseline |
H.265 |
Frame |
- mini_buf_mode=0时,Buffer≥ max_pic_width*max_pic_height*3/4;
- mini_buf_mode=1时,Buffer≥32*1024 Byte
|
Frame/Slice |
Main profile Main 10 profile(暂不支持) |
- mini_buf_mode=0时,Buffer≥ max_pic_width*max_pic_height*(3/4)*(5/4);
- mini_buf_mode=1
时,Buffer≥32*1024 Byte
|
Frame/Slice |
Main 10 profile(暂不支持) |
表3 码率控制器属性的约束
RC 模式 |
GOP |
StatTime(s) |
FrmRate(src_frame_rate/dst_frame_rate) |
CBR |
≥1 |
≥1 |
src_frame_rate ≥ dst_frame_rate |
VBR |
≥1 |
≥1 |
src_frame_rate ≥ dst_frame_rate |
AVBR |
≥1 |
≥1 |
src_frame_rate ≥ dst_frame_rate |
FIXQP |
≥1 |
≥1 |
src_frame_rate ≥ dst_frame_rate |
QPMAP |
≥1 |
≥1 |
src_frame_rate ≥ dst_frame_rate |
表4 典型平均比特率配置
图像宽高/码率等级 |
1080p(1920x1080) |
4K(3840x2160) |
低码率 |
<2Mbps |
<8Mbps |
中码率 |
2Mbps~8Mbps |
8Mbps~30Mbps |
高码率 |
>8Mbps |
>30Mbps |