summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon
diff options
context:
space:
mode:
authorsowens99 <seanowens@comcast.net>2021-10-13 20:29:04 -0400
committersowens99 <seanowens@comcast.net>2021-10-15 23:24:46 -0400
commit8ea6bef98f535301d23aa1c81d4080c208527705 (patch)
tree52f211ba038b7e1ada0fdc6700c93243689e22b5 /Source/Core/AudioCommon
parent023eb0b7029eb3633ce9eeb039c11d835ea7fd74 (diff)
Port Main.DSP to MainSettings
While trying to work on adding audiodump support for CLI, I was alerted that it was important to first try moving the DSP configs to the new config before continuing, as that makes it substantially easier to write clean code to add such a feature. This commit aims to allow for Dolphin to only rely on the new config for DSP-related settings.
Diffstat (limited to 'Source/Core/AudioCommon')
-rw-r--r--Source/Core/AudioCommon/AudioCommon.cpp27
-rw-r--r--Source/Core/AudioCommon/AudioStretcher.cpp4
-rw-r--r--Source/Core/AudioCommon/CubebStream.cpp4
-rw-r--r--Source/Core/AudioCommon/Mixer.cpp2
-rw-r--r--Source/Core/AudioCommon/OpenALStream.cpp8
-rw-r--r--Source/Core/AudioCommon/PulseAudioStream.cpp4
-rw-r--r--Source/Core/AudioCommon/WASAPIStream.cpp20
-rw-r--r--Source/Core/AudioCommon/WaveFile.cpp3
8 files changed, 38 insertions, 34 deletions
diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp
index d3bdcde445..ab45161651 100644
--- a/Source/Core/AudioCommon/AudioCommon.cpp
+++ b/Source/Core/AudioCommon/AudioCommon.cpp
@@ -13,6 +13,7 @@
#include "Common/Common.h"
#include "Common/FileUtil.h"
#include "Common/Logging/Log.h"
+#include "Core/Config/MainSettings.h"
#include "Core/ConfigManager.h"
// This shouldn't be a global, at least not here.
@@ -47,7 +48,7 @@ static std::unique_ptr<SoundStream> CreateSoundStreamForBackend(std::string_view
void InitSoundStream()
{
- std::string backend = SConfig::GetInstance().sBackend;
+ std::string backend = Config::Get(Config::MAIN_AUDIO_BACKEND);
g_sound_stream = CreateSoundStreamForBackend(backend);
if (!g_sound_stream)
@@ -73,7 +74,7 @@ void PostInitSoundStream()
UpdateSoundStream();
SetSoundStreamRunning(true);
- if (SConfig::GetInstance().m_DumpAudio && !s_audio_dump_start)
+ if (Config::Get(Config::MAIN_DUMP_AUDIO) && !s_audio_dump_start)
StartAudioDump();
}
@@ -81,7 +82,7 @@ void ShutdownSoundStream()
{
INFO_LOG_FMT(AUDIO, "Shutting down sound stream");
- if (SConfig::GetInstance().m_DumpAudio && s_audio_dump_start)
+ if (Config::Get(Config::MAIN_DUMP_AUDIO) && s_audio_dump_start)
StopAudioDump();
SetSoundStreamRunning(false);
@@ -159,7 +160,7 @@ void UpdateSoundStream()
{
if (g_sound_stream)
{
- int volume = SConfig::GetInstance().m_IsMuted ? 0 : SConfig::GetInstance().m_Volume;
+ int volume = Config::Get(Config::MAIN_AUDIO_MUTED) ? 0 : Config::Get(Config::MAIN_AUDIO_VOLUME);
g_sound_stream->SetVolume(volume);
}
}
@@ -186,9 +187,9 @@ void SendAIBuffer(const short* samples, unsigned int num_samples)
if (!g_sound_stream)
return;
- if (SConfig::GetInstance().m_DumpAudio && !s_audio_dump_start)
+ if (Config::Get(Config::MAIN_DUMP_AUDIO) && !s_audio_dump_start)
StartAudioDump();
- else if (!SConfig::GetInstance().m_DumpAudio && s_audio_dump_start)
+ else if (!Config::Get(Config::MAIN_DUMP_AUDIO) && s_audio_dump_start)
StopAudioDump();
Mixer* pMixer = g_sound_stream->GetMixer();
@@ -221,28 +222,30 @@ void StopAudioDump()
void IncreaseVolume(unsigned short offset)
{
- SConfig::GetInstance().m_IsMuted = false;
- int& currentVolume = SConfig::GetInstance().m_Volume;
+ Config::SetBaseOrCurrent(Config::MAIN_AUDIO_MUTED, false);
+ int currentVolume = Config::Get(Config::MAIN_AUDIO_VOLUME);
currentVolume += offset;
if (currentVolume > AUDIO_VOLUME_MAX)
currentVolume = AUDIO_VOLUME_MAX;
+ Config::SetBaseOrCurrent(Config::MAIN_AUDIO_VOLUME, currentVolume);
UpdateSoundStream();
}
void DecreaseVolume(unsigned short offset)
{
- SConfig::GetInstance().m_IsMuted = false;
- int& currentVolume = SConfig::GetInstance().m_Volume;
+ Config::SetBaseOrCurrent(Config::MAIN_AUDIO_MUTED, false);
+ int currentVolume = Config::Get(Config::MAIN_AUDIO_VOLUME);
currentVolume -= offset;
if (currentVolume < AUDIO_VOLUME_MIN)
currentVolume = AUDIO_VOLUME_MIN;
+ Config::SetBaseOrCurrent(Config::MAIN_AUDIO_VOLUME, currentVolume);
UpdateSoundStream();
}
void ToggleMuteVolume()
{
- bool& isMuted = SConfig::GetInstance().m_IsMuted;
- isMuted = !isMuted;
+ bool isMuted = Config::Get(Config::MAIN_AUDIO_MUTED);
+ Config::SetBaseOrCurrent(Config::MAIN_AUDIO_MUTED, !isMuted);
UpdateSoundStream();
}
} // namespace AudioCommon
diff --git a/Source/Core/AudioCommon/AudioStretcher.cpp b/Source/Core/AudioCommon/AudioStretcher.cpp
index a94e707d56..c786dc0941 100644
--- a/Source/Core/AudioCommon/AudioStretcher.cpp
+++ b/Source/Core/AudioCommon/AudioStretcher.cpp
@@ -7,7 +7,7 @@
#include "AudioCommon/AudioStretcher.h"
#include "Common/Logging/Log.h"
-#include "Core/ConfigManager.h"
+#include "Core/Config/MainSettings.h"
namespace AudioCommon
{
@@ -31,7 +31,7 @@ void AudioStretcher::ProcessSamples(const short* in, unsigned int num_in, unsign
// We were given actual_samples number of samples, and num_samples were requested from us.
double current_ratio = static_cast<double>(num_in) / static_cast<double>(num_out);
- const double max_latency = SConfig::GetInstance().m_audio_stretch_max_latency;
+ const double max_latency = Config::Get(Config::MAIN_AUDIO_STRETCH_LATENCY);
const double max_backlog = m_sample_rate * max_latency / 1000.0 / m_stretch_ratio;
const double backlog_fullness = m_sound_touch.numSamples() / max_backlog;
if (backlog_fullness > 5.0)
diff --git a/Source/Core/AudioCommon/CubebStream.cpp b/Source/Core/AudioCommon/CubebStream.cpp
index 0d9535600a..6d903bb999 100644
--- a/Source/Core/AudioCommon/CubebStream.cpp
+++ b/Source/Core/AudioCommon/CubebStream.cpp
@@ -8,7 +8,7 @@
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
#include "Common/Thread.h"
-#include "Core/ConfigManager.h"
+#include "Core/Config/MainSettings.h"
// ~10 ms - needs to be at least 240 for surround
constexpr u32 BUFFER_SAMPLES = 512;
@@ -36,7 +36,7 @@ bool CubebStream::Init()
if (!m_ctx)
return false;
- m_stereo = !SConfig::GetInstance().ShouldUseDPL2Decoder();
+ m_stereo = !Config::ShouldUseDPL2Decoder();
cubeb_stream_params params;
params.rate = m_mixer->GetSampleRate();
diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp
index e50d90b32b..dbd2b1f69f 100644
--- a/Source/Core/AudioCommon/Mixer.cpp
+++ b/Source/Core/AudioCommon/Mixer.cpp
@@ -154,7 +154,7 @@ unsigned int Mixer::Mix(short* samples, unsigned int num_samples)
memset(samples, 0, num_samples * 2 * sizeof(short));
- if (SConfig::GetInstance().m_audio_stretch)
+ if (Config::Get(Config::MAIN_AUDIO_STRETCH))
{
unsigned int available_samples =
std::min(m_dma_mixer.AvailableSamples(), m_streaming_mixer.AvailableSamples());
diff --git a/Source/Core/AudioCommon/OpenALStream.cpp b/Source/Core/AudioCommon/OpenALStream.cpp
index 3e56fe8e08..45d1aa23c8 100644
--- a/Source/Core/AudioCommon/OpenALStream.cpp
+++ b/Source/Core/AudioCommon/OpenALStream.cpp
@@ -12,7 +12,7 @@
#include "Common/Logging/Log.h"
#include "Common/MsgHandler.h"
#include "Common/Thread.h"
-#include "Core/ConfigManager.h"
+#include "Core/Config/MainSettings.h"
static HMODULE s_openal_dll = nullptr;
@@ -212,7 +212,7 @@ void OpenALStream::SoundLoop()
bool float32_capable = palIsExtensionPresent("AL_EXT_float32") != 0;
bool surround_capable = palIsExtensionPresent("AL_EXT_MCFORMATS") || IsCreativeXFi();
- bool use_surround = SConfig::GetInstance().ShouldUseDPL2Decoder() && surround_capable;
+ bool use_surround = Config::ShouldUseDPL2Decoder() && surround_capable;
// As there is no extension to check for 32-bit fixed point support
// and we know that only a X-Fi with hardware OpenAL supports it,
@@ -223,9 +223,9 @@ void OpenALStream::SoundLoop()
u32 frames_per_buffer;
// Can't have zero samples per buffer
- if (SConfig::GetInstance().iLatency > 0)
+ if (Config::Get(Config::MAIN_AUDIO_LATENCY) > 0)
{
- frames_per_buffer = frequency / 1000 * SConfig::GetInstance().iLatency / OAL_BUFFERS;
+ frames_per_buffer = frequency / 1000 * Config::Get(Config::MAIN_AUDIO_LATENCY) / OAL_BUFFERS;
}
else
{
diff --git a/Source/Core/AudioCommon/PulseAudioStream.cpp b/Source/Core/AudioCommon/PulseAudioStream.cpp
index 3b093aeb79..5b0662972d 100644
--- a/Source/Core/AudioCommon/PulseAudioStream.cpp
+++ b/Source/Core/AudioCommon/PulseAudioStream.cpp
@@ -9,7 +9,7 @@
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
#include "Common/Thread.h"
-#include "Core/ConfigManager.h"
+#include "Core/Config/MainSettings.h"
namespace
{
@@ -20,7 +20,7 @@ PulseAudio::PulseAudio() = default;
bool PulseAudio::Init()
{
- m_stereo = !SConfig::GetInstance().ShouldUseDPL2Decoder();
+ m_stereo = !Config::ShouldUseDPL2Decoder();
m_channels = m_stereo ? 2 : 6; // will tell PA we use a Stereo or 5.0 channel setup
NOTICE_LOG_FMT(AUDIO, "PulseAudio backend using {} channels", m_channels);
diff --git a/Source/Core/AudioCommon/WASAPIStream.cpp b/Source/Core/AudioCommon/WASAPIStream.cpp
index d65471226b..2a15e08195 100644
--- a/Source/Core/AudioCommon/WASAPIStream.cpp
+++ b/Source/Core/AudioCommon/WASAPIStream.cpp
@@ -20,7 +20,7 @@
#include "Common/Logging/Log.h"
#include "Common/StringUtil.h"
#include "Common/Thread.h"
-#include "Core/ConfigManager.h"
+#include "Core/Config/MainSettings.h"
#include "VideoCommon/OnScreenDisplay.h"
using Microsoft::WRL::ComPtr;
@@ -176,19 +176,19 @@ bool WASAPIStream::SetRunning(bool running)
HRESULT result;
- if (SConfig::GetInstance().sWASAPIDevice == "default")
+ if (Config::Get(Config::MAIN_WASAPI_DEVICE) == "default")
{
result = m_enumerator->GetDefaultAudioEndpoint(eRender, eConsole, device.GetAddressOf());
}
else
{
result = S_OK;
- device = GetDeviceByName(SConfig::GetInstance().sWASAPIDevice);
+ device = GetDeviceByName(Config::Get(Config::MAIN_WASAPI_DEVICE));
if (!device)
{
ERROR_LOG_FMT(AUDIO, "Can't find device '{}', falling back to default",
- SConfig::GetInstance().sWASAPIDevice);
+ Config::Get(Config::MAIN_WASAPI_DEVICE));
result = m_enumerator->GetDefaultAudioEndpoint(eRender, eConsole, device.GetAddressOf());
}
}
@@ -222,7 +222,7 @@ bool WASAPIStream::SetRunning(bool running)
result = audio_client->GetDevicePeriod(nullptr, &device_period);
- device_period += SConfig::GetInstance().iLatency * (10000 / m_format.Format.nChannels);
+ device_period += Config::Get(Config::MAIN_AUDIO_LATENCY) * (10000 / m_format.Format.nChannels);
INFO_LOG_FMT(AUDIO, "Audio period set to {}", device_period);
if (!HandleWinAPI("Failed to obtain device period", result))
@@ -258,7 +258,7 @@ bool WASAPIStream::SetRunning(bool running)
device_period =
static_cast<REFERENCE_TIME>(
10000.0 * 1000 * m_frames_in_buffer / m_format.Format.nSamplesPerSec + 0.5) +
- SConfig::GetInstance().iLatency * 10000;
+ Config::Get(Config::MAIN_AUDIO_LATENCY) * 10000;
result = audio_client->Initialize(
AUDCLNT_SHAREMODE_EXCLUSIVE,
@@ -333,13 +333,13 @@ void WASAPIStream::SoundLoop()
s16* audio_data = reinterpret_cast<s16*>(data);
GetMixer()->Mix(audio_data, m_frames_in_buffer);
- const SConfig& config = SConfig::GetInstance();
- const bool is_muted = config.m_IsMuted || config.m_Volume == 0;
- const bool need_volume_adjustment = config.m_Volume != 100 && !is_muted;
+ const bool is_muted =
+ Config::Get(Config::MAIN_AUDIO_MUTED) || Config::Get(Config::MAIN_AUDIO_VOLUME) == 0;
+ const bool need_volume_adjustment = Config::Get(Config::MAIN_AUDIO_VOLUME) != 100 && !is_muted;
if (need_volume_adjustment)
{
- const float volume = config.m_Volume / 100.0f;
+ const float volume = Config::Get(Config::MAIN_AUDIO_VOLUME) / 100.0f;
for (u32 i = 0; i < m_frames_in_buffer * 2; i++)
*audio_data++ *= volume;
diff --git a/Source/Core/AudioCommon/WaveFile.cpp b/Source/Core/AudioCommon/WaveFile.cpp
index ac378cb748..a7dd489db3 100644
--- a/Source/Core/AudioCommon/WaveFile.cpp
+++ b/Source/Core/AudioCommon/WaveFile.cpp
@@ -12,6 +12,7 @@
#include "Common/MsgHandler.h"
#include "Common/StringUtil.h"
#include "Common/Swap.h"
+#include "Core/Config/MainSettings.h"
#include "Core/ConfigManager.h"
constexpr size_t WaveFileWriter::BUFFER_SIZE;
@@ -30,7 +31,7 @@ bool WaveFileWriter::Start(const std::string& filename, unsigned int HLESampleRa
// Ask to delete file
if (File::Exists(filename))
{
- if (SConfig::GetInstance().m_DumpAudioSilent ||
+ if (Config::Get(Config::MAIN_DUMP_AUDIO_SILENT) ||
AskYesNoFmtT("Delete the existing file '{0}'?", filename))
{
File::Delete(filename);