Index: webrtc/system_wrappers/source/rtp_to_ntp.cc |
diff --git a/webrtc/system_wrappers/source/rtp_to_ntp.cc b/webrtc/system_wrappers/source/rtp_to_ntp.cc |
index 8290749f132390e0de9ad409030daf79957b9c33..cbd5020a1f0fadf6247c0b7d114765a9c2710503 100644 |
--- a/webrtc/system_wrappers/source/rtp_to_ntp.cc |
+++ b/webrtc/system_wrappers/source/rtp_to_ntp.cc |
@@ -15,6 +15,9 @@ |
namespace webrtc { |
namespace { |
+// Number of RTCP SR reports to use to map between RTP and NTP. |
+const size_t kNumRtcpReportsToUse = 2; |
+ |
// Calculates the RTP timestamp frequency from two pairs of NTP/RTP timestamps. |
bool CalculateFrequency(int64_t rtcp_ntp_ms1, |
uint32_t rtp_timestamp1, |
@@ -45,19 +48,17 @@ bool CompensateForWrapAround(uint32_t new_timestamp, |
} // namespace |
// Class holding RTP and NTP timestamp from a RTCP SR report. |
-RtcpMeasurement::RtcpMeasurement() |
- : ntp_secs(0), ntp_frac(0), rtp_timestamp(0) {} |
+RtcpMeasurement::RtcpMeasurement() : ntp_time(0, 0), rtp_timestamp(0) {} |
RtcpMeasurement::RtcpMeasurement(uint32_t ntp_secs, |
uint32_t ntp_frac, |
uint32_t timestamp) |
- : ntp_secs(ntp_secs), ntp_frac(ntp_frac), rtp_timestamp(timestamp) {} |
+ : ntp_time(ntp_secs, ntp_frac), rtp_timestamp(timestamp) {} |
bool RtcpMeasurement::IsEqual(const RtcpMeasurement& other) const { |
// Use || since two equal timestamps will result in zero frequency and in |
// RtpToNtpMs, |rtp_timestamp_ms| is estimated by dividing by the frequency. |
- return (ntp_secs == other.ntp_secs && ntp_frac == other.ntp_frac) || |
- (rtp_timestamp == other.rtp_timestamp); |
+ return (ntp_time == other.ntp_time) || (rtp_timestamp == other.rtp_timestamp); |
} |
// Class holding list of RTP and NTP timestamp pairs. |
@@ -73,13 +74,12 @@ bool RtcpMeasurements::Contains(const RtcpMeasurement& other) const { |
} |
bool RtcpMeasurements::IsValid(const RtcpMeasurement& other) const { |
- if (other.ntp_secs == 0 && other.ntp_frac == 0) { |
- // Invalid or not defined. |
+ if (!other.ntp_time.Valid()) |
return false; |
- } |
- int64_t ntp_ms_new = Clock::NtpToMs(other.ntp_secs, other.ntp_frac); |
+ |
+ int64_t ntp_ms_new = other.ntp_time.ToMs(); |
for (const auto& it : list) { |
- if (ntp_ms_new <= Clock::NtpToMs(it.ntp_secs, it.ntp_frac)) { |
+ if (ntp_ms_new <= it.ntp_time.ToMs()) { |
// Old report. |
return false; |
} |
@@ -97,7 +97,7 @@ bool RtcpMeasurements::IsValid(const RtcpMeasurement& other) const { |
} |
void RtcpMeasurements::UpdateParameters() { |
- if (list.size() != 2) |
+ if (list.size() != kNumRtcpReportsToUse) |
return; |
int64_t timestamp_new = list.front().rtp_timestamp; |
@@ -105,10 +105,8 @@ void RtcpMeasurements::UpdateParameters() { |
if (!CompensateForWrapAround(timestamp_new, timestamp_old, ×tamp_new)) |
return; |
- int64_t ntp_ms_new = |
- Clock::NtpToMs(list.front().ntp_secs, list.front().ntp_frac); |
- int64_t ntp_ms_old = |
- Clock::NtpToMs(list.back().ntp_secs, list.back().ntp_frac); |
+ int64_t ntp_ms_new = list.front().ntp_time.ToMs(); |
+ int64_t ntp_ms_old = list.back().ntp_time.ToMs(); |
if (!CalculateFrequency(ntp_ms_new, timestamp_new, ntp_ms_old, timestamp_old, |
¶ms.frequency_khz)) { |
@@ -137,9 +135,8 @@ bool UpdateRtcpList(uint32_t ntp_secs, |
return false; |
} |
- // Two RTCP SR reports are needed to map between RTP and NTP. |
- // More than two will not improve the mapping. |
- if (rtcp_measurements->list.size() == 2) |
+ // Insert new RTCP SR report. |
+ if (rtcp_measurements->list.size() == kNumRtcpReportsToUse) |
rtcp_measurements->list.pop_back(); |
rtcp_measurements->list.push_front(measurement); |