vbv的一个重要的参数,buffer_fill,当前水位。buffer_fill_cur 当前码控的当前水位。
每次编码完一帧,buffer_fill会更新。被函数update_vbv_plan。初始化的时候这个值是0.9,根据 buffer_size * buffer_init得到buffer_fill。 后面就靠自己慢慢调整了。
update_vbv_plan, 提前计算好,当前编码线程还有多少buffer_fill, 水位在哪里。
每次编码完一帧,执行x264_rate_control_end() 更新编码完的一帧size给vbv模型
这里后向vbv,稍微绕一点,就是要把当前正在编码的帧都考虑进去,而且是用的预测值。