WebRtc音视频实时通信--发送端拥塞控制之IntervalBudget代码走读

IntervalBudget简介:


IntervalBudget作为PacedSender的一个成员变量media_budget_,其主要作用是根据当前PacedSender->Process的调用时间间隔和当前目标码率target bitrate来计算出本次Process理应发送的字节数,

如当前码率是100 000bps,本次Process调用与上次调用间隔是20ms, 则本次理应发送的字节数是 100 bits per ms * 20 ms = 2000 bits = 250bytes.

250bytes为本次发送理应发送的字节数,但因为实际上我们的RTP包是差不多一个MTU大小的(<1500字节-IP头-udp头),我们不可能真正在本次发送250bytes的数据,因此可能会导致比理应发送的数据量多或少的问题。如何解决这个问题呢?

IntervalBudget中引入了一个bytes_remaining_的变量来记录上次发送后,与理应发送数据量相比,多或少发了多少。其值为负表示上轮我们实际发送的比理应发送的数据量多了,我们本轮应该停止发送。其值为正表示我们上轮实际发送比理应发送的要少,还有富于。

实质上IntervalBudget就是用来在发送前估计我们本轮是否应该发送数据的。若发送间隔过小,比如5ms,在100kbps带宽下对应数据量是5ms * 100 bits per ms = 500 bits /8 = 63bytes.

IntervalBudget代码走读:


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值