blob: 0d8d100af50803ab27cbba7e4b243806873cc815 [file] [log] [blame]
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +00001/*
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// ViESharedData contains data and instances common to all interface
12// implementations.
13
14#ifndef WEBRTC_VIDEO_ENGINE_VIE_SHARED_DATA_H_
15#define WEBRTC_VIDEO_ENGINE_VIE_SHARED_DATA_H_
16
mflodman@webrtc.orgbf76ae22013-07-23 11:35:00 +000017#include <map>
18
mflodman@webrtc.org7645e4d2013-05-16 11:13:18 +000019#include "webrtc/system_wrappers/interface/scoped_ptr.h"
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000020
21namespace webrtc {
22
andresp@webrtc.orgac6d9192013-05-13 10:50:50 +000023class Config;
mflodman@webrtc.orgbf76ae22013-07-23 11:35:00 +000024class CpuOveruseObserver;
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000025class ProcessThread;
26class ViEChannelManager;
27class ViEInputManager;
28class ViERenderManager;
29
30class ViESharedData {
31 public:
mflodman@webrtc.org7645e4d2013-05-16 11:13:18 +000032 explicit ViESharedData(const Config& config);
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000033 ~ViESharedData();
34
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000035 void SetLastError(const int error) const;
36 int LastErrorInternal() const;
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000037 int NumberOfCores() const;
38
mflodman@webrtc.org7645e4d2013-05-16 11:13:18 +000039 // TODO(mflodman) Remove all calls to 'instance_id()'.
40 int instance_id() { return 0;}
41 ViEChannelManager* channel_manager() { return channel_manager_.get(); }
42 ViEInputManager* input_manager() { return input_manager_.get(); }
43 ViERenderManager* render_manager() { return render_manager_.get(); }
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000044
mflodman@webrtc.orgbf76ae22013-07-23 11:35:00 +000045 std::map<int, CpuOveruseObserver*>* overuse_observers() {
46 return &overuse_observers_; }
47
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000048 private:
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000049 const int number_cores_;
50
mflodman@webrtc.org7645e4d2013-05-16 11:13:18 +000051 scoped_ptr<ViEChannelManager> channel_manager_;
52 scoped_ptr<ViEInputManager> input_manager_;
53 scoped_ptr<ViERenderManager> render_manager_;
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000054 ProcessThread* module_process_thread_;
55 mutable int last_error_;
mflodman@webrtc.orgbf76ae22013-07-23 11:35:00 +000056
57 std::map<int, CpuOveruseObserver*> overuse_observers_;
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000058};
59
60} // namespace webrtc
61
62#endif // WEBRTC_VIDEO_ENGINE_VIE_SHARED_DATA_H_