hi_venc_intra_refresh

说明

P帧刷Islice控制参数。

定义

typedef struct {
    hi_bool                    refresh_enable;
    hi_venc_intra_refresh_mode intra_refresh_mode;
    hi_u32                     refresh_num;
    hi_u32                     req_i_qp;
} hi_venc_intra_refresh;

成员

成员名称

描述

refresh_enable

是否使能刷Islice功能。

  • 0:不使能,默认值;
  • 1:使能 。

intra_refresh_mode

I宏块刷新模式,分为按行刷新和按列刷新。默认按行刷新。

仅支持按行刷新。

refresh_num

每次I宏块刷新行数或者列数,可以通过这个变量控制刷新的速度及码流的平稳程度。刷新行数或者列数越多,刷新的速度越快,但是码流平稳度越差;刷新的行数或者列数越少,刷新的速度越慢,但是码流平稳度越好。

需保证设置的refresh_num可以在一个GOP内完成Islice刷新,注意高级跳帧参考时只会在base层中的P帧(可被base层中其他帧的参考)进行刷新。refresh_num需满足表1中的计算公式。

req_i_qp

I帧QP值。

hi_mpi_venc_set_intra_refresh接口与hi_mpi_venc_request_idr接口配合使用时,该值用于控制插入的IDR帧的质量,该值越小,质量越好,插入的IDR帧大小越大。

取值范围:[0, 51] ,默认值51。

参考信息

表1 refresh_num参数值计算公式

-

计算公式

备注

H.264,refresh_num默认值为:

(pic_height +lcu_size-1)>>6

  • 行:refresh_num*(max_refresh_frame_in_gop - 1) >= (pic_height + lcu_size - 1) /lcu_size
  • 列:refresh_num*(max_refresh_frame_in_gop - 1) >= (pic_width + lcu_size - 1) /lcu_size

计算公式中的/表示向下取整。

  • GOP内P帧刷Islice最大帧数max_refresh_frame_in_gop参数值取值说明:
    • 无高级跳帧参考时:max_refresh_frame_in_gop = gop;
    • 有高级跳帧参考时:max_refresh_frame_in_gop = (gop + (base*(enhance+1) -1))/(base*(enhance+1))。
  • 编码单元尺寸lcu_size参数值取值说明:
    • H.264时,该参数值固定为16;
    • H.265时,该参数值固定为64。

H.265,refresh_num默认值为: ((pic_height + lcu_size - 1)/lcu_size) >> 2