OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... |
23 #endif | 23 #endif |
24 #include <windows.h> | 24 #include <windows.h> |
25 #include <mmsystem.h> | 25 #include <mmsystem.h> |
26 #endif | 26 #endif |
27 | 27 |
28 #include "webrtc/base/checks.h" | 28 #include "webrtc/base/checks.h" |
29 #include "webrtc/base/timeutils.h" | 29 #include "webrtc/base/timeutils.h" |
30 | 30 |
31 namespace rtc { | 31 namespace rtc { |
32 | 32 |
33 const uint32_t HALF = 0x80000000; | |
34 | |
35 uint64_t TimeNanos() { | 33 uint64_t TimeNanos() { |
36 int64_t ticks = 0; | 34 int64_t ticks = 0; |
37 #if defined(WEBRTC_MAC) | 35 #if defined(WEBRTC_MAC) |
38 static mach_timebase_info_data_t timebase; | 36 static mach_timebase_info_data_t timebase; |
39 if (timebase.denom == 0) { | 37 if (timebase.denom == 0) { |
40 // Get the timebase if this is the first time we run. | 38 // Get the timebase if this is the first time we run. |
41 // Recommended by Apple's QA1398. | 39 // Recommended by Apple's QA1398. |
42 if (mach_timebase_info(&timebase) != KERN_SUCCESS) { | 40 if (mach_timebase_info(&timebase) != KERN_SUCCESS) { |
43 RTC_DCHECK(false); | 41 RTC_DCHECK(false); |
44 } | 42 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 } | 81 } |
84 | 82 |
85 int64_t Time64() { | 83 int64_t Time64() { |
86 return static_cast<int64_t>(TimeNanos() / kNumNanosecsPerMillisec); | 84 return static_cast<int64_t>(TimeNanos() / kNumNanosecsPerMillisec); |
87 } | 85 } |
88 | 86 |
89 uint64_t TimeMicros() { | 87 uint64_t TimeMicros() { |
90 return static_cast<uint64_t>(TimeNanos() / kNumNanosecsPerMicrosec); | 88 return static_cast<uint64_t>(TimeNanos() / kNumNanosecsPerMicrosec); |
91 } | 89 } |
92 | 90 |
93 uint32_t TimeAfter(int32_t elapsed) { | 91 int64_t TimeAfter(int64_t elapsed) { |
94 RTC_DCHECK_GE(elapsed, 0); | 92 RTC_DCHECK_GE(elapsed, 0); |
95 RTC_DCHECK_LT(static_cast<uint32_t>(elapsed), HALF); | |
96 return Time() + elapsed; | 93 return Time() + elapsed; |
97 } | 94 } |
98 | 95 |
99 bool TimeIsLaterOrEqual(uint32_t earlier, uint32_t later) { | 96 int32_t TimeDiff32(uint32_t later, uint32_t earlier) { |
100 int32_t diff = later - earlier; | |
101 return (diff >= 0 && static_cast<uint32_t>(diff) < HALF); | |
102 } | |
103 | |
104 bool TimeIsLater(uint32_t earlier, uint32_t later) { | |
105 int32_t diff = later - earlier; | |
106 return (diff > 0 && static_cast<uint32_t>(diff) < HALF); | |
107 } | |
108 | |
109 int32_t TimeDiff(uint32_t later, uint32_t earlier) { | |
110 return later - earlier; | 97 return later - earlier; |
111 } | 98 } |
112 | 99 |
113 int64_t TimeDiff64(int64_t later, int64_t earlier) { | 100 int64_t TimeDiff(int64_t later, int64_t earlier) { |
114 return later - earlier; | 101 return later - earlier; |
115 } | 102 } |
116 | 103 |
117 TimestampWrapAroundHandler::TimestampWrapAroundHandler() | 104 TimestampWrapAroundHandler::TimestampWrapAroundHandler() |
118 : last_ts_(0), num_wrap_(-1) {} | 105 : last_ts_(0), num_wrap_(-1) {} |
119 | 106 |
120 int64_t TimestampWrapAroundHandler::Unwrap(uint32_t ts) { | 107 int64_t TimestampWrapAroundHandler::Unwrap(uint32_t ts) { |
121 if (num_wrap_ == -1) { | 108 if (num_wrap_ == -1) { |
122 last_ts_ = ts; | 109 last_ts_ = ts; |
123 num_wrap_ = 0; | 110 num_wrap_ = 0; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 if (expiry_in_leap_year && month <= 2 - 1) // |month| is zero based. | 161 if (expiry_in_leap_year && month <= 2 - 1) // |month| is zero based. |
175 day -= 1; | 162 day -= 1; |
176 | 163 |
177 // Combine all variables into seconds from 1970-01-01 00:00 (except |month| | 164 // Combine all variables into seconds from 1970-01-01 00:00 (except |month| |
178 // which was accumulated into |day| above). | 165 // which was accumulated into |day| above). |
179 return (((static_cast<int64_t> | 166 return (((static_cast<int64_t> |
180 (year - 1970) * 365 + day) * 24 + hour) * 60 + min) * 60 + sec; | 167 (year - 1970) * 365 + day) * 24 + hour) * 60 + min) * 60 + sec; |
181 } | 168 } |
182 | 169 |
183 } // namespace rtc | 170 } // namespace rtc |
OLD | NEW |