SendSideBandwidthEstimation 是 WebRTC 中用于发送端带宽估计的核心类,它负责根据网络反馈(如丢包、延迟、接收端限制等)动态调整发送码率。上一节主要分析了SendSideBandwidthEstimation类的整体流程。本节进一步深入该类的重要函数UpdateEstimate及算法原理。
一、UpdateEstimate 函数流程图

流程图说明:
-
RTT退避检查:首先检查RTT是否超过限制,如果超过且满足降低间隔条件,则执行RTT退避算法。
-
启动阶段处理:如果是启动阶段(前2秒)且无丢包,优先使用REMB和延迟估计中的较大值。
-
估计器选择:根据V1/V2估计器的就绪状态选择相应的估计算法:
-
V1就绪:使用V1丢包估计器
-
V2就绪:使用V2丢包估计器
-
都不就绪:使用传统丢包算法
-
-
传统丢包算法:
-
丢包率<2%:增加码率8% + 1kbps
-
丢包率2%-10%:保持当前码率
-
丢包率>10%:满足条件时按比例降低码率
-
-
最终处理:更新目标码率并应用上下限限制。
二、UpdateEstimate 状态转换图

状态转换说明:
-
初始状态:函数开始执行时的状态。
-
RTT退避状态:当RTT超过限制时进入此状态,主动降低发送码率。
-
启动阶段:前2秒且无丢包的特殊处理阶段,优先使用外部估计值。
-
稳定运行状态:正常带宽估计阶段,根据估计器就绪情况选择不同路径。
-
估计器状态:
-
V1估计器状态:使用V1丢包估计器进行计算
-
V2估计器状态:使用V2丢包估计器进行计算
-
传统算法状态:使用传统丢包算法进行计算
-
-
传统算法子状态:

最低0.47元/天 解锁文章
627

被折叠的 条评论
为什么被折叠?



