summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-08-29 16:42:57 +0200
committerJosJuice <josjuice@gmail.com>2020-09-06 15:37:20 +0200
commitbd44106fec950a962fa6150e0b76539504e89476 (patch)
treef5cb3922e4d6e57d78e2a4bf821c233407113e6c /Source/Core
parent1a1b89e7e87818d51a7b33d19245174ecdd78bb2 (diff)
AudioCommon: Get initial sample rates from AudioInterface
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/AudioCommon/AudioCommon.cpp7
-rw-r--r--Source/Core/Core/HW/AudioInterface.cpp7
-rw-r--r--Source/Core/Core/HW/AudioInterface.h3
-rw-r--r--Source/Core/Core/HW/DVD/DVDInterface.cpp3
4 files changed, 17 insertions, 3 deletions
diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp
index 467406dd9c..1330785ac8 100644
--- a/Source/Core/AudioCommon/AudioCommon.cpp
+++ b/Source/Core/AudioCommon/AudioCommon.cpp
@@ -15,6 +15,7 @@
#include "Common/FileUtil.h"
#include "Common/Logging/Log.h"
#include "Core/ConfigManager.h"
+#include "Core/HW/AudioInterface.h"
// This shouldn't be a global, at least not here.
std::unique_ptr<SoundStream> g_sound_stream;
@@ -67,6 +68,12 @@ void InitSoundStream()
g_sound_stream->Init();
}
+ // Ideally these two calls would be done in AudioInterface::Init so that we don't
+ // need to have a dependency on AudioInterface here, but this has to be done
+ // after creating g_sound_stream (above) and before starting audio dumping (below)
+ g_sound_stream->GetMixer()->SetDMAInputSampleRate(AudioInterface::GetAIDSampleRate());
+ g_sound_stream->GetMixer()->SetStreamInputSampleRate(AudioInterface::GetAISSampleRate());
+
UpdateSoundStream();
SetSoundStreamRunning(true);
diff --git a/Source/Core/Core/HW/AudioInterface.cpp b/Source/Core/Core/HW/AudioInterface.cpp
index 0f9afc57c9..84d6a835bb 100644
--- a/Source/Core/Core/HW/AudioInterface.cpp
+++ b/Source/Core/Core/HW/AudioInterface.cpp
@@ -293,11 +293,16 @@ bool IsPlaying()
return (s_control.PSTAT == 1);
}
-unsigned int GetAIDSampleRate()
+u32 GetAIDSampleRate()
{
return s_aid_sample_rate;
}
+u32 GetAISSampleRate()
+{
+ return s_ais_sample_rate;
+}
+
u32 Get32KHzSampleRate()
{
return SConfig::GetInstance().bWii ? 32000 : 32029;
diff --git a/Source/Core/Core/HW/AudioInterface.h b/Source/Core/Core/HW/AudioInterface.h
index 2ffbaeadf7..92d15b1f2b 100644
--- a/Source/Core/Core/HW/AudioInterface.h
+++ b/Source/Core/Core/HW/AudioInterface.h
@@ -24,7 +24,8 @@ bool IsPlaying();
void RegisterMMIO(MMIO::Mapping* mmio, u32 base);
// Get the audio rates (48000 or 32000 only)
-unsigned int GetAIDSampleRate();
+u32 GetAIDSampleRate();
+u32 GetAISSampleRate();
u32 Get32KHzSampleRate();
u32 Get48KHzSampleRate();
diff --git a/Source/Core/Core/HW/DVD/DVDInterface.cpp b/Source/Core/Core/HW/DVD/DVDInterface.cpp
index 5dddd88f3d..89de61ab06 100644
--- a/Source/Core/Core/HW/DVD/DVDInterface.cpp
+++ b/Source/Core/Core/HW/DVD/DVDInterface.cpp
@@ -294,7 +294,8 @@ static u32 AdvanceDTK(u32 maximum_samples, u32* samples_to_process)
static void DTKStreamingCallback(DIInterruptType interrupt_type, const std::vector<u8>& audio_data,
s64 cycles_late)
{
- // TODO: Should we use the configured AIS sample rate instead of a fixed 48 KHz?
+ // TODO: Should we use GetAISSampleRate instead of a fixed 48 KHz? The audio mixer is using
+ // GetAISSampleRate. (This doesn't affect any actual games, since they all set it to 48 KHz.)
const u32 sample_rate = AudioInterface::Get48KHzSampleRate();
// Determine which audio data to read next.