| 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_));
|
| }
|
|
|
| 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() {
|
|
|