Use TimeDelta to convert to to/from compact ntp time

Bug: webrtc:13757
Change-Id: I1c5f0a666da8e6b30291763d110ff049df573490
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256103
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36333}
This commit is contained in:
Danil Chapovalov
2022-03-24 18:59:40 +01:00
committed by WebRTC LUCI CQ
parent 1d6de1499c
commit 7ab3ecd4c2
8 changed files with 147 additions and 127 deletions

View File

@ -123,6 +123,12 @@ constexpr TimeDelta kReportPeriod = TimeDelta::Millis(10);
// Use finite timeout to fail tests rather than hang them.
constexpr int kAlmostForeverMs = 1000;
constexpr TimeDelta kTimePrecision = TimeDelta::Millis(1);
MATCHER_P(Near, value, "") {
return arg > value - kTimePrecision && arg < value + kTimePrecision;
}
// Helper to wait for an rtcp packet produced on a different thread/task queue.
class FakeRtcpTransport : public webrtc::Transport {
public:
@ -967,10 +973,12 @@ TEST(RtcpTransceiverImplTest,
// match result of ReceiveStatisticsProvider::RtcpReportBlocks callback,
// but for simplicity of the test asume it is the same.
ASSERT_EQ(report_blocks[0].source_ssrc(), kRemoteSsrc1);
EXPECT_EQ(CompactNtpRttToMs(report_blocks[0].delay_since_last_sr()), 200);
EXPECT_THAT(CompactNtpRttToTimeDelta(report_blocks[0].delay_since_last_sr()),
Near(TimeDelta::Millis(200)));
ASSERT_EQ(report_blocks[1].source_ssrc(), kRemoteSsrc2);
EXPECT_EQ(CompactNtpRttToMs(report_blocks[1].delay_since_last_sr()), 100);
EXPECT_THAT(CompactNtpRttToTimeDelta(report_blocks[1].delay_since_last_sr()),
Near(TimeDelta::Millis(100)));
}
TEST(RtcpTransceiverImplTest, MaySendMultipleReceiverReportInSinglePacket) {
@ -1330,11 +1338,12 @@ TEST(RtcpTransceiverImplTest, PassRttFromDlrrToLinkObserver) {
rtcp::ReceiveTimeInfo rti;
rti.ssrc = kSenderSsrc;
rti.last_rr = CompactNtp(config.clock->ConvertTimestampToNtpTime(send_time));
rti.delay_since_last_rr = SaturatedUsToCompactNtp(10'000); // 10ms
rti.delay_since_last_rr = SaturatedToCompactNtp(TimeDelta::Millis(10));
rtcp::ExtendedReports xr;
xr.AddDlrrItem(rti);
EXPECT_CALL(link_observer, OnRttUpdate(receive_time, TimeDelta::Millis(100)));
EXPECT_CALL(link_observer,
OnRttUpdate(receive_time, Near(TimeDelta::Millis(100))));
rtcp_transceiver.ReceivePacket(xr.Build(), receive_time);
}
@ -1351,15 +1360,15 @@ TEST(RtcpTransceiverImplTest, CalculatesRoundTripTimeFromReportBlocks) {
rtcp::ReportBlock rb1;
rb1.SetLastSr(CompactNtp(config.clock->ConvertTimestampToNtpTime(
receive_time - rtt - TimeDelta::Millis(10))));
rb1.SetDelayLastSr(SaturatedUsToCompactNtp(10'000)); // 10ms
rb1.SetDelayLastSr(SaturatedToCompactNtp(TimeDelta::Millis(10)));
rr.AddReportBlock(rb1);
rtcp::ReportBlock rb2;
rb2.SetLastSr(CompactNtp(config.clock->ConvertTimestampToNtpTime(
receive_time - rtt - TimeDelta::Millis(20))));
rb2.SetDelayLastSr(SaturatedUsToCompactNtp(20'000)); // 20ms
rb2.SetDelayLastSr(SaturatedToCompactNtp(TimeDelta::Millis(20)));
rr.AddReportBlock(rb2);
EXPECT_CALL(link_observer, OnRttUpdate(receive_time, rtt));
EXPECT_CALL(link_observer, OnRttUpdate(receive_time, Near(rtt)));
rtcp_transceiver.ReceivePacket(rr.Build(), receive_time);
}