In RtcpTransceiver avoid generating rtcp sender reports for inactive senders

Bug: webrtc:8239
Change-Id: I97d50c628db04c56669179ab7039a3fe3bd61d34
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251901
Reviewed-by: Emil Lundmark <lndmrk@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36030}
This commit is contained in:
Danil Chapovalov
2022-02-18 17:01:26 +01:00
committed by WebRTC LUCI CQ
parent d15f3e1220
commit 8968bcae8d
2 changed files with 77 additions and 0 deletions

View File

@ -56,6 +56,7 @@ struct RtcpTransceiverImpl::RemoteSenderState {
struct RtcpTransceiverImpl::LocalSenderState {
uint32_t ssrc;
size_t last_num_sent_bytes = 0;
RtpStreamRtcpHandler* handler = nullptr;
};
@ -527,6 +528,17 @@ RtcpTransceiverImpl::CompoundPacketInfo RtcpTransceiverImpl::FillReports(
LocalSenderState& rtp_sender = *it;
RtpStreamRtcpHandler::RtpStats stats = rtp_sender.handler->SentStats();
if (stats.num_sent_bytes() < rtp_sender.last_num_sent_bytes) {
RTC_LOG(LS_ERROR) << "Inconsistent SR for SSRC " << rtp_sender.ssrc
<< ". Number of total sent bytes decreased.";
rtp_sender.last_num_sent_bytes = 0;
}
if (stats.num_sent_bytes() == rtp_sender.last_num_sent_bytes) {
// Skip because no RTP packet was send for this SSRC since last report.
continue;
}
rtp_sender.last_num_sent_bytes = stats.num_sent_bytes();
last_handled_sender_it = it;
rtcp::SenderReport sender_report;
sender_report.SetSenderSsrc(rtp_sender.ssrc);