summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/AudioCommon.cpp
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2022-08-31 21:44:21 +0200
committerAdmiral H. Curtiss <pikachu025@gmail.com>2022-08-31 21:44:21 +0200
commitc310e504cb57845db523e8e0e5192a153d49dda9 (patch)
tree002d5136bbf9fccf22dc878abd5296d02893374e /Source/Core/AudioCommon/AudioCommon.cpp
parent9195e1a9b8a629d89d786f4f3c1cfb46f4e2eb24 (diff)
AudioCommon: Move sound stream variables to Core::System.
Diffstat (limited to 'Source/Core/AudioCommon/AudioCommon.cpp')
-rw-r--r--Source/Core/AudioCommon/AudioCommon.cpp84
1 files changed, 50 insertions, 34 deletions
diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp
index 19ac9f6e9f..8800fddcf5 100644
--- a/Source/Core/AudioCommon/AudioCommon.cpp
+++ b/Source/Core/AudioCommon/AudioCommon.cpp
@@ -19,15 +19,10 @@
#include "Common/Logging/Log.h"
#include "Core/Config/MainSettings.h"
#include "Core/ConfigManager.h"
-
-// This shouldn't be a global, at least not here.
-std::unique_ptr<SoundStream> g_sound_stream;
+#include "Core/System.h"
namespace AudioCommon
{
-static bool s_audio_dump_start = false;
-static bool s_sound_stream_running = false;
-
constexpr int AUDIO_VOLUME_MIN = 0;
constexpr int AUDIO_VOLUME_MAX = 100;
@@ -53,44 +48,50 @@ static std::unique_ptr<SoundStream> CreateSoundStreamForBackend(std::string_view
void InitSoundStream()
{
std::string backend = Config::Get(Config::MAIN_AUDIO_BACKEND);
- g_sound_stream = CreateSoundStreamForBackend(backend);
+ std::unique_ptr<SoundStream> sound_stream = CreateSoundStreamForBackend(backend);
- if (!g_sound_stream)
+ if (!sound_stream)
{
WARN_LOG_FMT(AUDIO, "Unknown backend {}, using {} instead.", backend, GetDefaultSoundBackend());
backend = GetDefaultSoundBackend();
- g_sound_stream = CreateSoundStreamForBackend(GetDefaultSoundBackend());
+ sound_stream = CreateSoundStreamForBackend(backend);
}
- if (!g_sound_stream || !g_sound_stream->Init())
+ if (!sound_stream || !sound_stream->Init())
{
WARN_LOG_FMT(AUDIO, "Could not initialize backend {}, using {} instead.", backend,
BACKEND_NULLSOUND);
- g_sound_stream = std::make_unique<NullSound>();
- g_sound_stream->Init();
+ sound_stream = std::make_unique<NullSound>();
+ sound_stream->Init();
}
+
+ Core::System::GetInstance().SetSoundStream(std::move(sound_stream));
}
void PostInitSoundStream()
{
+ auto& system = Core::System::GetInstance();
+
// This needs to be called after AudioInterface::Init and SerialInterface::Init (for GBA devices)
// where input sample rates are set
UpdateSoundStream();
SetSoundStreamRunning(true);
- if (Config::Get(Config::MAIN_DUMP_AUDIO) && !s_audio_dump_start)
+ if (Config::Get(Config::MAIN_DUMP_AUDIO) && !system.IsAudioDumpStarted())
StartAudioDump();
}
void ShutdownSoundStream()
{
+ auto& system = Core::System::GetInstance();
+
INFO_LOG_FMT(AUDIO, "Shutting down sound stream");
- if (Config::Get(Config::MAIN_DUMP_AUDIO) && s_audio_dump_start)
+ if (Config::Get(Config::MAIN_DUMP_AUDIO) && system.IsAudioDumpStarted())
StopAudioDump();
SetSoundStreamRunning(false);
- g_sound_stream.reset();
+ system.SetSoundStream(nullptr);
INFO_LOG_FMT(AUDIO, "Done shutting down sound stream");
}
@@ -162,23 +163,29 @@ bool SupportsVolumeChanges(std::string_view backend)
void UpdateSoundStream()
{
- if (g_sound_stream)
+ auto& system = Core::System::GetInstance();
+ SoundStream* sound_stream = system.GetSoundStream();
+
+ if (sound_stream)
{
int volume = Config::Get(Config::MAIN_AUDIO_MUTED) ? 0 : Config::Get(Config::MAIN_AUDIO_VOLUME);
- g_sound_stream->SetVolume(volume);
+ sound_stream->SetVolume(volume);
}
}
void SetSoundStreamRunning(bool running)
{
- if (!g_sound_stream)
+ auto& system = Core::System::GetInstance();
+ SoundStream* sound_stream = system.GetSoundStream();
+
+ if (!sound_stream)
return;
- if (s_sound_stream_running == running)
+ if (system.IsSoundStreamRunning() == running)
return;
- s_sound_stream_running = running;
+ system.SetSoundStreamRunning(running);
- if (g_sound_stream->SetRunning(running))
+ if (sound_stream->SetRunning(running))
return;
if (running)
ERROR_LOG_FMT(AUDIO, "Error starting stream.");
@@ -188,24 +195,30 @@ void SetSoundStreamRunning(bool running)
void SendAIBuffer(const short* samples, unsigned int num_samples)
{
- if (!g_sound_stream)
+ auto& system = Core::System::GetInstance();
+ SoundStream* sound_stream = system.GetSoundStream();
+
+ if (!sound_stream)
return;
- if (Config::Get(Config::MAIN_DUMP_AUDIO) && !s_audio_dump_start)
+ if (Config::Get(Config::MAIN_DUMP_AUDIO) && !system.IsAudioDumpStarted())
StartAudioDump();
- else if (!Config::Get(Config::MAIN_DUMP_AUDIO) && s_audio_dump_start)
+ else if (!Config::Get(Config::MAIN_DUMP_AUDIO) && system.IsAudioDumpStarted())
StopAudioDump();
- Mixer* pMixer = g_sound_stream->GetMixer();
+ Mixer* mixer = sound_stream->GetMixer();
- if (pMixer && samples)
+ if (mixer && samples)
{
- pMixer->PushSamples(samples, num_samples);
+ mixer->PushSamples(samples, num_samples);
}
}
void StartAudioDump()
{
+ auto& system = Core::System::GetInstance();
+ SoundStream* sound_stream = system.GetSoundStream();
+
std::time_t start_time = std::time(nullptr);
std::string path_prefix = File::GetUserPath(D_DUMPAUDIO_IDX) + SConfig::GetInstance().GetGameID();
@@ -217,18 +230,21 @@ void StartAudioDump()
const std::string audio_file_name_dsp = fmt::format("{}_dspdump.wav", base_name);
File::CreateFullPath(audio_file_name_dtk);
File::CreateFullPath(audio_file_name_dsp);
- g_sound_stream->GetMixer()->StartLogDTKAudio(audio_file_name_dtk);
- g_sound_stream->GetMixer()->StartLogDSPAudio(audio_file_name_dsp);
- s_audio_dump_start = true;
+ sound_stream->GetMixer()->StartLogDTKAudio(audio_file_name_dtk);
+ sound_stream->GetMixer()->StartLogDSPAudio(audio_file_name_dsp);
+ system.SetAudioDumpStarted(true);
}
void StopAudioDump()
{
- if (!g_sound_stream)
+ auto& system = Core::System::GetInstance();
+ SoundStream* sound_stream = system.GetSoundStream();
+
+ if (!sound_stream)
return;
- g_sound_stream->GetMixer()->StopLogDTKAudio();
- g_sound_stream->GetMixer()->StopLogDSPAudio();
- s_audio_dump_start = false;
+ sound_stream->GetMixer()->StopLogDTKAudio();
+ sound_stream->GetMixer()->StopLogDSPAudio();
+ system.SetAudioDumpStarted(false);
}
void IncreaseVolume(unsigned short offset)