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

Side by Side Diff: webrtc/system_wrappers/interface/clock.h

Issue 1413333002: system_wrappers: rename interface -> include (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased again! Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_CLOCK_H_
12 #define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_CLOCK_H_
13
14 #include "webrtc/base/scoped_ptr.h"
15 #include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
16 #include "webrtc/typedefs.h"
17
18 namespace webrtc {
19
20 // January 1970, in NTP seconds.
21 const uint32_t kNtpJan1970 = 2208988800UL;
22
23 // Magic NTP fractional unit.
24 const double kMagicNtpFractionalUnit = 4.294967296E+9;
25
26 // A clock interface that allows reading of absolute and relative timestamps.
27 class Clock {
28 public:
29 virtual ~Clock() {}
30
31 // Return a timestamp in milliseconds relative to some arbitrary source; the
32 // source is fixed for this clock.
33 virtual int64_t TimeInMilliseconds() const = 0;
34
35 // Return a timestamp in microseconds relative to some arbitrary source; the
36 // source is fixed for this clock.
37 virtual int64_t TimeInMicroseconds() const = 0;
38
39 // Retrieve an NTP absolute timestamp in seconds and fractions of a second.
40 virtual void CurrentNtp(uint32_t& seconds, uint32_t& fractions) const = 0;
41
42 // Retrieve an NTP absolute timestamp in milliseconds.
43 virtual int64_t CurrentNtpInMilliseconds() const = 0;
44
45 // Converts an NTP timestamp to a millisecond timestamp.
46 static int64_t NtpToMs(uint32_t seconds, uint32_t fractions);
47
48 // Returns an instance of the real-time system clock implementation.
49 static Clock* GetRealTimeClock();
50 };
51
52 class SimulatedClock : public Clock {
53 public:
54 explicit SimulatedClock(int64_t initial_time_us);
55
56 ~SimulatedClock() override;
57
58 // Return a timestamp in milliseconds relative to some arbitrary source; the
59 // source is fixed for this clock.
60 int64_t TimeInMilliseconds() const override;
61
62 // Return a timestamp in microseconds relative to some arbitrary source; the
63 // source is fixed for this clock.
64 int64_t TimeInMicroseconds() const override;
65
66 // Retrieve an NTP absolute timestamp in milliseconds.
67 void CurrentNtp(uint32_t& seconds, uint32_t& fractions) const override;
68
69 // Converts an NTP timestamp to a millisecond timestamp.
70 int64_t CurrentNtpInMilliseconds() const override;
71
72 // Advance the simulated clock with a given number of milliseconds or
73 // microseconds.
74 void AdvanceTimeMilliseconds(int64_t milliseconds);
75 void AdvanceTimeMicroseconds(int64_t microseconds);
76
77 private:
78 int64_t time_us_;
79 rtc::scoped_ptr<RWLockWrapper> lock_;
80 };
81
82 }; // namespace webrtc
83
84 #endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_CLOCK_H_
OLDNEW
« no previous file with comments | « webrtc/system_wrappers/interface/atomic32.h ('k') | webrtc/system_wrappers/interface/compile_assert_c.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698