0. 简介
这个模块是根据OveruseDetector模块计算出来的状态来维护码率控制模块的自动状态机,并更新估算出来的对端发送速率,提供给REMB进行反馈。
1. 原理
一共维持三个状态,增长、保持、衰减,状态转换根据OveruseDetector的三个状态(Normal, Overuse, Underuse)来进行判断。
- 当Overuse发生时,无论什么状态都进入衰减。
- 当Underuse发生时,无论什么状态都进入保持状态。
- 在保持和增长阶段,Normal状态将保持继续增长。
- 在衰减阶段,Normal状态会将状态拉回保持状态。
2. 代码
核心函数为ChangeBitrate,其他部分代码比较简单这里不贴了。
|
|
加性码率增长代码如下:
|
|
乘性部分比较简单,也是根据时间差来调整系数。
|
|
最后一个是最大均值和方差的更新,主要在衰减状态时候进行估计。
|
|