Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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* audioproc, | 228 AudioProcessing* external_apm, |
| 229 const rtc::scoped_refptr<AudioDecoderFactory>& decoder_factory) { | 229 const rtc::scoped_refptr<AudioDecoderFactory>& decoder_factory) { |
| 230 // TODO(peah): Add a DCHECK for external_apmwhen upstream dependencies have | |
|
Taylor Brandstetter
2017/06/28 07:19:38
Here too, and space between "apm" and "when"
peah-webrtc
2017/06/29 11:46:31
Done.
| |
| 231 // properly been resolved. | |
| 230 rtc::CritScope cs(shared_->crit_sec()); | 232 rtc::CritScope cs(shared_->crit_sec()); |
| 231 WebRtcSpl_Init(); | 233 WebRtcSpl_Init(); |
| 232 if (shared_->statistics().Initialized()) { | 234 if (shared_->statistics().Initialized()) { |
| 233 return 0; | 235 return 0; |
| 234 } | 236 } |
| 235 if (shared_->process_thread()) { | 237 if (shared_->process_thread()) { |
| 236 shared_->process_thread()->Start(); | 238 shared_->process_thread()->Start(); |
| 237 } | 239 } |
| 238 | 240 |
| 239 // Create an internal ADM if the user has not added an external | 241 // Create an internal ADM if the user has not added an external |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 330 // determine the actual number of channels anyway. | 332 // determine the actual number of channels anyway. |
| 331 // | 333 // |
| 332 // These functions may be changed; tracked here: | 334 // These functions may be changed; tracked here: |
| 333 // http://code.google.com/p/webrtc/issues/detail?id=204 | 335 // http://code.google.com/p/webrtc/issues/detail?id=204 |
| 334 shared_->audio_device()->StereoRecordingIsAvailable(&available); | 336 shared_->audio_device()->StereoRecordingIsAvailable(&available); |
| 335 if (shared_->audio_device()->SetStereoRecording(available) != 0) { | 337 if (shared_->audio_device()->SetStereoRecording(available) != 0) { |
| 336 shared_->SetLastError(VE_SOUNDCARD_ERROR, kTraceWarning, | 338 shared_->SetLastError(VE_SOUNDCARD_ERROR, kTraceWarning, |
| 337 "Init() failed to set mono/stereo recording mode"); | 339 "Init() failed to set mono/stereo recording mode"); |
| 338 } | 340 } |
| 339 | 341 |
| 340 if (!audioproc) { | 342 // TODO(peah): Remove this when upstream dependencies have properly been |
| 341 audioproc = AudioProcessing::Create(); | 343 // resolved. |
| 342 if (!audioproc) { | 344 AudioProcessing* apm = nullptr; |
| 345 if (!external_apm) { | |
| 346 audio_processing_ = AudioProcessing::Create(); | |
| 347 if (!audio_processing_) { | |
| 343 LOG(LS_ERROR) << "Failed to create AudioProcessing."; | 348 LOG(LS_ERROR) << "Failed to create AudioProcessing."; |
| 344 shared_->SetLastError(VE_NO_MEMORY); | 349 shared_->SetLastError(VE_NO_MEMORY); |
|
Taylor Brandstetter
2017/06/28 07:19:38
Can you add a comment explaining why failure to cr
peah-webrtc
2017/06/29 11:46:31
This makes sense and this is not clear at all. How
| |
| 345 return -1; | 350 return -1; |
| 346 } | 351 } |
| 352 apm = audio_processing_.get(); | |
| 353 } else { | |
| 354 apm = external_apm; | |
| 347 } | 355 } |
| 348 shared_->set_audio_processing(audioproc); | 356 |
| 357 shared_->set_audio_processing(apm); | |
| 349 | 358 |
| 350 // Set the error state for any failures in this block. | 359 // Set the error state for any failures in this block. |
| 351 shared_->SetLastError(VE_APM_ERROR); | 360 shared_->SetLastError(VE_APM_ERROR); |
| 352 // Configure AudioProcessing components. | 361 // Configure AudioProcessing components. |
| 353 if (audioproc->high_pass_filter()->Enable(true) != 0) { | 362 // TODO(peah): Move this initialization to webrtcvoiceengine.cc. |
| 363 if (apm->high_pass_filter()->Enable(true) != 0) { | |
| 354 LOG_F(LS_ERROR) << "Failed to enable high pass filter."; | 364 LOG_F(LS_ERROR) << "Failed to enable high pass filter."; |
| 355 return -1; | 365 return -1; |
| 356 } | 366 } |
| 357 if (audioproc->echo_cancellation()->enable_drift_compensation(false) != 0) { | 367 if (apm->echo_cancellation()->enable_drift_compensation(false) != 0) { |
| 358 LOG_F(LS_ERROR) << "Failed to disable drift compensation."; | 368 LOG_F(LS_ERROR) << "Failed to disable drift compensation."; |
| 359 return -1; | 369 return -1; |
| 360 } | 370 } |
| 361 if (audioproc->noise_suppression()->set_level(kDefaultNsMode) != 0) { | 371 if (apm->noise_suppression()->set_level(kDefaultNsMode) != 0) { |
| 362 LOG_F(LS_ERROR) << "Failed to set noise suppression level: " | 372 LOG_F(LS_ERROR) << "Failed to set noise suppression level: " |
| 363 << kDefaultNsMode; | 373 << kDefaultNsMode; |
| 364 return -1; | 374 return -1; |
| 365 } | 375 } |
| 366 GainControl* agc = audioproc->gain_control(); | 376 GainControl* agc = apm->gain_control(); |
| 367 if (agc->set_analog_level_limits(kMinVolumeLevel, kMaxVolumeLevel) != 0) { | 377 if (agc->set_analog_level_limits(kMinVolumeLevel, kMaxVolumeLevel) != 0) { |
| 368 LOG_F(LS_ERROR) << "Failed to set analog level limits with minimum: " | 378 LOG_F(LS_ERROR) << "Failed to set analog level limits with minimum: " |
| 369 << kMinVolumeLevel << " and maximum: " << kMaxVolumeLevel; | 379 << kMinVolumeLevel << " and maximum: " << kMaxVolumeLevel; |
| 370 return -1; | 380 return -1; |
| 371 } | 381 } |
| 372 if (agc->set_mode(kDefaultAgcMode) != 0) { | 382 if (agc->set_mode(kDefaultAgcMode) != 0) { |
| 373 LOG_F(LS_ERROR) << "Failed to set mode: " << kDefaultAgcMode; | 383 LOG_F(LS_ERROR) << "Failed to set mode: " << kDefaultAgcMode; |
| 374 return -1; | 384 return -1; |
| 375 } | 385 } |
| 376 if (agc->Enable(kDefaultAgcState) != 0) { | 386 if (agc->Enable(kDefaultAgcState) != 0) { |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 680 "TerminateInternal() failed to de-register audio callback " | 690 "TerminateInternal() failed to de-register audio callback " |
| 681 "for the ADM"); | 691 "for the ADM"); |
| 682 } | 692 } |
| 683 if (shared_->audio_device()->Terminate() != 0) { | 693 if (shared_->audio_device()->Terminate() != 0) { |
| 684 shared_->SetLastError(VE_AUDIO_DEVICE_MODULE_ERROR, kTraceError, | 694 shared_->SetLastError(VE_AUDIO_DEVICE_MODULE_ERROR, kTraceError, |
| 685 "TerminateInternal() failed to terminate the ADM"); | 695 "TerminateInternal() failed to terminate the ADM"); |
| 686 } | 696 } |
| 687 shared_->set_audio_device(nullptr); | 697 shared_->set_audio_device(nullptr); |
| 688 } | 698 } |
| 689 | 699 |
| 690 if (shared_->audio_processing()) { | 700 shared_->set_audio_processing(nullptr); |
| 691 shared_->set_audio_processing(nullptr); | |
| 692 } | |
| 693 | 701 |
| 694 return shared_->statistics().SetUnInitialized(); | 702 return shared_->statistics().SetUnInitialized(); |
| 695 } | 703 } |
| 696 | 704 |
| 697 void VoEBaseImpl::GetPlayoutData(int sample_rate, size_t number_of_channels, | 705 void VoEBaseImpl::GetPlayoutData(int sample_rate, size_t number_of_channels, |
| 698 size_t number_of_frames, bool feed_data_to_apm, | 706 size_t number_of_frames, bool feed_data_to_apm, |
| 699 void* audio_data, int64_t* elapsed_time_ms, | 707 void* audio_data, int64_t* elapsed_time_ms, |
| 700 int64_t* ntp_time_ms) { | 708 int64_t* ntp_time_ms) { |
| 701 assert(shared_->output_mixer() != nullptr); | 709 assert(shared_->output_mixer() != nullptr); |
| 702 | 710 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 746 shared_->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, | 754 shared_->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, |
| 747 "AssociateSendChannel() failed to locate accociate_send_channel"); | 755 "AssociateSendChannel() failed to locate accociate_send_channel"); |
| 748 return -1; | 756 return -1; |
| 749 } | 757 } |
| 750 | 758 |
| 751 channel_ptr->set_associate_send_channel(ch); | 759 channel_ptr->set_associate_send_channel(ch); |
| 752 return 0; | 760 return 0; |
| 753 } | 761 } |
| 754 | 762 |
| 755 } // namespace webrtc | 763 } // namespace webrtc |
| OLD | NEW |