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

Side by Side Diff: webrtc/voice_engine/voe_base_impl.cc

Issue 2969213002: External APM usage downstream dependency support cleanup (Closed)
Patch Set: Changes in response to reviewer commments Created 3 years, 5 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 | « webrtc/voice_engine/voe_base_impl.h ('k') | no next file » | 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 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 for (voe::ChannelManager::Iterator it(&shared_->channel_manager()); 218 for (voe::ChannelManager::Iterator it(&shared_->channel_manager());
219 it.IsValid(); it.Increment()) { 219 it.IsValid(); it.Increment()) {
220 it.GetChannel()->DeRegisterVoiceEngineObserver(); 220 it.GetChannel()->DeRegisterVoiceEngineObserver();
221 } 221 }
222 222
223 return 0; 223 return 0;
224 } 224 }
225 225
226 int VoEBaseImpl::Init( 226 int VoEBaseImpl::Init(
227 AudioDeviceModule* external_adm, 227 AudioDeviceModule* external_adm,
228 AudioProcessing* external_apm, 228 AudioProcessing* audio_processing,
229 const rtc::scoped_refptr<AudioDecoderFactory>& decoder_factory) { 229 const rtc::scoped_refptr<AudioDecoderFactory>& decoder_factory) {
230 // TODO(peah): Add a DCHECK for external_apm when downstream dependencies 230 RTC_DCHECK(audio_processing);
231 // have properly been resolved.
232 rtc::CritScope cs(shared_->crit_sec()); 231 rtc::CritScope cs(shared_->crit_sec());
233 WebRtcSpl_Init(); 232 WebRtcSpl_Init();
234 if (shared_->statistics().Initialized()) { 233 if (shared_->statistics().Initialized()) {
235 return 0; 234 return 0;
236 } 235 }
237 if (shared_->process_thread()) { 236 if (shared_->process_thread()) {
238 shared_->process_thread()->Start(); 237 shared_->process_thread()->Start();
239 } 238 }
240 239
241 // Create an internal ADM if the user has not added an external 240 // Create an internal ADM if the user has not added an external
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 // determine the actual number of channels anyway. 331 // determine the actual number of channels anyway.
333 // 332 //
334 // These functions may be changed; tracked here: 333 // These functions may be changed; tracked here:
335 // http://code.google.com/p/webrtc/issues/detail?id=204 334 // http://code.google.com/p/webrtc/issues/detail?id=204
336 shared_->audio_device()->StereoRecordingIsAvailable(&available); 335 shared_->audio_device()->StereoRecordingIsAvailable(&available);
337 if (shared_->audio_device()->SetStereoRecording(available) != 0) { 336 if (shared_->audio_device()->SetStereoRecording(available) != 0) {
338 shared_->SetLastError(VE_SOUNDCARD_ERROR, kTraceWarning, 337 shared_->SetLastError(VE_SOUNDCARD_ERROR, kTraceWarning,
339 "Init() failed to set mono/stereo recording mode"); 338 "Init() failed to set mono/stereo recording mode");
340 } 339 }
341 340
342 // TODO(peah): Remove this when upstream dependencies have properly been 341 shared_->set_audio_processing(audio_processing);
343 // resolved.
344 AudioProcessing* apm = nullptr;
345 if (!external_apm) {
346 audio_processing_ = AudioProcessing::Create();
347 if (!audio_processing_) {
348 // This can only happen if there are problems allocating the dynamic
349 // memory in the Create() call.
350 LOG(LS_ERROR) << "Failed to create AudioProcessing.";
351 shared_->SetLastError(VE_NO_MEMORY);
352 return -1;
353 }
354 apm = audio_processing_.get();
355 } else {
356 apm = external_apm;
357 }
358
359 shared_->set_audio_processing(apm);
360 342
361 // Set the error state for any failures in this block. 343 // Set the error state for any failures in this block.
362 shared_->SetLastError(VE_APM_ERROR); 344 shared_->SetLastError(VE_APM_ERROR);
363 // Configure AudioProcessing components. 345 // Configure AudioProcessing components.
364 // TODO(peah): Move this initialization to webrtcvoiceengine.cc. 346 // TODO(peah): Move this initialization to webrtcvoiceengine.cc.
365 if (apm->high_pass_filter()->Enable(true) != 0) { 347 if (audio_processing->high_pass_filter()->Enable(true) != 0) {
366 LOG_F(LS_ERROR) << "Failed to enable high pass filter."; 348 LOG_F(LS_ERROR) << "Failed to enable high pass filter.";
367 return -1; 349 return -1;
368 } 350 }
369 if (apm->echo_cancellation()->enable_drift_compensation(false) != 0) { 351 if (audio_processing->echo_cancellation()->enable_drift_compensation(false) !=
352 0) {
370 LOG_F(LS_ERROR) << "Failed to disable drift compensation."; 353 LOG_F(LS_ERROR) << "Failed to disable drift compensation.";
371 return -1; 354 return -1;
372 } 355 }
373 if (apm->noise_suppression()->set_level(kDefaultNsMode) != 0) { 356 if (audio_processing->noise_suppression()->set_level(kDefaultNsMode) != 0) {
374 LOG_F(LS_ERROR) << "Failed to set noise suppression level: " 357 LOG_F(LS_ERROR) << "Failed to set noise suppression level: "
375 << kDefaultNsMode; 358 << kDefaultNsMode;
376 return -1; 359 return -1;
377 } 360 }
378 GainControl* agc = apm->gain_control(); 361 GainControl* agc = audio_processing->gain_control();
379 if (agc->set_analog_level_limits(kMinVolumeLevel, kMaxVolumeLevel) != 0) { 362 if (agc->set_analog_level_limits(kMinVolumeLevel, kMaxVolumeLevel) != 0) {
380 LOG_F(LS_ERROR) << "Failed to set analog level limits with minimum: " 363 LOG_F(LS_ERROR) << "Failed to set analog level limits with minimum: "
381 << kMinVolumeLevel << " and maximum: " << kMaxVolumeLevel; 364 << kMinVolumeLevel << " and maximum: " << kMaxVolumeLevel;
382 return -1; 365 return -1;
383 } 366 }
384 if (agc->set_mode(kDefaultAgcMode) != 0) { 367 if (agc->set_mode(kDefaultAgcMode) != 0) {
385 LOG_F(LS_ERROR) << "Failed to set mode: " << kDefaultAgcMode; 368 LOG_F(LS_ERROR) << "Failed to set mode: " << kDefaultAgcMode;
386 return -1; 369 return -1;
387 } 370 }
388 if (agc->Enable(kDefaultAgcState) != 0) { 371 if (agc->Enable(kDefaultAgcState) != 0) {
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 shared_->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, 739 shared_->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
757 "AssociateSendChannel() failed to locate accociate_send_channel"); 740 "AssociateSendChannel() failed to locate accociate_send_channel");
758 return -1; 741 return -1;
759 } 742 }
760 743
761 channel_ptr->set_associate_send_channel(ch); 744 channel_ptr->set_associate_send_channel(ch);
762 return 0; 745 return 0;
763 } 746 }
764 747
765 } // namespace webrtc 748 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/voice_engine/voe_base_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698