关于WebRTC/SR(发送者报告)的内容可以通过阅读以下链接来查看,本文重点研究WebRTC源码中RTCP报文构造和发送,以及相关的数据从何而来。在发送端,RTCP以周期性发送为基准,辅以RTP报文发送时的及时发送和REMB报文的立即发送。发送过程主要包括Feedback信息获取、RTCP报文构造、序列化和发送。
ModuleProcess线程周期性调用ModuleRtpRtcpImpl::Process()函数,每5ms执行一次。
void ModuleRtpRtcpImpl::Process() {//added by wanggeng//@beginif(!enable_process_){usleep(100000);return ;}//@endconst int64_t now = clock_->TimeInMilliseconds();last_process_time_ = now;const int64_t kRtpRtcpBitrateProcessTimeMs = 10;if (now >= last_bitrate_process_time_ + kRtpRtcpBitrateProcessTimeMs) {rtp_sender_.ProcessBitrate();last_bitrate_process_time_ = now;}const int64_t kRtpRtcpRttProcessTimeMs = 1000;bool process_rtt &