hi_mpi_venc_set_chn_attr
产品支持情况
产品  | 
是否支持  | 
|---|---|
x  | 
|
x  | 
|
√  | 
|
√  | 
|
x  | 
|
x  | 
功能说明
本接口用于设置编码通道的属性。
函数原型
hi_s32 hi_mpi_venc_set_chn_attr(hi_venc_chn chn, const hi_venc_chn_attr *chn_attr)
参数说明
参数名  | 
输入/输出  | 
说明  | 
|---|---|---|
chn  | 
输入  | 
编码通道号。  | 
chn_attr  | 
输入  | 
编码通道属性的指针。  | 
返回值说明
- 0:成功
 - 非0:失败,参见VENC视频编码/JPEGE图片编码返回码
 
约束说明
- 仅H.265/H.264编码通道支持。
 - 建议用户在调用此接口之前先调用hi_mpi_venc_get_chn_attr接口,获取当前通道属性,然后再进行设置。
 - 编码通道属性包括了编码器属性、帧结构GOP属性和码率控制器RC属性三部分。编码通道属性分为动态属性和静态属性两种。其中,静态属性的属性值在通道创建时配置,在通道创建之后不能被修改;动态属性的属性值在通道创建时配置,有部分参数不支持修改,支持修改的参数在通道销毁之前可以被修改。如果设置静态属性或者不支持修改的参数,则返回失败。静态属性、属性是否支持修改、属性取值范围具体请参见hi_venc_chn_attr。
 - 设置编码通道属性,未修改gop_mode时,则通道属性立即生效;修改gop_mode时,则通道属性延时生效,最大延时生效时间如下表所示(当前不支持HI_VENC_GOP_MODE_LOW_DELAY_B模式):
gop_mode修改前
gop_mode修改后
最大延时(以编码帧的个数为单位)
HI_VENC_GOP_MODE_LOW_DELAY_B
非HI_VENC_GOP_MODE_LOW_DELAY_B
1+b_frame_num
非HI_VENC_GOP_MODE_LOW_DELAY_B
任意不同于改变前的gop_mode
1
 - 修改gop_mode时,通道的P帧刷I Slice、跳帧参考的属性( H.264/H.265 )、pic_order_cnt_type( H.264 )会恢复默认值,如需继续使用需要重新配置。
 - 如果修改GOP、RC属性中的一种,RC模块会重新初始化,所有RC高级参数都恢复到默认值。如果客户程序中有对RC高级参数的调整,需要重新设置。 RC高级参数请参考hi_mpi_venc_set_rc_param等。
 - 如果同时修改gop_mode和rc_mode时,由于存在延迟生效(延时参见上表),为了防止调用hi_mpi_venc_get_rc_param获取的RC参数值不准确,建议等待延迟参数生效后再执行相应操作。
 - 调用本接口可修改VENC视频编码时的通道宽度pic_width和高度pic_height,但需注意:
- 调用本接口修改宽、高时,若系统内部还缓存着未编码完的视频数据,这时系统会丢弃缓存的视频数据,导致该部分数据丢失。
 - 调用本接口修改宽、高后,通过hi_mpi_venc_send_frame下发的width、height参数值需要和修改后的pic_width、pic_height参数值一致。
 - 如果在调用hi_mpi_venc_get_stream与hi_mpi_venc_release_stream之间修改宽、高,那么hi_mpi_venc_release_stream接口释放刚接收的码流时会返回HI_ERR_VENC_ILLEGAL_PARAM错误码。