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

Side by Side Diff: talk/media/webrtc/webrtcvoiceengine.h

Issue 1361633002: Remove the [Un]RegisterVoiceProcessor() API. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years, 3 months 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
« no previous file with comments | « talk/media/webrtc/webrtcvoe.h ('k') | talk/media/webrtc/webrtcvoiceengine.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2004 Google Inc. 3 * Copyright 2004 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 #include "webrtc/call.h" 46 #include "webrtc/call.h"
47 #include "webrtc/common.h" 47 #include "webrtc/common.h"
48 #include "webrtc/config.h" 48 #include "webrtc/config.h"
49 49
50 namespace cricket { 50 namespace cricket {
51 51
52 class AudioDeviceModule; 52 class AudioDeviceModule;
53 class AudioRenderer; 53 class AudioRenderer;
54 class VoETraceWrapper; 54 class VoETraceWrapper;
55 class VoEWrapper; 55 class VoEWrapper;
56 class VoiceProcessor;
57 class WebRtcVoiceMediaChannel; 56 class WebRtcVoiceMediaChannel;
58 57
59 // WebRtcVoiceEngine is a class to be used with CompositeMediaEngine. 58 // WebRtcVoiceEngine is a class to be used with CompositeMediaEngine.
60 // It uses the WebRtc VoiceEngine library for audio handling. 59 // It uses the WebRtc VoiceEngine library for audio handling.
61 class WebRtcVoiceEngine 60 class WebRtcVoiceEngine
62 : public webrtc::VoiceEngineObserver, 61 : public webrtc::VoiceEngineObserver,
63 public webrtc::TraceCallback, 62 public webrtc::TraceCallback {
64 public webrtc::VoEMediaProcess {
65 friend class WebRtcVoiceMediaChannel; 63 friend class WebRtcVoiceMediaChannel;
66 64
67 public: 65 public:
68 WebRtcVoiceEngine(); 66 WebRtcVoiceEngine();
69 // Dependency injection for testing. 67 // Dependency injection for testing.
70 WebRtcVoiceEngine(VoEWrapper* voe_wrapper, VoETraceWrapper* tracing); 68 WebRtcVoiceEngine(VoEWrapper* voe_wrapper, VoETraceWrapper* tracing);
71 ~WebRtcVoiceEngine(); 69 ~WebRtcVoiceEngine();
72 bool Init(rtc::Thread* worker_thread); 70 bool Init(rtc::Thread* worker_thread);
73 void Terminate(); 71 void Terminate();
74 72
(...skipping 11 matching lines...) Expand all
86 int GetInputLevel(); 84 int GetInputLevel();
87 85
88 const std::vector<AudioCodec>& codecs(); 86 const std::vector<AudioCodec>& codecs();
89 bool FindCodec(const AudioCodec& codec); 87 bool FindCodec(const AudioCodec& codec);
90 bool FindWebRtcCodec(const AudioCodec& codec, webrtc::CodecInst* gcodec); 88 bool FindWebRtcCodec(const AudioCodec& codec, webrtc::CodecInst* gcodec);
91 89
92 const std::vector<RtpHeaderExtension>& rtp_header_extensions() const; 90 const std::vector<RtpHeaderExtension>& rtp_header_extensions() const;
93 91
94 void SetLogging(int min_sev, const char* filter); 92 void SetLogging(int min_sev, const char* filter);
95 93
96 bool RegisterProcessor(uint32 ssrc,
97 VoiceProcessor* voice_processor,
98 MediaProcessorDirection direction);
99 bool UnregisterProcessor(uint32 ssrc,
100 VoiceProcessor* voice_processor,
101 MediaProcessorDirection direction);
102
103 // Method from webrtc::VoEMediaProcess
104 void Process(int channel,
105 webrtc::ProcessingTypes type,
106 int16_t audio10ms[],
107 size_t length,
108 int sampling_freq,
109 bool is_stereo) override;
110
111 // For tracking WebRtc channels. Needed because we have to pause them 94 // For tracking WebRtc channels. Needed because we have to pause them
112 // all when switching devices. 95 // all when switching devices.
113 // May only be called by WebRtcVoiceMediaChannel. 96 // May only be called by WebRtcVoiceMediaChannel.
114 void RegisterChannel(WebRtcVoiceMediaChannel *channel); 97 void RegisterChannel(WebRtcVoiceMediaChannel *channel);
115 void UnregisterChannel(WebRtcVoiceMediaChannel *channel); 98 void UnregisterChannel(WebRtcVoiceMediaChannel *channel);
116 99
117 // Called by WebRtcVoiceMediaChannel to set a gain offset from 100 // Called by WebRtcVoiceMediaChannel to set a gain offset from
118 // the default AGC target level. 101 // the default AGC target level.
119 bool AdjustAgcLevel(int delta); 102 bool AdjustAgcLevel(int delta);
120 103
121 VoEWrapper* voe() { return voe_wrapper_.get(); } 104 VoEWrapper* voe() { return voe_wrapper_.get(); }
122 int GetLastEngineError(); 105 int GetLastEngineError();
123 106
124 // Set the external ADM. This can only be called before Init. 107 // Set the external ADM. This can only be called before Init.
125 bool SetAudioDeviceModule(webrtc::AudioDeviceModule* adm); 108 bool SetAudioDeviceModule(webrtc::AudioDeviceModule* adm);
126 109
127 // Starts AEC dump using existing file. 110 // Starts AEC dump using existing file.
128 bool StartAecDump(rtc::PlatformFile file); 111 bool StartAecDump(rtc::PlatformFile file);
129 112
130 // Check whether the supplied trace should be ignored. 113 // Check whether the supplied trace should be ignored.
131 bool ShouldIgnoreTrace(const std::string& trace); 114 bool ShouldIgnoreTrace(const std::string& trace);
132 115
133 // Create a VoiceEngine Channel. 116 // Create a VoiceEngine Channel.
134 int CreateMediaVoiceChannel(); 117 int CreateMediaVoiceChannel();
135 118
136 private: 119 private:
137 typedef std::vector<WebRtcVoiceMediaChannel*> ChannelList; 120 typedef std::vector<WebRtcVoiceMediaChannel*> ChannelList;
138 typedef sigslot::
139 signal3<uint32, MediaProcessorDirection, AudioFrame*> FrameSignal;
140 121
141 void Construct(); 122 void Construct();
142 void ConstructCodecs(); 123 void ConstructCodecs();
143 bool GetVoeCodec(int index, webrtc::CodecInst* codec); 124 bool GetVoeCodec(int index, webrtc::CodecInst* codec);
144 bool InitInternal(); 125 bool InitInternal();
145 void SetTraceFilter(int filter); 126 void SetTraceFilter(int filter);
146 void SetTraceOptions(const std::string& options); 127 void SetTraceOptions(const std::string& options);
147 // Applies either options or overrides. Every option that is "set" 128 // Applies either options or overrides. Every option that is "set"
148 // will be applied. Every option not "set" will be ignored. This 129 // will be applied. Every option not "set" will be ignored. This
149 // allows us to selectively turn on and off different options easily 130 // allows us to selectively turn on and off different options easily
(...skipping 19 matching lines...) Expand all
169 // webrtc::VoiceEngineObserver: 150 // webrtc::VoiceEngineObserver:
170 void CallbackOnError(int channel, int errCode) override; 151 void CallbackOnError(int channel, int errCode) override;
171 152
172 // Given the device type, name, and id, find device id. Return true and 153 // Given the device type, name, and id, find device id. Return true and
173 // set the output parameter rtc_id if successful. 154 // set the output parameter rtc_id if successful.
174 bool FindWebRtcAudioDeviceId( 155 bool FindWebRtcAudioDeviceId(
175 bool is_input, const std::string& dev_name, int dev_id, int* rtc_id); 156 bool is_input, const std::string& dev_name, int dev_id, int* rtc_id);
176 bool FindChannelAndSsrc(int channel_num, 157 bool FindChannelAndSsrc(int channel_num,
177 WebRtcVoiceMediaChannel** channel, 158 WebRtcVoiceMediaChannel** channel,
178 uint32* ssrc) const; 159 uint32* ssrc) const;
179 bool FindChannelNumFromSsrc(uint32 ssrc,
180 MediaProcessorDirection direction,
181 int* channel_num);
182
183 bool UnregisterProcessorChannel(MediaProcessorDirection channel_direction,
184 uint32 ssrc,
185 VoiceProcessor* voice_processor,
186 MediaProcessorDirection processor_direction);
187 160
188 void StartAecDump(const std::string& filename); 161 void StartAecDump(const std::string& filename);
189 void StopAecDump(); 162 void StopAecDump();
190 int CreateVoiceChannel(VoEWrapper* voe); 163 int CreateVoiceChannel(VoEWrapper* voe);
191 164
192 // When a voice processor registers with the engine, it is connected
193 // to either the Rx or Tx signals, based on the direction parameter.
194 // SignalXXMediaFrame will be invoked for every audio packet.
195 FrameSignal SignalRxMediaFrame;
196 FrameSignal SignalTxMediaFrame;
197
198 static const int kDefaultLogSeverity = rtc::LS_WARNING; 165 static const int kDefaultLogSeverity = rtc::LS_WARNING;
199 166
200 // The primary instance of WebRtc VoiceEngine. 167 // The primary instance of WebRtc VoiceEngine.
201 rtc::scoped_ptr<VoEWrapper> voe_wrapper_; 168 rtc::scoped_ptr<VoEWrapper> voe_wrapper_;
202 rtc::scoped_ptr<VoETraceWrapper> tracing_; 169 rtc::scoped_ptr<VoETraceWrapper> tracing_;
203 // The external audio device manager 170 // The external audio device manager
204 webrtc::AudioDeviceModule* adm_; 171 webrtc::AudioDeviceModule* adm_;
205 int log_filter_; 172 int log_filter_;
206 std::string log_options_; 173 std::string log_options_;
207 bool is_dumping_aec_; 174 bool is_dumping_aec_;
(...skipping 10 matching lines...) Expand all
218 bool initialized_; 185 bool initialized_;
219 // See SetOptions and SetOptionOverrides for a description of the 186 // See SetOptions and SetOptionOverrides for a description of the
220 // difference between options and overrides. 187 // difference between options and overrides.
221 // options_ are the base options, which combined with the 188 // options_ are the base options, which combined with the
222 // option_overrides_, create the current options being used. 189 // option_overrides_, create the current options being used.
223 // options_ is stored so that when option_overrides_ is cleared, we 190 // options_ is stored so that when option_overrides_ is cleared, we
224 // can restore the options_ without the option_overrides. 191 // can restore the options_ without the option_overrides.
225 AudioOptions options_; 192 AudioOptions options_;
226 AudioOptions option_overrides_; 193 AudioOptions option_overrides_;
227 194
228 // When the media processor registers with the engine, the ssrc is cached
229 // here so that a look up need not be made when the callback is invoked.
230 // This is necessary because the lookup results in mux_channels_cs lock being
231 // held and if a remote participant leaves the hangout at the same time
232 // we hit a deadlock.
233 uint32 tx_processor_ssrc_;
234 uint32 rx_processor_ssrc_;
235
236 rtc::CriticalSection signal_media_critical_;
237
238 // Cache received extended_filter_aec, delay_agnostic_aec and experimental_ns 195 // Cache received extended_filter_aec, delay_agnostic_aec and experimental_ns
239 // values, and apply them in case they are missing in the audio options. We 196 // values, and apply them in case they are missing in the audio options. We
240 // need to do this because SetExtraOptions() will revert to defaults for 197 // need to do this because SetExtraOptions() will revert to defaults for
241 // options which are not provided. 198 // options which are not provided.
242 Settable<bool> extended_filter_aec_; 199 Settable<bool> extended_filter_aec_;
243 Settable<bool> delay_agnostic_aec_; 200 Settable<bool> delay_agnostic_aec_;
244 Settable<bool> experimental_ns_; 201 Settable<bool> experimental_ns_;
245 }; 202 };
246 203
247 // WebRtcVoiceMediaChannel is an implementation of VoiceMediaChannel that uses 204 // WebRtcVoiceMediaChannel is an implementation of VoiceMediaChannel that uses
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; 377 std::vector<webrtc::RtpExtension> recv_rtp_extensions_;
421 378
422 // Do not lock this on the VoE media processor thread; potential for deadlock 379 // Do not lock this on the VoE media processor thread; potential for deadlock
423 // exists. 380 // exists.
424 mutable rtc::CriticalSection receive_channels_cs_; 381 mutable rtc::CriticalSection receive_channels_cs_;
425 }; 382 };
426 383
427 } // namespace cricket 384 } // namespace cricket
428 385
429 #endif // TALK_MEDIA_WEBRTCVOICEENGINE_H_ 386 #endif // TALK_MEDIA_WEBRTCVOICEENGINE_H_
OLDNEW
« no previous file with comments | « talk/media/webrtc/webrtcvoe.h ('k') | talk/media/webrtc/webrtcvoiceengine.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698