Move APM initialization into WebRtcVoiceEngine

TBR=kwiberg@webrtc.org

Bug: webrtc:4690
Change-Id: Icd8590d3f7476c1a841c7e2425d1134d224b1a53
Reviewed-on: https://webrtc-review.googlesource.com/23480
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20855}
diff --git a/media/engine/apm_helpers.cc b/media/engine/apm_helpers.cc
index 0f67be1..5c12faa 100644
--- a/media/engine/apm_helpers.cc
+++ b/media/engine/apm_helpers.cc
@@ -18,6 +18,24 @@
 namespace webrtc {
 namespace apm_helpers {
 
+void Init(AudioProcessing* apm) {
+  RTC_DCHECK(apm);
+
+  constexpr int kMinVolumeLevel = 0;
+  constexpr int kMaxVolumeLevel = 255;
+
+  // This is the initialization which used to happen in VoEBase::Init(), but
+  // which is not covered by the WVoE::ApplyOptions().
+  if (apm->echo_cancellation()->enable_drift_compensation(false) != 0) {
+    RTC_DLOG(LS_ERROR) << "Failed to disable drift compensation.";
+  }
+  GainControl* gc = apm->gain_control();
+  if (gc->set_analog_level_limits(kMinVolumeLevel, kMaxVolumeLevel) != 0) {
+    RTC_DLOG(LS_ERROR) << "Failed to set analog level limits with minimum: "
+        << kMinVolumeLevel << " and maximum: " << kMaxVolumeLevel;
+  }
+}
+
 AgcConfig GetAgcConfig(AudioProcessing* apm) {
   RTC_DCHECK(apm);
   AgcConfig result;
diff --git a/media/engine/apm_helpers.h b/media/engine/apm_helpers.h
index a4ddd49..caa485f 100644
--- a/media/engine/apm_helpers.h
+++ b/media/engine/apm_helpers.h
@@ -31,6 +31,7 @@
 
 namespace apm_helpers {
 
+void Init(AudioProcessing* apm);
 AgcConfig GetAgcConfig(AudioProcessing* apm);
 void SetAgcConfig(AudioProcessing* apm,
                   const AgcConfig& config);
diff --git a/media/engine/apm_helpers_unittest.cc b/media/engine/apm_helpers_unittest.cc
index 4b537af..c20eb6f 100644
--- a/media/engine/apm_helpers_unittest.cc
+++ b/media/engine/apm_helpers_unittest.cc
@@ -29,6 +29,7 @@
     Config config;
     config.Set<ExperimentalAgc>(new ExperimentalAgc(false));
     apm_ = rtc::scoped_refptr<AudioProcessing>(AudioProcessing::Create(config));
+    apm_helpers::Init(apm());
     EXPECT_EQ(0, voe_wrapper_.base()->Init(
                      &mock_audio_device_, apm_,
                      MockAudioDecoderFactory::CreateEmptyFactory()));
@@ -102,14 +103,12 @@
 TEST(ApmHelpersTest, AgcStatus_DefaultMode) {
   TestHelper helper;
   GainControl* gc = helper.apm()->gain_control();
+  EXPECT_FALSE(gc->is_enabled());
 #if defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR
-  EXPECT_FALSE(gc->is_enabled());
-  EXPECT_EQ(GainControl::kAdaptiveDigital, gc->mode());
+  EXPECT_EQ(GainControl::kAdaptiveAnalog, gc->mode());
 #elif defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
-  EXPECT_FALSE(gc->is_enabled());
   EXPECT_EQ(GainControl::kFixedDigital, gc->mode());
 #else
-  EXPECT_TRUE(gc->is_enabled());
   EXPECT_EQ(GainControl::kAdaptiveAnalog, gc->mode());
 #endif
 }
@@ -266,7 +265,7 @@
 // of duplicating all relevant tests from audio_processing_test.cc.
 TEST(ApmHelpersTest, HighPassFilter_DefaultMode) {
   TestHelper helper;
-  EXPECT_TRUE(helper.apm()->high_pass_filter()->is_enabled());
+  EXPECT_FALSE(helper.apm()->high_pass_filter()->is_enabled());
 }
 
 // TODO(solenberg): Move this test to a better place - added here for the sake
diff --git a/media/engine/fakewebrtcvoiceengine.h b/media/engine/fakewebrtcvoiceengine.h
index 9c9a428..444afdd 100644
--- a/media/engine/fakewebrtcvoiceengine.h
+++ b/media/engine/fakewebrtcvoiceengine.h
@@ -65,9 +65,8 @@
     inited_ = true;
     return 0;
   }
-  WEBRTC_FUNC(Terminate, ()) {
+  void Terminate() override {
     inited_ = false;
-    return 0;
   }
   webrtc::voe::TransmitMixer* transmit_mixer() override {
     return transmit_mixer_;
diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc
index 9630bc4..808c5d2 100644
--- a/media/engine/webrtcvoiceengine.cc
+++ b/media/engine/webrtcvoiceengine.cc
@@ -70,7 +70,6 @@
 // See also http://tools.ietf.org/html/draft-jennings-rtcweb-qos-00
 const rtc::DiffServCodePoint kAudioDscpValue = rtc::DSCP_EF;
 
-// Constants from voice_engine_defines.h.
 const int kMinTelephoneEventCode = 0;           // RFC4733 (Section 2.3.1)
 const int kMaxTelephoneEventCode = 255;
 
@@ -299,7 +298,7 @@
 #endif  // WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE
   RTC_CHECK(adm());
   webrtc::adm_helpers::Init(adm());
-
+  webrtc::apm_helpers::Init(apm());
   RTC_CHECK_EQ(0, voe_wrapper_->base()->Init(adm(), apm(), decoder_factory_));
   transmit_mixer_ = voe_wrapper_->base()->transmit_mixer();
   RTC_DCHECK(transmit_mixer_);
@@ -331,11 +330,6 @@
     RTC_DCHECK(error);
   }
 
-  // Set default audio devices.
-#if !defined(WEBRTC_IOS)
-  apm()->Initialize();
-#endif  // !WEBRTC_IOS
-
   // May be null for VoE injected for testing.
   if (voe()->engine()) {
     audio_state_ = webrtc::AudioState::Create(
@@ -723,6 +717,7 @@
 
 webrtc::AudioProcessing* WebRtcVoiceEngine::apm() const {
   RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
+  RTC_DCHECK(apm_);
   return apm_.get();
 }
 
diff --git a/media/engine/webrtcvoiceengine_unittest.cc b/media/engine/webrtcvoiceengine_unittest.cc
index 6573b7b..b03c8df 100644
--- a/media/engine/webrtcvoiceengine_unittest.cc
+++ b/media/engine/webrtcvoiceengine_unittest.cc
@@ -68,6 +68,16 @@
 
 constexpr int kRtpHistoryMs = 5000;
 
+constexpr webrtc::GainControl::Mode kDefaultAgcMode =
+#if defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID)
+    webrtc::GainControl::kFixedDigital;
+#else
+    webrtc::GainControl::kAdaptiveAnalog;
+#endif
+
+constexpr webrtc::NoiseSuppression::Level kDefaultNsLevel =
+    webrtc::NoiseSuppression::kHigh;
+
 class FakeVoEWrapper : public cricket::VoEWrapper {
  public:
   explicit FakeVoEWrapper(cricket::FakeWebRtcVoiceEngine* engine)
@@ -137,7 +147,6 @@
   EXPECT_CALL(*apm, GetConfig()).WillRepeatedly(ReturnPointee(&apm_config));
   EXPECT_CALL(*apm, ApplyConfig(_)).WillRepeatedly(SaveArg<0>(&apm_config));
   EXPECT_CALL(*apm, SetExtraOptions(testing::_));
-  EXPECT_CALL(*apm, Initialize()).WillOnce(Return(0));
   EXPECT_CALL(*apm, DetachAecDump());
   StrictMock<MockTransmitMixer> transmit_mixer;
   EXPECT_CALL(transmit_mixer, EnableStereoChannelSwapping(false));
@@ -183,12 +192,15 @@
     EXPECT_CALL(*apm_, GetConfig()).WillRepeatedly(ReturnPointee(&apm_config_));
     EXPECT_CALL(*apm_, ApplyConfig(_)).WillRepeatedly(SaveArg<0>(&apm_config_));
     EXPECT_CALL(*apm_, SetExtraOptions(testing::_));
-    EXPECT_CALL(*apm_, Initialize()).WillOnce(Return(0));
     EXPECT_CALL(*apm_, DetachAecDump());
     // Default Options.
     EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
     EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+    EXPECT_CALL(apm_ec_, enable_drift_compensation(false)).WillOnce(Return(0));
+    EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
     EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+    EXPECT_CALL(apm_gc_, set_analog_level_limits(0, 255)).WillOnce(Return(0));
+    EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
     EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
     EXPECT_CALL(apm_vd_, Enable(true)).WillOnce(Return(0));
     EXPECT_CALL(transmit_mixer_, EnableStereoChannelSwapping(false));
@@ -210,6 +222,7 @@
     engine_->Init();
     send_parameters_.codecs.push_back(kPcmuCodec);
     recv_parameters_.codecs.push_back(kPcmuCodec);
+
     // Default Options.
     EXPECT_TRUE(IsHighPassFilterEnabled());
   }
@@ -2221,6 +2234,7 @@
   EXPECT_CALL(adm_,
               BuiltInAGCIsAvailable()).Times(2).WillRepeatedly(Return(false));
   EXPECT_CALL(adm_, SetAGC(true)).Times(2).WillRepeatedly(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).Times(2).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).Times(2).WillOnce(Return(0));
   send_parameters_.options.tx_agc_target_dbov = 3;
   send_parameters_.options.tx_agc_digital_compression_gain = 9;
@@ -2775,6 +2789,7 @@
   EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
   send_parameters_.options.auto_gain_control = false;
   SetSendParameters(send_parameters_);
@@ -2783,6 +2798,7 @@
   EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
   send_parameters_.options.auto_gain_control = true;
   send_parameters_.options.adjust_agc_delta = rtc::nullopt;
@@ -2792,7 +2808,9 @@
   EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
   EXPECT_CALL(apm_vd_, Enable(false)).WillOnce(Return(0));
   EXPECT_CALL(transmit_mixer_, EnableStereoChannelSwapping(true));
@@ -2807,7 +2825,9 @@
   EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
   EXPECT_CALL(apm_vd_, Enable(false)).WillOnce(Return(0));
   EXPECT_CALL(transmit_mixer_, EnableStereoChannelSwapping(true));
@@ -2858,7 +2878,9 @@
   EXPECT_CALL(adm_, SetAGC(true)).Times(2).WillRepeatedly(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).Times(2).WillRepeatedly(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).Times(2).WillRepeatedly(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).Times(2).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).Times(2).WillRepeatedly(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).Times(2).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(true)).Times(2).WillRepeatedly(Return(0));
   EXPECT_TRUE(channel1->SetSendParameters(parameters_options_all));
   EXPECT_EQ(parameters_options_all.options, channel1->options());
@@ -2871,7 +2893,9 @@
   EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
   EXPECT_TRUE(channel1->SetSendParameters(parameters_options_no_ns));
   cricket::AudioOptions expected_options = parameters_options_all.options;
@@ -2886,7 +2910,9 @@
   EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
   EXPECT_TRUE(channel2->SetSendParameters(parameters_options_no_agc));
   expected_options.echo_cancellation = true;
@@ -2897,21 +2923,27 @@
   EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
   EXPECT_TRUE(channel_->SetSendParameters(parameters_options_all));
 
   EXPECT_CALL(adm_, SetAGC(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
   channel1->SetSend(true);
 
   EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(true)).WillOnce(Return(0));
   channel2->SetSend(true);
 
@@ -2923,7 +2955,9 @@
   EXPECT_CALL(adm_, SetAGC(false)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, Enable(true)).WillOnce(Return(0));
   EXPECT_CALL(apm_ec_, enable_metrics(true)).WillOnce(Return(0));
+  EXPECT_CALL(apm_gc_, set_mode(kDefaultAgcMode)).WillOnce(Return(0));
   EXPECT_CALL(apm_gc_, Enable(false)).WillOnce(Return(0));
+  EXPECT_CALL(apm_ns_, set_level(kDefaultNsLevel)).WillOnce(Return(0));
   EXPECT_CALL(apm_ns_, Enable(false)).WillOnce(Return(0));
   EXPECT_TRUE(channel2->SetSendParameters(parameters_options_no_agc_nor_ns));
   expected_options.echo_cancellation = true;
diff --git a/test/mock_voice_engine.h b/test/mock_voice_engine.h
index 7fec120..57c6b58 100644
--- a/test/mock_voice_engine.h
+++ b/test/mock_voice_engine.h
@@ -95,7 +95,7 @@
           AudioProcessing* external_apm,
           const rtc::scoped_refptr<AudioDecoderFactory>& decoder_factory));
   MOCK_METHOD0(transmit_mixer, voe::TransmitMixer*());
-  MOCK_METHOD0(Terminate, int());
+  MOCK_METHOD0(Terminate, void());
   MOCK_METHOD0(CreateChannel, int());
   MOCK_METHOD1(CreateChannel, int(const ChannelConfig& config));
   MOCK_METHOD1(DeleteChannel, int(int channel));
diff --git a/voice_engine/BUILD.gn b/voice_engine/BUILD.gn
index 23e4f7a..caafcca 100644
--- a/voice_engine/BUILD.gn
+++ b/voice_engine/BUILD.gn
@@ -28,7 +28,6 @@
     "utility.h",
     "voe_base_impl.cc",
     "voe_base_impl.h",
-    "voice_engine_defines.h",
     "voice_engine_impl.cc",
     "voice_engine_impl.h",
   ]
diff --git a/voice_engine/channel.cc b/voice_engine/channel.cc
index 20dc87f..bd8dbf4 100644
--- a/voice_engine/channel.cc
+++ b/voice_engine/channel.cc
@@ -57,6 +57,10 @@
 constexpr int64_t kMaxRetransmissionWindowMs = 1000;
 constexpr int64_t kMinRetransmissionWindowMs = 30;
 
+// Video Sync.
+constexpr int kVoiceEngineMinMinPlayoutDelayMs = 0;
+constexpr int kVoiceEngineMaxMinPlayoutDelayMs = 10000;
+
 }  // namespace
 
 const int kTelephoneEventAttenuationdB = 10;
diff --git a/voice_engine/channel.h b/voice_engine/channel.h
index 548b331..8431b01 100644
--- a/voice_engine/channel.h
+++ b/voice_engine/channel.h
@@ -32,7 +32,6 @@
 #include "voice_engine/audio_level.h"
 #include "voice_engine/include/voe_base.h"
 #include "voice_engine/shared_data.h"
-#include "voice_engine/voice_engine_defines.h"
 
 namespace rtc {
 class TimestampWrapAroundHandler;
diff --git a/voice_engine/include/voe_base.h b/voice_engine/include/voe_base.h
index 2f74fcc..a995325 100644
--- a/voice_engine/include/voe_base.h
+++ b/voice_engine/include/voe_base.h
@@ -102,8 +102,7 @@
   virtual voe::TransmitMixer* transmit_mixer() = 0;
 
   // Terminates all VoiceEngine functions and releases allocated resources.
-  // Returns 0.
-  virtual int Terminate() = 0;
+  virtual void Terminate() = 0;
 
   // Creates a new channel and allocates the required resources for it.
   // The second version accepts a |config| struct which includes an Audio Coding
diff --git a/voice_engine/shared_data.h b/voice_engine/shared_data.h
index d313c24..7978ff7 100644
--- a/voice_engine/shared_data.h
+++ b/voice_engine/shared_data.h
@@ -22,7 +22,6 @@
 #include "rtc_base/thread_annotations.h"
 #include "rtc_base/thread_checker.h"
 #include "voice_engine/channel_manager.h"
-#include "voice_engine/voice_engine_defines.h"
 
 class ProcessThread;
 
diff --git a/voice_engine/transmit_mixer.h b/voice_engine/transmit_mixer.h
index 6cfe070..42b6212 100644
--- a/voice_engine/transmit_mixer.h
+++ b/voice_engine/transmit_mixer.h
@@ -20,7 +20,6 @@
 #include "rtc_base/criticalsection.h"
 #include "voice_engine/audio_level.h"
 #include "voice_engine/include/voe_base.h"
-#include "voice_engine/voice_engine_defines.h"
 
 #if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS)
 #define WEBRTC_VOICE_ENGINE_TYPING_DETECTION 1
diff --git a/voice_engine/utility.cc b/voice_engine/utility.cc
index ecc3e22..9398702 100644
--- a/voice_engine/utility.cc
+++ b/voice_engine/utility.cc
@@ -17,7 +17,6 @@
 #include "modules/include/module_common_types.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "voice_engine/voice_engine_defines.h"
 
 namespace webrtc {
 namespace voe {
diff --git a/voice_engine/utility_unittest.cc b/voice_engine/utility_unittest.cc
index cd91d21..c798582 100644
--- a/voice_engine/utility_unittest.cc
+++ b/voice_engine/utility_unittest.cc
@@ -16,7 +16,6 @@
 #include "rtc_base/format_macros.h"
 #include "test/gtest.h"
 #include "voice_engine/utility.h"
-#include "voice_engine/voice_engine_defines.h"
 
 namespace webrtc {
 namespace voe {
diff --git a/voice_engine/voe_base_impl.cc b/voice_engine/voe_base_impl.cc
index 695b06d..5d49872 100644
--- a/voice_engine/voe_base_impl.cc
+++ b/voice_engine/voe_base_impl.cc
@@ -55,6 +55,8 @@
   RTC_DCHECK(shared_->transmit_mixer() != nullptr);
   RTC_DCHECK(shared_->audio_device() != nullptr);
 
+  constexpr uint32_t kMaxVolumeLevel = 255;
+
   uint32_t max_volume = 0;
   uint16_t voe_mic_level = 0;
   // Check for zero to skip this calculation; the consumer may use this to
@@ -155,57 +157,15 @@
   shared_->set_audio_device(audio_device);
   shared_->set_audio_processing(audio_processing);
 
-  // Configure AudioProcessing components.
-  // TODO(peah): Move this initialization to webrtcvoiceengine.cc.
-  if (audio_processing->high_pass_filter()->Enable(true) != 0) {
-    RTC_LOG_F(LS_ERROR) << "Failed to enable high pass filter.";
-    return -1;
-  }
-  if (audio_processing->echo_cancellation()->enable_drift_compensation(false) !=
-      0) {
-    RTC_LOG_F(LS_ERROR) << "Failed to disable drift compensation.";
-    return -1;
-  }
-  if (audio_processing->noise_suppression()->set_level(kDefaultNsMode) != 0) {
-    RTC_LOG_F(LS_ERROR) << "Failed to set noise suppression level: "
-                        << kDefaultNsMode;
-    return -1;
-  }
-  GainControl* agc = audio_processing->gain_control();
-  if (agc->set_analog_level_limits(kMinVolumeLevel, kMaxVolumeLevel) != 0) {
-    RTC_LOG_F(LS_ERROR) << "Failed to set analog level limits with minimum: "
-                        << kMinVolumeLevel
-                        << " and maximum: " << kMaxVolumeLevel;
-    return -1;
-  }
-  if (agc->set_mode(kDefaultAgcMode) != 0) {
-    RTC_LOG_F(LS_ERROR) << "Failed to set mode: " << kDefaultAgcMode;
-    return -1;
-  }
-  if (agc->Enable(kDefaultAgcState) != 0) {
-    RTC_LOG_F(LS_ERROR) << "Failed to set agc state: " << kDefaultAgcState;
-    return -1;
-  }
-
-#ifdef WEBRTC_VOICE_ENGINE_AGC
-  bool agc_enabled =
-      agc->mode() == GainControl::kAdaptiveAnalog && agc->is_enabled();
-  if (shared_->audio_device()->SetAGC(agc_enabled) != 0) {
-    RTC_LOG_F(LS_ERROR) << "Failed to set agc to enabled: " << agc_enabled;
-    // TODO(ajm): No error return here due to
-    // https://code.google.com/p/webrtc/issues/detail?id=1464
-  }
-#endif
-
   RTC_DCHECK(decoder_factory);
   decoder_factory_ = decoder_factory;
 
   return 0;
 }
 
-int VoEBaseImpl::Terminate() {
+void VoEBaseImpl::Terminate() {
   rtc::CritScope cs(shared_->crit_sec());
-  return TerminateInternal();
+  TerminateInternal();
 }
 
 int VoEBaseImpl::CreateChannel() {
@@ -436,7 +396,7 @@
   return ret;
 }
 
-int32_t VoEBaseImpl::TerminateInternal() {
+void VoEBaseImpl::TerminateInternal() {
   // Delete any remaining channel objects
   shared_->channel_manager().DestroyAllChannels();
 
@@ -446,7 +406,5 @@
 
   shared_->set_audio_device(nullptr);
   shared_->set_audio_processing(nullptr);
-
-  return 0;
 }
 }  // namespace webrtc
diff --git a/voice_engine/voe_base_impl.h b/voice_engine/voe_base_impl.h
index 4cd6c86..b96be9e 100644
--- a/voice_engine/voe_base_impl.h
+++ b/voice_engine/voe_base_impl.h
@@ -31,7 +31,7 @@
   voe::TransmitMixer* transmit_mixer() override {
     return shared_->transmit_mixer();
   }
-  int Terminate() override;
+  void Terminate() override;
 
   int CreateChannel() override;
   int CreateChannel(const ChannelConfig& config) override;
@@ -89,7 +89,7 @@
   int32_t StopPlayout();
   int32_t StartSend();
   int32_t StopSend();
-  int32_t TerminateInternal();
+  void TerminateInternal();
 
   void GetPlayoutData(int sample_rate, size_t number_of_channels,
                       size_t number_of_frames, bool feed_data_to_apm,
diff --git a/voice_engine/voe_base_unittest.cc b/voice_engine/voe_base_unittest.cc
index 51fdf4e..56c3d13 100644
--- a/voice_engine/voe_base_unittest.cc
+++ b/voice_engine/voe_base_unittest.cc
@@ -28,7 +28,7 @@
   }
 
   ~VoEBaseTest() {
-    EXPECT_EQ(0, base_->Terminate());
+    base_->Terminate();
     EXPECT_EQ(1, base_->Release());
     EXPECT_TRUE(VoiceEngine::Delete(voe_));
   }
diff --git a/voice_engine/voice_engine_defines.h b/voice_engine/voice_engine_defines.h
index 35f9492..b4d928a 100644
--- a/voice_engine/voice_engine_defines.h
+++ b/voice_engine/voice_engine_defines.h
@@ -8,43 +8,4 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-/*
- *  This file contains common constants for VoiceEngine, as well as
- *  platform specific settings.
- */
-
-#ifndef VOICE_ENGINE_VOICE_ENGINE_DEFINES_H_
-#define VOICE_ENGINE_VOICE_ENGINE_DEFINES_H_
-
-#include "modules/audio_processing/include/audio_processing.h"
-
-namespace webrtc {
-
-// VolumeControl
-enum { kMinVolumeLevel = 0 };
-enum { kMaxVolumeLevel = 255 };
-
-// Audio processing
-const NoiseSuppression::Level kDefaultNsMode = NoiseSuppression::kModerate;
-const GainControl::Mode kDefaultAgcMode =
-#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
-    GainControl::kAdaptiveDigital;
-#else
-    GainControl::kAdaptiveAnalog;
-#endif
-const bool kDefaultAgcState =
-#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
-    false;
-#else
-    true;
-#endif
-
-// VideoSync
-// Lowest minimum playout delay
-enum { kVoiceEngineMinMinPlayoutDelayMs = 0 };
-// Highest minimum playout delay
-enum { kVoiceEngineMaxMinPlayoutDelayMs = 10000 };
-
-}  // namespace webrtc
-
-#endif  // VOICE_ENGINE_VOICE_ENGINE_DEFINES_H_
+// TODO(solenberg): Remove this file once downstream dependencies are removed.