Index: webrtc/system_wrappers/include/ntp_time.h |
diff --git a/webrtc/system_wrappers/include/ntp_time.h b/webrtc/system_wrappers/include/ntp_time.h |
index ecb303ae18f89a7063e9ae4b140eef67c7330a45..97a011e52d160dda7f059d3f404b8467861869e5 100644 |
--- a/webrtc/system_wrappers/include/ntp_time.h |
+++ b/webrtc/system_wrappers/include/ntp_time.h |
@@ -16,41 +16,39 @@ namespace webrtc { |
class NtpTime { |
public: |
- NtpTime() : seconds_(0), fractions_(0) {} |
+ static constexpr uint64_t kRate = 0x100000000; |
perkj_webrtc
2017/02/14 09:22:39
What does rate mean here? Why it is public? Privat
danilchap
2017/02/14 15:00:42
renamed, prefer this constant public e.g. to calcu
|
+ NtpTime() : value_(0) {} |
+ explicit NtpTime(uint64_t value) : value_(value) {} |
NtpTime(uint32_t seconds, uint32_t fractions) |
- : seconds_(seconds), fractions_(fractions) {} |
+ : value_(seconds * kRate + fractions) {} |
NtpTime(const NtpTime&) = default; |
NtpTime& operator=(const NtpTime&) = default; |
+ explicit operator uint64_t() const { return value_; } |
void Set(uint32_t seconds, uint32_t fractions) { |
- seconds_ = seconds; |
- fractions_ = fractions; |
- } |
- void Reset() { |
- seconds_ = 0; |
- fractions_ = 0; |
+ value_ = seconds * kRate + fractions; |
} |
+ void Reset() { value_ = 0; } |
int64_t ToMs() const { |
static constexpr double kNtpFracPerMs = 4.294967296E6; // 2^32 / 1000. |
- const double frac_ms = static_cast<double>(fractions_) / kNtpFracPerMs; |
- return 1000 * static_cast<int64_t>(seconds_) + |
+ const double frac_ms = static_cast<double>(fractions()) / kNtpFracPerMs; |
+ return 1000 * static_cast<int64_t>(seconds()) + |
perkj_webrtc
2017/02/14 09:22:39
use kNumMillisecsPerSec from timeutils.h instead
danilchap
2017/02/14 15:00:42
would like to avoid include extra header for a con
|
static_cast<int64_t>(frac_ms + 0.5); |
} |
- // NTP standard (RFC1305, section 3.1) explicitly state value 0/0 is invalid. |
- bool Valid() const { return !(seconds_ == 0 && fractions_ == 0); } |
+ // NTP standard (RFC1305, section 3.1) explicitly state value 0 is invalid. |
+ bool Valid() const { return value_ != 0; } |
- uint32_t seconds() const { return seconds_; } |
- uint32_t fractions() const { return fractions_; } |
+ uint32_t seconds() const { return value_ / kRate; } |
+ uint32_t fractions() const { return value_ % kRate; } |
private: |
- uint32_t seconds_; |
- uint32_t fractions_; |
+ uint64_t value_; |
}; |
inline bool operator==(const NtpTime& n1, const NtpTime& n2) { |
- return n1.seconds() == n2.seconds() && n1.fractions() == n2.fractions(); |
+ return static_cast<uint64_t>(n1) == static_cast<uint64_t>(n2); |
} |
inline bool operator!=(const NtpTime& n1, const NtpTime& n2) { |
return !(n1 == n2); |