一、概念说明
由于webrtc里面包含GCC、Sendside-BWE两种拥塞控制算法。M55之前用的是GCC,M55之后用的是Sendside-BWE。里面有很多概念梳理如下,以免混淆,不方便理解代码。
GCC | Sendside-BWE | |
---|---|---|
码控计算模块 | 接收端 | 发送端 |
RTP头部扩展 | AbsSendTime | TransportSequenceNumber |
接收端关键对象 | RemoteBitrateEstimatorAbsSendTime | RemoteEstimatorProxy |
网络延时滤波器 | Kalman Filter | Trendline Filter |
接收端反馈RTCP报文 | REMB | TransportCC |
二、BWE三个典型的算法
Google Congest Control(https://tools.ietf.org/html/draft-ietf-rmcat-gcc-02) 。
爱立信的SCEAM(https://github.com/EricssonResearch/scream) 。
MIT的SPROUT(http://aim.nms.lcs.mit.edu/papers/nsdi13-sprout.pdf)。
Mozilla的这篇文章讲述了拥塞控制算法演变的历史(https://blog.mozilla.org/webrtc/what-is-rmcat-congestion-control/) 。