Disable framerate correction for OpenAL

OpenAL itself stretch the time on slowdowns, so the Mixer isn't allowed also to change the rate.
This commit is contained in:
degasus 2014-02-13 13:22:29 +01:00
parent bbd58b8f6a
commit 9e56b1d343
3 changed files with 4 additions and 4 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -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];