From 9e56b1d3434c66316d974f324ed45a376d1d1fc0 Mon Sep 17 00:00:00 2001 From: degasus Date: Thu, 13 Feb 2014 13:22:29 +0100 Subject: [PATCH] Disable framerate correction for OpenAL OpenAL itself stretch the time on slowdowns, so the Mixer isn't allowed also to change the rate. --- Source/Core/AudioCommon/Mixer.cpp | 4 ++-- Source/Core/AudioCommon/Mixer.h | 2 +- Source/Core/AudioCommon/OpenALStream.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp index 31698a931d..966b355dc0 100644 --- a/Source/Core/AudioCommon/Mixer.cpp +++ b/Source/Core/AudioCommon/Mixer.cpp @@ -20,7 +20,7 @@ #endif // Executed from sound stream thread -unsigned int CMixer::Mix(short* samples, unsigned int numSamples) +unsigned int CMixer::Mix(short* samples, unsigned int numSamples, bool consider_framelimit) { if (!samples) return 0; @@ -58,7 +58,7 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples) u32 framelimit = SConfig::GetInstance().m_Framelimit; float aid_sample_rate = AudioInterface::GetAIDSampleRate() + offset; - if (framelimit > 2) + if (consider_framelimit && framelimit > 2) { aid_sample_rate = aid_sample_rate * (framelimit - 1) * 5 / VideoInterface::TargetRefreshRate; } diff --git a/Source/Core/AudioCommon/Mixer.h b/Source/Core/AudioCommon/Mixer.h index 4f31d66d7e..d5e82edf4b 100644 --- a/Source/Core/AudioCommon/Mixer.h +++ b/Source/Core/AudioCommon/Mixer.h @@ -42,7 +42,7 @@ public: virtual ~CMixer() {} // Called from audio threads - virtual unsigned int Mix(short* samples, unsigned int numSamples); + virtual unsigned int Mix(short* samples, unsigned int numSamples, bool consider_framelimit = true); virtual void Premix(short * /*samples*/, unsigned int /*numSamples*/) {} // Called from main thread diff --git a/Source/Core/AudioCommon/OpenALStream.cpp b/Source/Core/AudioCommon/OpenALStream.cpp index ce59dc6c57..6e741e8e71 100644 --- a/Source/Core/AudioCommon/OpenALStream.cpp +++ b/Source/Core/AudioCommon/OpenALStream.cpp @@ -192,7 +192,7 @@ void OpenALStream::SoundLoop() unsigned int minSamples = surround_capable ? 240 : 0; // DPL2 accepts 240 samples minimum (FWRDURATION) numSamples = (numSamples > OAL_MAX_SAMPLES) ? OAL_MAX_SAMPLES : numSamples; - numSamples = m_mixer->Mix(realtimeBuffer, numSamples); + numSamples = m_mixer->Mix(realtimeBuffer, numSamples, false); // Convert the samples from short to float float dest[OAL_MAX_SAMPLES * STEREO_CHANNELS];