diff --git a/modules/audio_device/android/audio_device_template.h b/modules/audio_device/android/audio_device_template.h
index 72e008c..6b9cc0b 100644
--- a/modules/audio_device/android/audio_device_template.h
+++ b/modules/audio_device/android/audio_device_template.h
@@ -231,18 +231,6 @@
     return false;
   }
 
-  int32_t SetWaveOutVolume(
-      uint16_t volumeLeft, uint16_t volumeRight) override {
-     FATAL() << "Should never be called";
-    return -1;
-  }
-
-  int32_t WaveOutVolume(
-      uint16_t& volumeLeft, uint16_t& volumeRight) const override {
-    FATAL() << "Should never be called";
-    return -1;
-  }
-
   int32_t InitSpeaker() override {
     LOG(INFO) << __FUNCTION__;
     return 0;
diff --git a/modules/audio_device/audio_device_data_observer.cc b/modules/audio_device/audio_device_data_observer.cc
index 849f529..60ea1cd 100644
--- a/modules/audio_device/audio_device_data_observer.cc
+++ b/modules/audio_device/audio_device_data_observer.cc
@@ -179,14 +179,6 @@
   bool Recording() const override { return impl_->Recording(); }
   int32_t SetAGC(bool enable) override { return impl_->SetAGC(enable); }
   bool AGC() const override { return impl_->AGC(); }
-  int32_t SetWaveOutVolume(uint16_t volume_left,
-                           uint16_t volume_right) override {
-    return impl_->SetWaveOutVolume(volume_left, volume_right);
-  }
-  int32_t WaveOutVolume(uint16_t* volume_left,
-                        uint16_t* volume_right) const override {
-    return impl_->WaveOutVolume(volume_left, volume_right);
-  }
   int32_t InitSpeaker() override { return impl_->InitSpeaker(); }
   bool SpeakerIsInitialized() const override {
     return impl_->SpeakerIsInitialized();
diff --git a/modules/audio_device/audio_device_generic.h b/modules/audio_device/audio_device_generic.h
index 4807c63..ca31327 100644
--- a/modules/audio_device/audio_device_generic.h
+++ b/modules/audio_device/audio_device_generic.h
@@ -75,12 +75,6 @@
   virtual int32_t SetAGC(bool enable) = 0;
   virtual bool AGC() const = 0;
 
-  // Volume control based on the Windows Wave API (Windows only)
-  virtual int32_t SetWaveOutVolume(uint16_t volumeLeft,
-                                   uint16_t volumeRight) = 0;
-  virtual int32_t WaveOutVolume(uint16_t& volumeLeft,
-                                uint16_t& volumeRight) const = 0;
-
   // Audio mixer initialization
   virtual int32_t InitSpeaker() = 0;
   virtual bool SpeakerIsInitialized() const = 0;
diff --git a/modules/audio_device/audio_device_impl.cc b/modules/audio_device/audio_device_impl.cc
index d7ab409..bae4f6a 100644
--- a/modules/audio_device/audio_device_impl.cc
+++ b/modules/audio_device/audio_device_impl.cc
@@ -576,40 +576,6 @@
 }
 
 // ----------------------------------------------------------------------------
-//  SetWaveOutVolume
-// ----------------------------------------------------------------------------
-
-int32_t AudioDeviceModuleImpl::SetWaveOutVolume(uint16_t volumeLeft,
-                                                uint16_t volumeRight) {
-  LOG(INFO) << __FUNCTION__ << "(" << volumeLeft << ", " << volumeRight << ")";
-  CHECK_INITIALIZED();
-  return (_ptrAudioDevice->SetWaveOutVolume(volumeLeft, volumeRight));
-}
-
-// ----------------------------------------------------------------------------
-//  WaveOutVolume
-// ----------------------------------------------------------------------------
-
-int32_t AudioDeviceModuleImpl::WaveOutVolume(uint16_t* volumeLeft,
-                                             uint16_t* volumeRight) const {
-  LOG(INFO) << __FUNCTION__;
-  CHECK_INITIALIZED();
-
-  uint16_t volLeft(0);
-  uint16_t volRight(0);
-
-  if (_ptrAudioDevice->WaveOutVolume(volLeft, volRight) == -1) {
-    return -1;
-  }
-
-  *volumeLeft = volLeft;
-  *volumeRight = volRight;
-  LOG(INFO) << "output: " << *volumeLeft << ", " << *volumeRight;
-
-  return (0);
-}
-
-// ----------------------------------------------------------------------------
 //  SpeakerIsInitialized
 // ----------------------------------------------------------------------------
 
diff --git a/modules/audio_device/audio_device_impl.h b/modules/audio_device/audio_device_impl.h
index 0720390..9fdc93b 100644
--- a/modules/audio_device/audio_device_impl.h
+++ b/modules/audio_device/audio_device_impl.h
@@ -98,11 +98,6 @@
   int32_t SetAGC(bool enable) override;
   bool AGC() const override;
 
-  // Volume control based on the Windows Wave API (Windows only)
-  int32_t SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight) override;
-  int32_t WaveOutVolume(uint16_t* volumeLeft,
-                        uint16_t* volumeRight) const override;
-
   // Audio mixer initialization
   int32_t InitSpeaker() override;
   bool SpeakerIsInitialized() const override;
diff --git a/modules/audio_device/dummy/audio_device_dummy.cc b/modules/audio_device/dummy/audio_device_dummy.cc
index 558bd1b..d954a27 100644
--- a/modules/audio_device/dummy/audio_device_dummy.cc
+++ b/modules/audio_device/dummy/audio_device_dummy.cc
@@ -83,16 +83,6 @@
 
 bool AudioDeviceDummy::AGC() const { return false; }
 
-int32_t AudioDeviceDummy::SetWaveOutVolume(uint16_t volumeLeft,
-                                           uint16_t volumeRight) {
-  return -1;
-}
-
-int32_t AudioDeviceDummy::WaveOutVolume(uint16_t& volumeLeft,
-                                        uint16_t& volumeRight) const {
-  return -1;
-}
-
 int32_t AudioDeviceDummy::InitSpeaker() { return -1; }
 
 bool AudioDeviceDummy::SpeakerIsInitialized() const { return false; }
diff --git a/modules/audio_device/dummy/audio_device_dummy.h b/modules/audio_device/dummy/audio_device_dummy.h
index 72a0eb1..fd9a915 100644
--- a/modules/audio_device/dummy/audio_device_dummy.h
+++ b/modules/audio_device/dummy/audio_device_dummy.h
@@ -69,11 +69,6 @@
   int32_t SetAGC(bool enable) override;
   bool AGC() const override;
 
-  // Volume control based on the Windows Wave API (Windows only)
-  int32_t SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight) override;
-  int32_t WaveOutVolume(uint16_t& volumeLeft,
-                        uint16_t& volumeRight) const override;
-
   // Audio mixer initialization
   int32_t InitSpeaker() override;
   bool SpeakerIsInitialized() const override;
diff --git a/modules/audio_device/dummy/file_audio_device.cc b/modules/audio_device/dummy/file_audio_device.cc
index 14230ed..0d9885d 100644
--- a/modules/audio_device/dummy/file_audio_device.cc
+++ b/modules/audio_device/dummy/file_audio_device.cc
@@ -309,16 +309,6 @@
 
 bool FileAudioDevice::AGC() const { return false; }
 
-int32_t FileAudioDevice::SetWaveOutVolume(uint16_t volumeLeft,
-                                           uint16_t volumeRight) {
-  return -1;
-}
-
-int32_t FileAudioDevice::WaveOutVolume(uint16_t& volumeLeft,
-                                        uint16_t& volumeRight) const {
-  return -1;
-}
-
 int32_t FileAudioDevice::InitSpeaker() { return -1; }
 
 bool FileAudioDevice::SpeakerIsInitialized() const { return false; }
diff --git a/modules/audio_device/dummy/file_audio_device.h b/modules/audio_device/dummy/file_audio_device.h
index 160ba1b..63e7e79 100644
--- a/modules/audio_device/dummy/file_audio_device.h
+++ b/modules/audio_device/dummy/file_audio_device.h
@@ -90,11 +90,6 @@
   int32_t SetAGC(bool enable) override;
   bool AGC() const override;
 
-  // Volume control based on the Windows Wave API (Windows only)
-  int32_t SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight) override;
-  int32_t WaveOutVolume(uint16_t& volumeLeft,
-                        uint16_t& volumeRight) const override;
-
   // Audio mixer initialization
   int32_t InitSpeaker() override;
   bool SpeakerIsInitialized() const override;
diff --git a/modules/audio_device/include/audio_device.h b/modules/audio_device/include/audio_device.h
index 8fdd212..a1276d9 100644
--- a/modules/audio_device/include/audio_device.h
+++ b/modules/audio_device/include/audio_device.h
@@ -108,11 +108,12 @@
   virtual int32_t SetAGC(bool enable) = 0;
   virtual bool AGC() const = 0;
 
-  // Volume control based on the Windows Wave API (Windows only)
+  // Deprecated.
+  // TODO(henrika): to be removed.
   virtual int32_t SetWaveOutVolume(uint16_t volumeLeft,
-                                   uint16_t volumeRight) = 0;
+                                   uint16_t volumeRight) { return -1; }
   virtual int32_t WaveOutVolume(uint16_t* volumeLeft,
-                                uint16_t* volumeRight) const = 0;
+                                uint16_t* volumeRight) const { return -1; }
 
   // Audio mixer initialization
   virtual int32_t InitSpeaker() = 0;
diff --git a/modules/audio_device/include/fake_audio_device.h b/modules/audio_device/include/fake_audio_device.h
index 1797dd5..444b65c 100644
--- a/modules/audio_device/include/fake_audio_device.h
+++ b/modules/audio_device/include/fake_audio_device.h
@@ -83,14 +83,6 @@
   virtual int32_t StartRecording() { return 0; }
   virtual bool Recording() const { return false; }
   virtual bool AGC() const { return true; }
-  virtual int32_t SetWaveOutVolume(uint16_t volumeLeft,
-                           uint16_t volumeRight) {
-    return 0;
-  }
-  virtual int32_t WaveOutVolume(uint16_t* volumeLeft,
-                        uint16_t* volumeRight) const {
-    return 0;
-  }
   virtual bool SpeakerIsInitialized() const { return true; }
   virtual bool MicrophoneIsInitialized() const { return true; }
   virtual int32_t SpeakerVolumeIsAvailable(bool* available) { return 0; }
diff --git a/modules/audio_device/include/mock_audio_device.h b/modules/audio_device/include/mock_audio_device.h
index 2c44c65..424e5d5 100644
--- a/modules/audio_device/include/mock_audio_device.h
+++ b/modules/audio_device/include/mock_audio_device.h
@@ -63,10 +63,6 @@
   MOCK_CONST_METHOD0(Recording, bool());
   MOCK_METHOD1(SetAGC, int32_t(bool enable));
   MOCK_CONST_METHOD0(AGC, bool());
-  MOCK_METHOD2(SetWaveOutVolume, int32_t(uint16_t volumeLeft,
-                                         uint16_t volumeRight));
-  MOCK_CONST_METHOD2(WaveOutVolume, int32_t(uint16_t* volumeLeft,
-                                            uint16_t* volumeRight));
   MOCK_METHOD0(InitSpeaker, int32_t());
   MOCK_CONST_METHOD0(SpeakerIsInitialized, bool());
   MOCK_METHOD0(InitMicrophone, int32_t());
diff --git a/modules/audio_device/ios/audio_device_ios.h b/modules/audio_device/ios/audio_device_ios.h
index 641aba0..6ce2c69 100644
--- a/modules/audio_device/ios/audio_device_ios.h
+++ b/modules/audio_device/ios/audio_device_ios.h
@@ -116,9 +116,6 @@
   int32_t SetRecordingDevice(uint16_t index) override;
   int32_t SetRecordingDevice(
       AudioDeviceModule::WindowsDeviceType device) override;
-  int32_t SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight) override;
-  int32_t WaveOutVolume(uint16_t& volumeLeft,
-                        uint16_t& volumeRight) const override;
   int32_t InitSpeaker() override;
   bool SpeakerIsInitialized() const override;
   int32_t InitMicrophone() override;
diff --git a/modules/audio_device/ios/audio_device_not_implemented_ios.mm b/modules/audio_device/ios/audio_device_not_implemented_ios.mm
index dec0a9a..e975f4d 100644
--- a/modules/audio_device/ios/audio_device_not_implemented_ios.mm
+++ b/modules/audio_device/ios/audio_device_not_implemented_ios.mm
@@ -67,16 +67,6 @@
   return -1;
 }
 
-int32_t AudioDeviceIOS::SetWaveOutVolume(uint16_t, uint16_t) {
-  RTC_NOTREACHED() << "Not implemented";
-  return -1;
-}
-
-int32_t AudioDeviceIOS::WaveOutVolume(uint16_t&, uint16_t&) const {
-  RTC_NOTREACHED() << "Not implemented";
-  return -1;
-}
-
 int32_t AudioDeviceIOS::MaxSpeakerVolume(uint32_t& maxVolume) const {
   RTC_NOTREACHED() << "Not implemented";
   return -1;
diff --git a/modules/audio_device/linux/audio_device_alsa_linux.cc b/modules/audio_device/linux/audio_device_alsa_linux.cc
index ffa7dc5..cd13466 100644
--- a/modules/audio_device/linux/audio_device_alsa_linux.cc
+++ b/modules/audio_device/linux/audio_device_alsa_linux.cc
@@ -321,24 +321,6 @@
     return 0;
 }
 
-
-int32_t AudioDeviceLinuxALSA::SetWaveOutVolume(uint16_t volumeLeft,
-                                               uint16_t volumeRight)
-{
-
-    LOG(LS_WARNING) << "API call not supported on this platform";
-    return -1;
-}
-
-int32_t AudioDeviceLinuxALSA::WaveOutVolume(
-    uint16_t& /*volumeLeft*/,
-    uint16_t& /*volumeRight*/) const
-{
-
-    LOG(LS_WARNING) << "API call not supported on this platform";
-    return -1;
-}
-
 int32_t AudioDeviceLinuxALSA::MaxSpeakerVolume(
     uint32_t& maxVolume) const
 {
diff --git a/modules/audio_device/linux/audio_device_alsa_linux.h b/modules/audio_device/linux/audio_device_alsa_linux.h
index 7e07ed8..f7fb9a9 100644
--- a/modules/audio_device/linux/audio_device_alsa_linux.h
+++ b/modules/audio_device/linux/audio_device_alsa_linux.h
@@ -83,12 +83,6 @@
     int32_t SetAGC(bool enable) override;
     bool AGC() const override;
 
-    // Volume control based on the Windows Wave API (Windows only)
-    int32_t SetWaveOutVolume(uint16_t volumeLeft,
-                             uint16_t volumeRight) override;
-    int32_t WaveOutVolume(uint16_t& volumeLeft,
-                          uint16_t& volumeRight) const override;
-
     // Audio mixer initialization
     int32_t InitSpeaker() override;
     bool SpeakerIsInitialized() const override;
diff --git a/modules/audio_device/linux/audio_device_pulse_linux.cc b/modules/audio_device/linux/audio_device_pulse_linux.cc
index 187a4ce..8760980 100644
--- a/modules/audio_device/linux/audio_device_pulse_linux.cc
+++ b/modules/audio_device/linux/audio_device_pulse_linux.cc
@@ -372,18 +372,6 @@
   return 0;
 }
 
-int32_t AudioDeviceLinuxPulse::SetWaveOutVolume(uint16_t volumeLeft,
-                                                uint16_t volumeRight) {
-  LOG(LS_WARNING) << "API call not supported on this platform";
-  return -1;
-}
-
-int32_t AudioDeviceLinuxPulse::WaveOutVolume(uint16_t& /*volumeLeft*/,
-                                             uint16_t& /*volumeRight*/) const {
-  LOG(LS_WARNING) << "API call not supported on this platform";
-  return -1;
-}
-
 int32_t AudioDeviceLinuxPulse::MaxSpeakerVolume(uint32_t& maxVolume) const {
   RTC_DCHECK(thread_checker_.CalledOnValidThread());
   uint32_t maxVol(0);
diff --git a/modules/audio_device/linux/audio_device_pulse_linux.h b/modules/audio_device/linux/audio_device_pulse_linux.h
index b69533e..00ed547 100644
--- a/modules/audio_device/linux/audio_device_pulse_linux.h
+++ b/modules/audio_device/linux/audio_device_pulse_linux.h
@@ -145,12 +145,6 @@
     int32_t SetAGC(bool enable) override;
     bool AGC() const override;
 
-    // Volume control based on the Windows Wave API (Windows only)
-    int32_t SetWaveOutVolume(uint16_t volumeLeft,
-                             uint16_t volumeRight) override;
-    int32_t WaveOutVolume(uint16_t& volumeLeft,
-                          uint16_t& volumeRight) const override;
-
     // Audio mixer initialization
     int32_t InitSpeaker() override;
     bool SpeakerIsInitialized() const override;
diff --git a/modules/audio_device/mac/audio_device_mac.cc b/modules/audio_device/mac/audio_device_mac.cc
index 59906a8..2b48930 100644
--- a/modules/audio_device/mac/audio_device_mac.cc
+++ b/modules/audio_device/mac/audio_device_mac.cc
@@ -548,18 +548,6 @@
   return 0;
 }
 
-int32_t AudioDeviceMac::SetWaveOutVolume(uint16_t volumeLeft,
-                                         uint16_t volumeRight) {
-  LOG(LS_WARNING) << "API call not supported on this platform";
-  return -1;
-}
-
-int32_t AudioDeviceMac::WaveOutVolume(uint16_t& /*volumeLeft*/,
-                                      uint16_t& /*volumeRight*/) const {
-  LOG(LS_WARNING) << "API call not supported on this platform";
-  return -1;
-}
-
 int32_t AudioDeviceMac::MaxSpeakerVolume(uint32_t& maxVolume) const {
   uint32_t maxVol(0);
 
diff --git a/modules/audio_device/mac/audio_device_mac.h b/modules/audio_device/mac/audio_device_mac.h
index 6690382..c8a4b20 100644
--- a/modules/audio_device/mac/audio_device_mac.h
+++ b/modules/audio_device/mac/audio_device_mac.h
@@ -111,11 +111,6 @@
   virtual int32_t SetAGC(bool enable);
   virtual bool AGC() const;
 
-  // Volume control based on the Windows Wave API (Windows only)
-  virtual int32_t SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight);
-  virtual int32_t WaveOutVolume(uint16_t& volumeLeft,
-                                uint16_t& volumeRight) const;
-
   // Audio mixer initialization
   virtual int32_t InitSpeaker();
   virtual bool SpeakerIsInitialized() const;
diff --git a/modules/audio_device/win/audio_device_core_win.cc b/modules/audio_device/win/audio_device_core_win.cc
index 783e989..c77eacc 100644
--- a/modules/audio_device/win/audio_device_core_win.cc
+++ b/modules/audio_device/win/audio_device_core_win.cc
@@ -1045,24 +1045,6 @@
 }
 
 // ----------------------------------------------------------------------------
-//  SetWaveOutVolume
-// ----------------------------------------------------------------------------
-
-int32_t AudioDeviceWindowsCore::SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight)
-{
-    return -1;
-}
-
-// ----------------------------------------------------------------------------
-//  WaveOutVolume
-// ----------------------------------------------------------------------------
-
-int32_t AudioDeviceWindowsCore::WaveOutVolume(uint16_t& volumeLeft, uint16_t& volumeRight) const
-{
-    return -1;
-}
-
-// ----------------------------------------------------------------------------
 //  MaxSpeakerVolume
 //
 //  The internal range for Core Audio is 0.0 to 1.0, where 0.0 indicates
diff --git a/modules/audio_device/win/audio_device_core_win.h b/modules/audio_device/win/audio_device_core_win.h
index 24eca55..b95da22 100644
--- a/modules/audio_device/win/audio_device_core_win.h
+++ b/modules/audio_device/win/audio_device_core_win.h
@@ -133,10 +133,6 @@
     virtual int32_t SetAGC(bool enable);
     virtual bool AGC() const;
 
-    // Volume control based on the Windows Wave API (Windows only)
-    virtual int32_t SetWaveOutVolume(uint16_t volumeLeft, uint16_t volumeRight);
-    virtual int32_t WaveOutVolume(uint16_t& volumeLeft, uint16_t& volumeRight) const;
-
     // Audio mixer initialization
     virtual int32_t InitSpeaker();
     virtual bool SpeakerIsInitialized() const;
diff --git a/pc/test/fakeaudiocapturemodule.cc b/pc/test/fakeaudiocapturemodule.cc
index 5812d39..c1ac489 100644
--- a/pc/test/fakeaudiocapturemodule.cc
+++ b/pc/test/fakeaudiocapturemodule.cc
@@ -276,19 +276,6 @@
   return 0;
 }
 
-int32_t FakeAudioCaptureModule::SetWaveOutVolume(uint16_t /*volume_left*/,
-                                                 uint16_t /*volume_right*/) {
-  RTC_NOTREACHED();
-  return 0;
-}
-
-int32_t FakeAudioCaptureModule::WaveOutVolume(
-    uint16_t* /*volume_left*/,
-    uint16_t* /*volume_right*/) const {
-  RTC_NOTREACHED();
-  return 0;
-}
-
 int32_t FakeAudioCaptureModule::InitSpeaker() {
   // No speaker, just playing from file. Return success.
   return 0;
diff --git a/pc/test/fakeaudiocapturemodule.h b/pc/test/fakeaudiocapturemodule.h
index f01b3e8..1440821 100644
--- a/pc/test/fakeaudiocapturemodule.h
+++ b/pc/test/fakeaudiocapturemodule.h
@@ -104,11 +104,6 @@
   int32_t SetAGC(bool enable) override;
   bool AGC() const override;
 
-  int32_t SetWaveOutVolume(uint16_t volume_left,
-                           uint16_t volume_right) override;
-  int32_t WaveOutVolume(uint16_t* volume_left,
-                        uint16_t* volume_right) const override;
-
   int32_t InitSpeaker() override;
   bool SpeakerIsInitialized() const override;
   int32_t InitMicrophone() override;
