webrtc弱网-SendSideBandwidthEstimation类源码分析与算法原理(二)

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

一、UpdateEstimate 函数流程图

流程图说明:

  1. RTT退避检查:首先检查RTT是否超过限制,如果超过且满足降低间隔条件,则执行RTT退避算法。

  2. 启动阶段处理:如果是启动阶段(前2秒)且无丢包,优先使用REMB和延迟估计中的较大值。

  3. 估计器选择:根据V1/V2估计器的就绪状态选择相应的估计算法:

    • V1就绪:使用V1丢包估计器

    • V2就绪:使用V2丢包估计器

    • 都不就绪:使用传统丢包算法

  4. 传统丢包算法

    • 丢包率<2%:增加码率8% + 1kbps

    • 丢包率2%-10%:保持当前码率

    • 丢包率>10%:满足条件时按比例降低码率

  5. 最终处理:更新目标码率并应用上下限限制。

二、UpdateEstimate 状态转换图

状态转换说明:

  1. 初始状态:函数开始执行时的状态。

  2. RTT退避状态:当RTT超过限制时进入此状态,主动降低发送码率。

  3. 启动阶段:前2秒且无丢包的特殊处理阶段,优先使用外部估计值。

  4. 稳定运行状态:正常带宽估计阶段,根据估计器就绪情况选择不同路径。

  5. 估计器状态

    • V1估计器状态:使用V1丢包估计器进行计算

    • V2估计器状态:使用V2丢包估计器进行计算

    • 传统算法状态:使用传统丢包算法进行计算

  6. 传统算法子状态

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值