一、概念說明
由於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/) 。