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

Unified Diff: webrtc/media/engine/webrtcvoiceengine.cc

Issue 2961723004: Allow an external audio processing module to be used in WebRTC (Closed)
Patch Set: Moved creation of APMs from CreateVoiceEngines Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.h ('k') | webrtc/media/engine/webrtcvoiceengine_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.h ('k') | webrtc/media/engine/webrtcvoiceengine_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698