• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef WEBRTC_VOICE_ENGINE_VOICE_ENGINE_IMPL_H
12 #define WEBRTC_VOICE_ENGINE_VOICE_ENGINE_IMPL_H
13 
14 #include "webrtc/engine_configurations.h"
15 #include "webrtc/system_wrappers/interface/atomic32.h"
16 #include "webrtc/voice_engine/voe_base_impl.h"
17 
18 #ifdef WEBRTC_VOICE_ENGINE_AUDIO_PROCESSING_API
19 #include "webrtc/voice_engine/voe_audio_processing_impl.h"
20 #endif
21 #ifdef WEBRTC_VOICE_ENGINE_CODEC_API
22 #include "webrtc/voice_engine/voe_codec_impl.h"
23 #endif
24 #ifdef WEBRTC_VOICE_ENGINE_DTMF_API
25 #include "webrtc/voice_engine/voe_dtmf_impl.h"
26 #endif
27 #ifdef WEBRTC_VOICE_ENGINE_EXTERNAL_MEDIA_API
28 #include "webrtc/voice_engine/voe_external_media_impl.h"
29 #endif
30 #ifdef WEBRTC_VOICE_ENGINE_FILE_API
31 #include "webrtc/voice_engine/voe_file_impl.h"
32 #endif
33 #ifdef WEBRTC_VOICE_ENGINE_HARDWARE_API
34 #include "webrtc/voice_engine/voe_hardware_impl.h"
35 #endif
36 #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
37 #include "webrtc/voice_engine/voe_neteq_stats_impl.h"
38 #endif
39 #include "webrtc/voice_engine/voe_network_impl.h"
40 #ifdef WEBRTC_VOICE_ENGINE_RTP_RTCP_API
41 #include "webrtc/voice_engine/voe_rtp_rtcp_impl.h"
42 #endif
43 #ifdef WEBRTC_VOICE_ENGINE_VIDEO_SYNC_API
44 #include "webrtc/voice_engine/voe_video_sync_impl.h"
45 #endif
46 #ifdef WEBRTC_VOICE_ENGINE_VOLUME_CONTROL_API
47 #include "webrtc/voice_engine/voe_volume_control_impl.h"
48 #endif
49 
50 namespace webrtc
51 {
52 
53 class VoiceEngineImpl : public voe::SharedData,  // Must be the first base class
54                         public VoiceEngine,
55 #ifdef WEBRTC_VOICE_ENGINE_AUDIO_PROCESSING_API
56                         public VoEAudioProcessingImpl,
57 #endif
58 #ifdef WEBRTC_VOICE_ENGINE_CODEC_API
59                         public VoECodecImpl,
60 #endif
61 #ifdef WEBRTC_VOICE_ENGINE_DTMF_API
62                         public VoEDtmfImpl,
63 #endif
64 #ifdef WEBRTC_VOICE_ENGINE_EXTERNAL_MEDIA_API
65                         public VoEExternalMediaImpl,
66 #endif
67 #ifdef WEBRTC_VOICE_ENGINE_FILE_API
68                         public VoEFileImpl,
69 #endif
70 #ifdef WEBRTC_VOICE_ENGINE_HARDWARE_API
71                         public VoEHardwareImpl,
72 #endif
73 #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
74                         public VoENetEqStatsImpl,
75 #endif
76                         public VoENetworkImpl,
77 #ifdef WEBRTC_VOICE_ENGINE_RTP_RTCP_API
78                         public VoERTP_RTCPImpl,
79 #endif
80 #ifdef WEBRTC_VOICE_ENGINE_VIDEO_SYNC_API
81                         public VoEVideoSyncImpl,
82 #endif
83 #ifdef WEBRTC_VOICE_ENGINE_VOLUME_CONTROL_API
84                         public VoEVolumeControlImpl,
85 #endif
86                         public VoEBaseImpl
87 {
88 public:
VoiceEngineImpl(const Config * config,bool owns_config)89     VoiceEngineImpl(const Config* config, bool owns_config) :
90         SharedData(*config),
91 #ifdef WEBRTC_VOICE_ENGINE_AUDIO_PROCESSING_API
92         VoEAudioProcessingImpl(this),
93 #endif
94 #ifdef WEBRTC_VOICE_ENGINE_CODEC_API
95         VoECodecImpl(this),
96 #endif
97 #ifdef WEBRTC_VOICE_ENGINE_DTMF_API
98         VoEDtmfImpl(this),
99 #endif
100 #ifdef WEBRTC_VOICE_ENGINE_EXTERNAL_MEDIA_API
101         VoEExternalMediaImpl(this),
102 #endif
103 #ifdef WEBRTC_VOICE_ENGINE_FILE_API
104         VoEFileImpl(this),
105 #endif
106 #ifdef WEBRTC_VOICE_ENGINE_HARDWARE_API
107         VoEHardwareImpl(this),
108 #endif
109 #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
110         VoENetEqStatsImpl(this),
111 #endif
112         VoENetworkImpl(this),
113 #ifdef WEBRTC_VOICE_ENGINE_RTP_RTCP_API
114         VoERTP_RTCPImpl(this),
115 #endif
116 #ifdef WEBRTC_VOICE_ENGINE_VIDEO_SYNC_API
117         VoEVideoSyncImpl(this),
118 #endif
119 #ifdef WEBRTC_VOICE_ENGINE_VOLUME_CONTROL_API
120         VoEVolumeControlImpl(this),
121 #endif
122         VoEBaseImpl(this),
123         _ref_count(0),
124         own_config_(owns_config ? config : NULL)
125     {
126     }
~VoiceEngineImpl()127     virtual ~VoiceEngineImpl()
128     {
129         assert(_ref_count.Value() == 0);
130     }
131 
132     int AddRef();
133 
134     // This implements the Release() method for all the inherited interfaces.
135     virtual int Release();
136 
137 private:
138     Atomic32 _ref_count;
139     scoped_ptr<const Config> own_config_;
140 };
141 
142 }  // namespace webrtc
143 
144 #endif // WEBRTC_VOICE_ENGINE_VOICE_ENGINE_IMPL_H
145