Use the injected clock in rtcp_transciever.
Bug: webrtc:11327 Change-Id: Idb02842f2eb679f972c0449a01a81a26ceb85827 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219789 Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Paul Hallak <phallak@google.com> Cr-Commit-Position: refs/heads/master@{#34080}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
61a287a3cb
commit
fe3dd51f32
@ -40,7 +40,7 @@ namespace webrtc {
|
||||
namespace {
|
||||
|
||||
struct SenderReportTimes {
|
||||
int64_t local_received_time_us;
|
||||
Timestamp local_received_time;
|
||||
NtpTime remote_sent_time;
|
||||
};
|
||||
|
||||
@ -133,13 +133,13 @@ void RtcpTransceiverImpl::SetReadyToSend(bool ready) {
|
||||
}
|
||||
|
||||
void RtcpTransceiverImpl::ReceivePacket(rtc::ArrayView<const uint8_t> packet,
|
||||
int64_t now_us) {
|
||||
Timestamp now) {
|
||||
while (!packet.empty()) {
|
||||
rtcp::CommonHeader rtcp_block;
|
||||
if (!rtcp_block.Parse(packet.data(), packet.size()))
|
||||
return;
|
||||
|
||||
HandleReceivedPacket(rtcp_block, now_us);
|
||||
HandleReceivedPacket(rtcp_block, now);
|
||||
|
||||
// TODO(danilchap): Use packet.remove_prefix() when that function exists.
|
||||
packet = packet.subview(rtcp_block.packet_size());
|
||||
@ -228,16 +228,16 @@ void RtcpTransceiverImpl::SendFullIntraRequest(
|
||||
|
||||
void RtcpTransceiverImpl::HandleReceivedPacket(
|
||||
const rtcp::CommonHeader& rtcp_packet_header,
|
||||
int64_t now_us) {
|
||||
Timestamp now) {
|
||||
switch (rtcp_packet_header.type()) {
|
||||
case rtcp::Bye::kPacketType:
|
||||
HandleBye(rtcp_packet_header);
|
||||
break;
|
||||
case rtcp::SenderReport::kPacketType:
|
||||
HandleSenderReport(rtcp_packet_header, now_us);
|
||||
HandleSenderReport(rtcp_packet_header, now);
|
||||
break;
|
||||
case rtcp::ExtendedReports::kPacketType:
|
||||
HandleExtendedReports(rtcp_packet_header, now_us);
|
||||
HandleExtendedReports(rtcp_packet_header, now);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -256,17 +256,14 @@ void RtcpTransceiverImpl::HandleBye(
|
||||
|
||||
void RtcpTransceiverImpl::HandleSenderReport(
|
||||
const rtcp::CommonHeader& rtcp_packet_header,
|
||||
int64_t now_us) {
|
||||
Timestamp now) {
|
||||
rtcp::SenderReport sender_report;
|
||||
if (!sender_report.Parse(rtcp_packet_header))
|
||||
return;
|
||||
RemoteSenderState& remote_sender =
|
||||
remote_senders_[sender_report.sender_ssrc()];
|
||||
absl::optional<SenderReportTimes>& last =
|
||||
remote_sender.last_received_sender_report;
|
||||
last.emplace();
|
||||
last->local_received_time_us = now_us;
|
||||
last->remote_sent_time = sender_report.ntp();
|
||||
remote_sender.last_received_sender_report =
|
||||
absl::optional<SenderReportTimes>({now, sender_report.ntp()});
|
||||
|
||||
for (MediaReceiverRtcpObserver* observer : remote_sender.observers)
|
||||
observer->OnSenderReport(sender_report.sender_ssrc(), sender_report.ntp(),
|
||||
@ -275,26 +272,27 @@ void RtcpTransceiverImpl::HandleSenderReport(
|
||||
|
||||
void RtcpTransceiverImpl::HandleExtendedReports(
|
||||
const rtcp::CommonHeader& rtcp_packet_header,
|
||||
int64_t now_us) {
|
||||
Timestamp now) {
|
||||
rtcp::ExtendedReports extended_reports;
|
||||
if (!extended_reports.Parse(rtcp_packet_header))
|
||||
return;
|
||||
|
||||
if (extended_reports.dlrr())
|
||||
HandleDlrr(extended_reports.dlrr(), now_us);
|
||||
HandleDlrr(extended_reports.dlrr(), now);
|
||||
|
||||
if (extended_reports.target_bitrate())
|
||||
HandleTargetBitrate(*extended_reports.target_bitrate(),
|
||||
extended_reports.sender_ssrc());
|
||||
}
|
||||
|
||||
void RtcpTransceiverImpl::HandleDlrr(const rtcp::Dlrr& dlrr, int64_t now_us) {
|
||||
void RtcpTransceiverImpl::HandleDlrr(const rtcp::Dlrr& dlrr, Timestamp now) {
|
||||
if (!config_.non_sender_rtt_measurement || config_.rtt_observer == nullptr)
|
||||
return;
|
||||
|
||||
// Delay and last_rr are transferred using 32bit compact ntp resolution.
|
||||
// Convert packet arrival time to same format through 64bit ntp format.
|
||||
uint32_t receive_time_ntp = CompactNtp(TimeMicrosToNtp(now_us));
|
||||
uint32_t receive_time_ntp =
|
||||
CompactNtp(config_.clock->ConvertTimestampToNtpTime(now));
|
||||
for (const rtcp::ReceiveTimeInfo& rti : dlrr.sub_blocks()) {
|
||||
if (rti.ssrc != config_.feedback_ssrc)
|
||||
continue;
|
||||
@ -353,10 +351,10 @@ void RtcpTransceiverImpl::SchedulePeriodicCompoundPackets(int64_t delay_ms) {
|
||||
void RtcpTransceiverImpl::CreateCompoundPacket(PacketSender* sender) {
|
||||
RTC_DCHECK(sender->IsEmpty());
|
||||
const uint32_t sender_ssrc = config_.feedback_ssrc;
|
||||
int64_t now_us = rtc::TimeMicros();
|
||||
Timestamp now = config_.clock->CurrentTime();
|
||||
rtcp::ReceiverReport receiver_report;
|
||||
receiver_report.SetSenderSsrc(sender_ssrc);
|
||||
receiver_report.SetReportBlocks(CreateReportBlocks(now_us));
|
||||
receiver_report.SetReportBlocks(CreateReportBlocks(now));
|
||||
sender->AppendPacket(receiver_report);
|
||||
|
||||
if (!config_.cname.empty()) {
|
||||
@ -377,7 +375,7 @@ void RtcpTransceiverImpl::CreateCompoundPacket(PacketSender* sender) {
|
||||
rtcp::ExtendedReports xr;
|
||||
|
||||
rtcp::Rrtr rrtr;
|
||||
rrtr.SetNtp(TimeMicrosToNtp(now_us));
|
||||
rrtr.SetNtp(config_.clock->ConvertTimestampToNtpTime(now));
|
||||
xr.SetRrtr(rrtr);
|
||||
|
||||
xr.SetSenderSsrc(sender_ssrc);
|
||||
@ -428,7 +426,7 @@ void RtcpTransceiverImpl::SendImmediateFeedback(
|
||||
}
|
||||
|
||||
std::vector<rtcp::ReportBlock> RtcpTransceiverImpl::CreateReportBlocks(
|
||||
int64_t now_us) {
|
||||
Timestamp now) {
|
||||
if (!config_.receive_statistics)
|
||||
return {};
|
||||
// TODO(danilchap): Support sending more than
|
||||
@ -448,7 +446,7 @@ std::vector<rtcp::ReportBlock> RtcpTransceiverImpl::CreateReportBlocks(
|
||||
*it->second.last_received_sender_report;
|
||||
last_sr = CompactNtp(last_sender_report.remote_sent_time);
|
||||
last_delay = SaturatedUsToCompactNtp(
|
||||
now_us - last_sender_report.local_received_time_us);
|
||||
now.us() - last_sender_report.local_received_time.us());
|
||||
report_block.SetLastSr(last_sr);
|
||||
report_block.SetDelayLastSr(last_delay);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user