Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: webrtc/system_wrappers/include/ntp_time.h

Issue 2695683002: Change NtpTime representation to single uint64_t (Closed)
Patch Set: kRate -> kFractionsPerSecond Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | webrtc/system_wrappers/source/ntp_time_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..5e53064b46a7913c200568e3f4cc719857a32723 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 kFractionsPerSecond = 0x100000000;
+ NtpTime() : value_(0) {}
+ explicit NtpTime(uint64_t value) : value_(value) {}
NtpTime(uint32_t seconds, uint32_t fractions)
- : seconds_(seconds), fractions_(fractions) {}
+ : value_(seconds * kFractionsPerSecond + 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 * kFractionsPerSecond + 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()) +
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_ / kFractionsPerSecond; }
+ uint32_t fractions() const { return value_ % kFractionsPerSecond; }
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);
« no previous file with comments | « no previous file | webrtc/system_wrappers/source/ntp_time_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698