Trigger rtt and stats update on report block rather than receiver report.

ReportBlock is the the real receiver report.
Triggering rtt update on ReportBlock support clients that send receiver
report blocks attached to SenderReport rather than ReceiverReport.

Bug: webrtc:7996
Change-Id: Ie826fa09fd1bf0e5256e995649f66811b5192761
Reviewed-on: https://webrtc-review.googlesource.com/4040
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20014}
This commit is contained in:
Danil Chapovalov
2017-09-27 13:25:24 +02:00
committed by Commit Bot
parent cff9ee650e
commit 760c4b4da9
4 changed files with 39 additions and 20 deletions

View File

@ -123,7 +123,7 @@ RTCPReceiver::RTCPReceiver(
xr_rrtr_status_(false),
xr_rr_rtt_ms_(0),
oldest_tmmbr_info_ms_(0),
last_received_rr_ms_(0),
last_received_rb_ms_(0),
last_increased_sequence_number_ms_(0),
stats_callback_(nullptr),
packet_type_counter_observer_(packet_type_counter_observer),
@ -146,9 +146,9 @@ void RTCPReceiver::IncomingPacket(const uint8_t* packet, size_t packet_size) {
TriggerCallbacksFromRtcpPacket(packet_information);
}
int64_t RTCPReceiver::LastReceivedReceiverReport() const {
int64_t RTCPReceiver::LastReceivedReportBlockMs() const {
rtc::CritScope lock(&rtcp_receiver_lock_);
return last_received_rr_ms_;
return last_received_rb_ms_;
}
void RTCPReceiver::SetRemoteSSRC(uint32_t ssrc) {
@ -422,8 +422,6 @@ void RTCPReceiver::HandleReceiverReport(const CommonHeader& rtcp_block,
return;
}
last_received_rr_ms_ = clock_->TimeInMilliseconds();
const uint32_t remote_ssrc = receiver_report.sender_ssrc();
packet_information->remote_ssrc = remote_ssrc;
@ -455,6 +453,8 @@ void RTCPReceiver::HandleReportBlock(const ReportBlock& report_block,
if (registered_ssrcs_.count(report_block.source_ssrc()) == 0)
return;
last_received_rb_ms_ = clock_->TimeInMilliseconds();
ReportBlockWithRtt* report_block_info =
&received_report_blocks_[report_block.source_ssrc()][remote_ssrc];
report_block_info->report_block.sender_ssrc = remote_ssrc;
@ -534,13 +534,13 @@ RTCPReceiver::TmmbrInformation* RTCPReceiver::GetTmmbrInformation(
bool RTCPReceiver::RtcpRrTimeout(int64_t rtcp_interval_ms) {
rtc::CritScope lock(&rtcp_receiver_lock_);
if (last_received_rr_ms_ == 0)
if (last_received_rb_ms_ == 0)
return false;
int64_t time_out_ms = kRrTimeoutIntervals * rtcp_interval_ms;
if (clock_->TimeInMilliseconds() > last_received_rr_ms_ + time_out_ms) {
if (clock_->TimeInMilliseconds() > last_received_rb_ms_ + time_out_ms) {
// Reset the timer to only trigger one log.
last_received_rr_ms_ = 0;
last_received_rb_ms_ = 0;
return true;
}
return false;