2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
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.
11 // The TimeScheduler class keeps track of periodic events. It is non-drifting
12 // and keeps track of any missed periods so that it is possible to catch up.
13 // (compare to a metronome)
15 #ifndef WEBRTC_MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_TIME_SCHEDULER_H_
16 #define WEBRTC_MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_TIME_SCHEDULER_H_
18 #include "webrtc/system_wrappers/interface/tick_util.h"
21 class CriticalSectionWrapper;
25 TimeScheduler(const uint32_t periodicityInMs);
28 // Signal that a periodic event has been triggered.
29 int32_t UpdateScheduler();
31 // Set updateTimeInMs to the amount of time until UpdateScheduler() should
32 // be called. This time will never be negative.
33 int32_t TimeToNextUpdate(int32_t& updateTimeInMS) const;
36 CriticalSectionWrapper* _crit;
39 TickTime _lastPeriodMark;
41 uint32_t _periodicityInMs;
42 int64_t _periodicityInTicks;
43 uint32_t _missedPeriods;
47 #endif // WEBRTC_MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_TIME_SCHEDULER_H_