diff --git a/pcsx2/SPU2/SndOut.cpp b/pcsx2/SPU2/SndOut.cpp
index e1898d896f..c44eb8d34c 100644
--- a/pcsx2/SPU2/SndOut.cpp
+++ b/pcsx2/SPU2/SndOut.cpp
@@ -84,7 +84,6 @@ SndOutModule* mods[] =
&NullOut,
#ifdef _MSC_VER
XAudio2Out,
- WaveOut,
#endif
#if defined(SPU2X_PORTAUDIO)
PortaudioOut,
diff --git a/pcsx2/SPU2/SndOut.h b/pcsx2/SPU2/SndOut.h
index d39c200cf3..975325477b 100644
--- a/pcsx2/SPU2/SndOut.h
+++ b/pcsx2/SPU2/SndOut.h
@@ -665,7 +665,6 @@ public:
#ifdef _MSC_VER
//internal
-extern SndOutModule* WaveOut;
extern SndOutModule* XAudio2Out;
#endif
#if defined(SPU2X_PORTAUDIO)
diff --git a/pcsx2/SPU2/Windows/Config.cpp b/pcsx2/SPU2/Windows/Config.cpp
index 59b8072b3c..55e9a7d0a6 100644
--- a/pcsx2/SPU2/Windows/Config.cpp
+++ b/pcsx2/SPU2/Windows/Config.cpp
@@ -62,7 +62,6 @@ int SynchMode = 0; // Time Stretch, Async or Disabled.
u32 OutputModule = 0;
-CONFIG_WAVEOUT Config_WaveOut;
CONFIG_XAUDIO2 Config_XAudio2;
// DSP
@@ -127,10 +126,6 @@ void ReadSettings()
dspPluginModule = CfgReadInt(L"DSP PLUGIN", L"ModuleNum", 0);
dspPluginEnabled = CfgReadBool(L"DSP PLUGIN", L"Enabled", false);
- // Read WAVEOUT configs:
- CfgReadStr(L"WAVEOUT", L"Device", Config_WaveOut.Device, L"default");
- Config_WaveOut.NumBuffers = CfgReadInt(L"WAVEOUT", L"Buffer_Count", 4);
-
PortaudioOut->ReadSettings();
SoundtouchCfg::ReadSettings();
@@ -174,11 +169,6 @@ void WriteSettings()
CfgWriteInt(L"OUTPUT", L"SpeakerConfiguration", numSpeakers);
CfgWriteInt(L"OUTPUT", L"DplDecodingLevel", dplLevel);
- if (Config_WaveOut.Device.empty())
- Config_WaveOut.Device = L"default";
- CfgWriteStr(L"WAVEOUT", L"Device", Config_WaveOut.Device);
- CfgWriteInt(L"WAVEOUT", L"Buffer_Count", Config_WaveOut.NumBuffers);
-
CfgWriteStr(L"DSP PLUGIN", L"Filename", dspPlugin);
CfgWriteInt(L"DSP PLUGIN", L"ModuleNum", dspPluginModule);
CfgWriteBool(L"DSP PLUGIN", L"Enabled", dspPluginEnabled);
@@ -191,10 +181,7 @@ void WriteSettings()
void CheckOutputModule(HWND window)
{
OutputModule = SendMessage(GetDlgItem(window, IDC_OUTPUT), CB_GETCURSEL, 0, 0);
- const bool IsConfigurable =
- mods[OutputModule] == PortaudioOut ||
- mods[OutputModule] == WaveOut;
-
+ const bool IsConfigurable = mods[OutputModule] == PortaudioOut;
const bool AudioExpansion =
mods[OutputModule] == XAudio2Out ||
mods[OutputModule] == PortaudioOut;
diff --git a/pcsx2/SPU2/Windows/SPU2.rc b/pcsx2/SPU2/Windows/SPU2.rc
index d982695b7e..01dc814e09 100644
--- a/pcsx2/SPU2/Windows/SPU2.rc
+++ b/pcsx2/SPU2/Windows/SPU2.rc
@@ -64,21 +64,6 @@ BEGIN
DEFPUSHBUTTON "Close",IDOK,246,451,50,14
END
-IDD_WAVEOUT DIALOGEX 0, 0, 170, 122
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "WaveOut Output Module Settings"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,32,100,50,14
- PUSHBUTTON "Cancel",IDCANCEL,88,100,50,14
- COMBOBOX IDC_DS_DEVICE,6,13,159,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- LTEXT "WaveOut Device:",IDC_STATIC,4,3,60,8
- LTEXT "Number of Buffers",IDC_STATIC,4,39,61,15
- CONTROL "",IDC_BUFFERS_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,71,48,94,10
- LTEXT "Use extra buffers if you are experiencing loopy or studdery audio even when games run at high FPS.",IDC_STATIC,8,66,151,27
- CTEXT "8 (80 ms latency)",IDC_LATENCY_LABEL,70,37,95,11
-END
-
IDD_CONFIG_SOUNDTOUCH DIALOGEX 0, 0, 206, 223
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Soundtouch Advanced Configuration - SPU2"
@@ -154,15 +139,7 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 465
END
-
- IDD_WAVEOUT, DIALOG
- BEGIN
- LEFTMARGIN, 4
- RIGHTMARGIN, 165
- TOPMARGIN, 3
- BOTTOMMARGIN, 118
- END
-
+
IDD_CONFIG_SOUNDTOUCH, DIALOG
BEGIN
LEFTMARGIN, 5
diff --git a/pcsx2/SPU2/Windows/SndOut_waveOut.cpp b/pcsx2/SPU2/Windows/SndOut_waveOut.cpp
deleted file mode 100644
index e601c0f56a..0000000000
--- a/pcsx2/SPU2/Windows/SndOut_waveOut.cpp
+++ /dev/null
@@ -1,334 +0,0 @@
-/* PCSX2 - PS2 Emulator for PCs
- * Copyright (C) 2002-2020 PCSX2 Dev Team
- *
- * PCSX2 is free software: you can redistribute it and/or modify it under the terms
- * of the GNU Lesser General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with PCSX2.
- * If not, see .
- */
-
-#include "PrecompiledHeader.h"
-#include "SPU2/Global.h"
-#include "Dialogs.h"
-
-
-class WaveOutModule : public SndOutModule
-{
-private:
- static const uint MAX_BUFFER_COUNT = 8;
-
- static const int PacketsPerBuffer = (1024 / SndOutPacketSize);
- static const int BufferSize = SndOutPacketSize * PacketsPerBuffer;
-
- u32 numBuffers;
- HWAVEOUT hwodevice;
- WAVEFORMATEX wformat;
- WAVEHDR whbuffer[MAX_BUFFER_COUNT];
-
- StereoOut16* qbuffer;
-
-#define QBUFFER(x) (qbuffer + BufferSize * (x))
-
- bool waveout_running;
- HANDLE thread;
- DWORD tid;
-
- wchar_t ErrText[256];
-
- template
- DWORD CALLBACK Thread()
- {
- static const int BufferSizeBytes = BufferSize * sizeof(T);
-
- while (waveout_running)
- {
- bool didsomething = false;
- for (u32 i = 0; i < numBuffers; i++)
- {
- if (!(whbuffer[i].dwFlags & WHDR_DONE))
- continue;
-
- WAVEHDR* buf = whbuffer + i;
-
- buf->dwBytesRecorded = buf->dwBufferLength;
-
- T* t = (T*)buf->lpData;
- for (int p = 0; p < PacketsPerBuffer; p++, t += SndOutPacketSize)
- SndBuffer::ReadSamples(t);
-
- whbuffer[i].dwFlags &= ~WHDR_DONE;
- waveOutWrite(hwodevice, buf, sizeof(WAVEHDR));
- didsomething = true;
- }
-
- if (didsomething)
- Sleep(1);
- else
- Sleep(0);
- }
- return 0;
- }
-
- template
- static DWORD CALLBACK RThread(WaveOutModule* obj)
- {
- return obj->Thread();
- }
-
-public:
- s32 Init()
- {
- numBuffers = Config_WaveOut.NumBuffers;
-
- MMRESULT woores;
-
- if (Test())
- return -1;
-
- // TODO : Use dsound to determine the speaker configuration, and expand audio from there.
-
-#if 0
- int speakerConfig;
-
- //if( StereoExpansionEnabled )
- speakerConfig = 2; // better not mess with this in wavout :p (rama)
-
- // Any windows driver should support stereo at the software level, I should think!
- pxAssume( speakerConfig > 1 );
- LPTHREAD_START_ROUTINE threadproc;
-
- switch( speakerConfig )
- {
- case 2:
- ConLog( "* SPU2 > Using normal 2 speaker stereo output.\n" );
- threadproc = (LPTHREAD_START_ROUTINE)&RThread;
- speakerConfig = 2;
- break;
-
- case 4:
- ConLog( "* SPU2 > 4 speaker expansion enabled [quadraphenia]\n" );
- threadproc = (LPTHREAD_START_ROUTINE)&RThread;
- speakerConfig = 4;
- break;
-
- case 6:
- case 7:
- ConLog( "* SPU2 > 5.1 speaker expansion enabled.\n" );
- threadproc = (LPTHREAD_START_ROUTINE)&RThread;
- speakerConfig = 6;
- break;
-
- default:
- ConLog( "* SPU2 > 7.1 speaker expansion enabled.\n" );
- threadproc = (LPTHREAD_START_ROUTINE)&RThread;
- speakerConfig = 8;
- break;
- }
-#endif
-
- wformat.wFormatTag = WAVE_FORMAT_PCM;
- wformat.nSamplesPerSec = SampleRate;
- wformat.wBitsPerSample = 16;
- wformat.nChannels = 2;
- wformat.nBlockAlign = ((wformat.wBitsPerSample * wformat.nChannels) / 8);
- wformat.nAvgBytesPerSec = (wformat.nSamplesPerSec * wformat.nBlockAlign);
- wformat.cbSize = 0;
-
- qbuffer = new StereoOut16[BufferSize * numBuffers];
-
- woores = waveOutOpen(&hwodevice, WAVE_MAPPER, &wformat, 0, 0, 0);
- if (woores != MMSYSERR_NOERROR)
- {
- waveOutGetErrorText(woores, (wchar_t*)&ErrText, 255);
- SysMessage("WaveOut Error: %s", ErrText);
- return -1;
- }
-
- const int BufferSizeBytes = wformat.nBlockAlign * BufferSize;
-
- for (u32 i = 0; i < numBuffers; i++)
- {
- whbuffer[i].dwBufferLength = BufferSizeBytes;
- whbuffer[i].dwBytesRecorded = BufferSizeBytes;
- whbuffer[i].dwFlags = 0;
- whbuffer[i].dwLoops = 0;
- whbuffer[i].dwUser = 0;
- whbuffer[i].lpData = (LPSTR)QBUFFER(i);
- whbuffer[i].lpNext = 0;
- whbuffer[i].reserved = 0;
- waveOutPrepareHeader(hwodevice, whbuffer + i, sizeof(WAVEHDR));
- whbuffer[i].dwFlags |= WHDR_DONE; //avoid deadlock
- }
-
- // Start Thread
- // [Air]: The waveout code does not use wait objects, so setting a time critical
- // priority level is a bad idea. Standard priority will do fine. The buffer will get the
- // love it needs and won't suck resources idling pointlessly. Just don't try to
- // run it in uber-low-latency mode.
- waveout_running = true;
- thread = CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)RThread, this, 0, &tid);
-
- return 0;
- }
-
- void Close()
- {
- // Stop Thread
- fprintf(stderr, "* SPU2: Waiting for waveOut thread to finish...");
- waveout_running = false;
-
- WaitForSingleObject(thread, INFINITE);
- CloseHandle(thread);
-
- fprintf(stderr, " Done.\n");
-
- //
- // Clean up
- //
- waveOutReset(hwodevice);
- for (u32 i = 0; i < numBuffers; i++)
- {
- waveOutUnprepareHeader(hwodevice, &whbuffer[i], sizeof(WAVEHDR));
- }
- waveOutClose(hwodevice);
-
- safe_delete_array(qbuffer);
- }
-
-private:
- static BOOL CALLBACK ConfigProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- int wmId, wmEvent;
-
- switch (uMsg)
- {
- case WM_INITDIALOG:
-
- wchar_t temp[128];
- INIT_SLIDER(IDC_BUFFERS_SLIDER, 3, MAX_BUFFER_COUNT, 2, 1, 1);
- SendMessage(GetDlgItem(hWnd, IDC_BUFFERS_SLIDER), TBM_SETPOS, TRUE, Config_WaveOut.NumBuffers);
- swprintf_s(temp, 128, L"%d (%d ms latency)", Config_WaveOut.NumBuffers, 1000 / (96000 / (Config_WaveOut.NumBuffers * BufferSize)));
- SetWindowText(GetDlgItem(hWnd, IDC_LATENCY_LABEL), temp);
- break;
-
- case WM_COMMAND:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- // Parse the menu selections:
- switch (wmId)
- {
- case IDOK:
- {
- Config_WaveOut.NumBuffers = (int)SendMessage(GetDlgItem(hWnd, IDC_BUFFERS_SLIDER), TBM_GETPOS, 0, 0);
-
- if (Config_WaveOut.NumBuffers < 3)
- Config_WaveOut.NumBuffers = 3;
- if (Config_WaveOut.NumBuffers > MAX_BUFFER_COUNT)
- Config_WaveOut.NumBuffers = MAX_BUFFER_COUNT;
- }
- EndDialog(hWnd, 0);
- break;
- case IDCANCEL:
- EndDialog(hWnd, 0);
- break;
- default:
- return FALSE;
- }
- break;
-
- case WM_HSCROLL:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- switch (wmId)
- {
- case TB_LINEUP:
- case TB_LINEDOWN:
- case TB_PAGEUP:
- case TB_PAGEDOWN:
- case TB_TOP:
- case TB_BOTTOM:
- wmEvent = (int)SendMessage((HWND)lParam, TBM_GETPOS, 0, 0);
- case TB_THUMBPOSITION:
- case TB_THUMBTRACK:
- if (wmEvent < 3)
- wmEvent = 3;
- if (wmEvent > MAX_BUFFER_COUNT)
- wmEvent = MAX_BUFFER_COUNT;
- SendMessage((HWND)lParam, TBM_SETPOS, TRUE, wmEvent);
- swprintf_s(temp, L"%d (%d ms latency)", wmEvent, 1000 / (96000 / (wmEvent * BufferSize)));
- SetWindowText(GetDlgItem(hWnd, IDC_LATENCY_LABEL), temp);
- break;
- default:
- return FALSE;
- }
- break;
-
- default:
- return FALSE;
- }
- return TRUE;
- }
-
-public:
- virtual void Configure(uptr parent)
- {
- INT_PTR ret;
- ret = DialogBoxParam(nullptr, MAKEINTRESOURCE(IDD_WAVEOUT), (HWND)parent, (DLGPROC)ConfigProc, 1);
- if (ret == -1)
- {
- MessageBox((HWND)parent, L"Error Opening the config dialog.", L"OMG ERROR!", MB_OK | MB_SETFOREGROUND);
- return;
- }
- }
-
- s32 Test() const
- {
- if (waveOutGetNumDevs() == 0)
- {
- SysMessage("No waveOut Devices Present\n");
- return -1;
- }
- return 0;
- }
-
- int GetEmptySampleCount()
- {
- int result = 0;
- for (int i = 0; i < MAX_BUFFER_COUNT; i++)
- {
- result += (whbuffer[i].dwFlags & WHDR_DONE) ? BufferSize : 0;
- }
- return result;
- }
-
- const wchar_t* GetIdent() const
- {
- return L"waveout";
- }
-
- const wchar_t* GetLongName() const
- {
- return L"WaveOut (Laggy)";
- }
-
- void ReadSettings()
- {
- }
-
- void SetApiSettings(wxString api)
- {
- }
-
- void WriteSettings() const
- {
- }
-
-} static WO;
-
-SndOutModule* WaveOut = &WO;
diff --git a/pcsx2/SPU2/Windows/WinConfig.h b/pcsx2/SPU2/Windows/WinConfig.h
index 9df0f96737..bf2aab4f5f 100644
--- a/pcsx2/SPU2/Windows/WinConfig.h
+++ b/pcsx2/SPU2/Windows/WinConfig.h
@@ -68,17 +68,4 @@ struct CONFIG_XAUDIO2
}
};
-struct CONFIG_WAVEOUT
-{
- wxString Device;
- s8 NumBuffers;
-
- CONFIG_WAVEOUT()
- : Device()
- , NumBuffers(4)
- {
- }
-};
-
-extern CONFIG_WAVEOUT Config_WaveOut;
extern CONFIG_XAUDIO2 Config_XAudio2;
diff --git a/pcsx2/SPU2/Windows/resource.h b/pcsx2/SPU2/Windows/resource.h
index 73ec70be53..8dfb7f66a6 100644
--- a/pcsx2/SPU2/Windows/resource.h
+++ b/pcsx2/SPU2/Windows/resource.h
@@ -3,7 +3,6 @@
// Used by SPU2.rc
#define IDD_CONFIG 9
#define IDD_DEBUG 105
-#define IDD_WAVEOUT 109
#define IDD_CONFIG_SOUNDTOUCH 117
#define IDD_CONFIG_DEBUG 118
#define IDD_PORTAUDIO 119
diff --git a/pcsx2/pcsx2.vcxproj b/pcsx2/pcsx2.vcxproj
index a26ca9d374..38f85a268c 100644
--- a/pcsx2/pcsx2.vcxproj
+++ b/pcsx2/pcsx2.vcxproj
@@ -342,7 +342,6 @@
-
diff --git a/pcsx2/pcsx2.vcxproj.filters b/pcsx2/pcsx2.vcxproj.filters
index c7164a4c76..668ee2de1a 100644
--- a/pcsx2/pcsx2.vcxproj.filters
+++ b/pcsx2/pcsx2.vcxproj.filters
@@ -1130,9 +1130,6 @@
System\Ps2\SPU2
-
- System\Ps2\SPU2
-
System\Ps2\SPU2