diff --git a/modules/rtp_rtcp/source/rtcp_receiver.cc b/modules/rtp_rtcp/source/rtcp_receiver.cc index cff7468af6..91c88e2ca7 100644 --- a/modules/rtp_rtcp/source/rtcp_receiver.cc +++ b/modules/rtp_rtcp/source/rtcp_receiver.cc @@ -502,12 +502,12 @@ void RTCPReceiver::HandleReportBlock(const ReportBlock& report_block, report_block_info->last_rtt_ms = rtt_ms; report_block_info->sum_rtt_ms += rtt_ms; ++report_block_info->num_rtts; + + packet_information->rtt_ms = rtt_ms; } TRACE_COUNTER_ID1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RR_RTT", report_block.source_ssrc(), rtt_ms); - - packet_information->rtt_ms = rtt_ms; packet_information->report_blocks.push_back(report_block_info->report_block); } diff --git a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc index fb09ee1b7b..85337a9bbb 100644 --- a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc +++ b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc @@ -264,6 +264,33 @@ TEST_F(RtcpReceiverTest, InjectSrPacketCalculatesNegativeRTTAsOne) { EXPECT_EQ(1, rtt_ms); } +TEST_F( + RtcpReceiverTest, + TwoReportBlocksWithLastOneWithoutLastSrCalculatesRttForBandwidthObserver) { + const int64_t kRttMs = 120; + const uint32_t kDelayNtp = 123000; + const int64_t kDelayMs = CompactNtpRttToMs(kDelayNtp); + + uint32_t sent_ntp = CompactNtp(system_clock_.CurrentNtpTime()); + system_clock_.AdvanceTimeMilliseconds(kRttMs + kDelayMs); + + rtcp::SenderReport sr; + sr.SetSenderSsrc(kSenderSsrc); + rtcp::ReportBlock block; + block.SetMediaSsrc(kReceiverMainSsrc); + block.SetLastSr(sent_ntp); + block.SetDelayLastSr(kDelayNtp); + sr.AddReportBlock(block); + block.SetMediaSsrc(kReceiverExtraSsrc); + block.SetLastSr(0); + sr.AddReportBlock(block); + + EXPECT_CALL(rtp_rtcp_impl_, OnReceivedRtcpReportBlocks(SizeIs(2))); + EXPECT_CALL(bandwidth_observer_, + OnReceivedRtcpReceiverReport(SizeIs(2), kRttMs, _)); + InjectRtcpPacket(sr); +} + TEST_F(RtcpReceiverTest, InjectRrPacket) { int64_t now = system_clock_.TimeInMilliseconds(); rtcp::ReceiverReport rr;