Line data Source code
1 : /*
2 : * Copyright (c) 2012 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 : #include "webrtc/base/timeutils.h"
12 : #include "webrtc/voice_engine/monitor_module.h"
13 :
14 : namespace webrtc {
15 :
16 : namespace voe {
17 :
18 0 : MonitorModule::MonitorModule() :
19 : _observerPtr(NULL),
20 0 : _lastProcessTime(rtc::TimeMillis())
21 : {
22 0 : }
23 :
24 0 : MonitorModule::~MonitorModule()
25 : {
26 0 : }
27 :
28 : int32_t
29 0 : MonitorModule::RegisterObserver(MonitorObserver& observer)
30 : {
31 0 : rtc::CritScope lock(&_callbackCritSect);
32 0 : if (_observerPtr)
33 : {
34 0 : return -1;
35 : }
36 0 : _observerPtr = &observer;
37 0 : return 0;
38 : }
39 :
40 : int32_t
41 0 : MonitorModule::DeRegisterObserver()
42 : {
43 0 : rtc::CritScope lock(&_callbackCritSect);
44 0 : if (!_observerPtr)
45 : {
46 0 : return 0;
47 : }
48 0 : _observerPtr = NULL;
49 0 : return 0;
50 : }
51 :
52 : int64_t
53 0 : MonitorModule::TimeUntilNextProcess()
54 : {
55 0 : int64_t now = rtc::TimeMillis();
56 0 : const int64_t kAverageProcessUpdateTimeMs = 1000;
57 0 : return kAverageProcessUpdateTimeMs - (now - _lastProcessTime);
58 : }
59 :
60 : void
61 0 : MonitorModule::Process()
62 : {
63 0 : _lastProcessTime = rtc::TimeMillis();
64 0 : rtc::CritScope lock(&_callbackCritSect);
65 0 : if (_observerPtr)
66 : {
67 0 : _observerPtr->OnPeriodicProcess();
68 : }
69 0 : }
70 :
71 : } // namespace voe
72 :
73 : } // namespace webrtc
|