Chromium Code Reviews| Index: webrtc/media/engine/webrtcvoiceengine.cc |
| diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc |
| index b39be5b2b253e4f853cb731176cf9bbe2a833a66..1f9794944ead90d562286e1ab8080b854629f466 100644 |
| --- a/webrtc/media/engine/webrtcvoiceengine.cc |
| +++ b/webrtc/media/engine/webrtcvoiceengine.cc |
| @@ -163,7 +163,8 @@ rtc::Optional<std::string> GetAudioNetworkAdaptorConfig( |
| webrtc::AudioState::Config MakeAudioStateConfig( |
| VoEWrapper* voe_wrapper, |
| - rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) { |
| + rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, |
| + rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) { |
| webrtc::AudioState::Config config; |
| config.voice_engine = voe_wrapper->engine(); |
| if (audio_mixer) { |
| @@ -171,6 +172,7 @@ webrtc::AudioState::Config MakeAudioStateConfig( |
| } else { |
| config.audio_mixer = webrtc::AudioMixerImpl::Create(); |
| } |
| + config.audio_processing = audio_processing; |
| return config; |
| } |
| @@ -214,11 +216,13 @@ WebRtcVoiceEngine::WebRtcVoiceEngine( |
| webrtc::AudioDeviceModule* adm, |
| const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory, |
| const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, |
| - rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer) |
| + rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, |
| + rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) |
| : WebRtcVoiceEngine(adm, |
| encoder_factory, |
| decoder_factory, |
| audio_mixer, |
| + audio_processing, |
| nullptr) {} |
| WebRtcVoiceEngine::WebRtcVoiceEngine( |
| @@ -226,11 +230,13 @@ WebRtcVoiceEngine::WebRtcVoiceEngine( |
| const rtc::scoped_refptr<webrtc::AudioEncoderFactory>& encoder_factory, |
| const rtc::scoped_refptr<webrtc::AudioDecoderFactory>& decoder_factory, |
| rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer, |
| + rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing, |
| VoEWrapper* voe_wrapper) |
| : adm_(adm), |
| encoder_factory_(encoder_factory), |
| decoder_factory_(decoder_factory), |
| audio_mixer_(audio_mixer), |
| + apm_(audio_processing), |
| voe_wrapper_(voe_wrapper) { |
| // This may be called from any thread, so detach thread checkers. |
| worker_thread_checker_.DetachFromThread(); |
| @@ -238,6 +244,7 @@ WebRtcVoiceEngine::WebRtcVoiceEngine( |
| LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; |
| RTC_DCHECK(decoder_factory); |
| RTC_DCHECK(encoder_factory); |
| + RTC_DCHECK(audio_processing); |
| // The rest of our initialization will happen in Init. |
| } |
| @@ -284,8 +291,8 @@ void WebRtcVoiceEngine::Init() { |
| webrtc::Trace::SetTraceCallback(this); |
| webrtc::Trace::set_level_filter(kElevatedTraceFilter); |
| LOG(LS_INFO) << webrtc::VoiceEngine::GetVersionString(); |
| - RTC_CHECK_EQ(0, voe_wrapper_->base()->Init(adm_.get(), nullptr, |
| - decoder_factory_)); |
| + RTC_CHECK_EQ(0, |
| + voe_wrapper_->base()->Init(adm_.get(), apm(), decoder_factory_)); |
| webrtc::Trace::set_level_filter(kDefaultTraceFilter); |
| // No ADM supplied? Get the default one from VoE. |
| @@ -294,15 +301,12 @@ void WebRtcVoiceEngine::Init() { |
| } |
| RTC_DCHECK(adm_); |
| - apm_ = voe_wrapper_->base()->audio_processing(); |
| - RTC_DCHECK(apm_); |
| - |
| transmit_mixer_ = voe_wrapper_->base()->transmit_mixer(); |
| RTC_DCHECK(transmit_mixer_); |
| // Save the default AGC configuration settings. This must happen before |
| // calling ApplyOptions or the default will be overwritten. |
| - default_agc_config_ = webrtc::apm_helpers::GetAgcConfig(apm_); |
| + default_agc_config_ = webrtc::apm_helpers::GetAgcConfig(apm()); |
| // Set default engine options. |
| { |
| @@ -336,8 +340,8 @@ void WebRtcVoiceEngine::Init() { |
| // May be null for VoE injected for testing. |
| if (voe()->engine()) { |
| - audio_state_ = |
| - webrtc::AudioState::Create(MakeAudioStateConfig(voe(), audio_mixer_)); |
| + audio_state_ = webrtc::AudioState::Create( |
| + MakeAudioStateConfig(voe(), audio_mixer_, apm_)); |
|
Taylor Brandstetter
2017/06/25 19:13:12
nit: Should use either "apm_" or "apm()" consisten
peah-webrtc
2017/06/27 14:57:40
That does not work here, as apm() returns a AudioP
|
| } |
| initialized_ = true; |
| @@ -507,7 +511,7 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) { |
| << default_agc_config_.targetLeveldBOv << "dB to -" |
| << config.targetLeveldBOv << "dB"; |
| } |
| - webrtc::apm_helpers::SetAgcConfig(apm_, config); |
| + webrtc::apm_helpers::SetAgcConfig(apm(), config); |
| } |
| if (options.intelligibility_enhancer) { |
| @@ -750,8 +754,7 @@ webrtc::AudioDeviceModule* WebRtcVoiceEngine::adm() { |
| webrtc::AudioProcessing* WebRtcVoiceEngine::apm() { |
| RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
| - RTC_DCHECK(apm_); |
| - return apm_; |
| + return apm_.get(); |
| } |
| webrtc::voe::TransmitMixer* WebRtcVoiceEngine::transmit_mixer() { |