summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/Mixer.cpp
diff options
context:
space:
mode:
authorDolphin Bot <dolphin-emu-bot@users.noreply.github.com>2014-07-17 10:13:06 +0200
committerDolphin Bot <dolphin-emu-bot@users.noreply.github.com>2014-07-17 10:13:06 +0200
commitae65b3ba2c2ced70b3a04b392ebbd7ad2ccb0784 (patch)
tree7fbadd1adbed866169e66850f5512209fc24e3a0 /Source/Core/AudioCommon/Mixer.cpp
parent11a0f5ddc5d77a3fcf409ac7e3246e5cc30de16a (diff)
parent48afab2685e3ce1a0e3ae7c21932fe3834c86482 (diff)
Merge pull request #639 from phire/fix-audio-issues
Fix audio issues since DTK merge.
Diffstat (limited to 'Source/Core/AudioCommon/Mixer.cpp')
-rw-r--r--Source/Core/AudioCommon/Mixer.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp
index 388eb56b0d..ce13f50689 100644
--- a/Source/Core/AudioCommon/Mixer.cpp
+++ b/Source/Core/AudioCommon/Mixer.cpp
@@ -51,7 +51,6 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo
aid_sample_rate = aid_sample_rate * (framelimit - 1) * 5 / VideoInterface::TargetRefreshRate;
}
- static u32 frac = 0;
const u32 ratio = (u32)( 65536.0f * aid_sample_rate / (float)m_mixer->m_sampleRate );
s32 lvolume = m_LVolume;
@@ -63,7 +62,7 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo
s16 l1 = Common::swap16(m_buffer[indexR & INDEX_MASK]); //current
s16 l2 = Common::swap16(m_buffer[indexR2 & INDEX_MASK]); //next
- int sampleL = ((l1 << 16) + (l2 - l1) * (u16)frac) >> 16;
+ int sampleL = ((l1 << 16) + (l2 - l1) * (u16)m_frac) >> 16;
sampleL = (sampleL * lvolume) >> 8;
sampleL += samples[currentSample + 1];
MathUtil::Clamp(&sampleL, -32767, 32767);
@@ -71,23 +70,23 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo
s16 r1 = Common::swap16(m_buffer[(indexR + 1) & INDEX_MASK]); //current
s16 r2 = Common::swap16(m_buffer[(indexR2 + 1) & INDEX_MASK]); //next
- int sampleR = ((r1 << 16) + (r2 - r1) * (u16)frac) >> 16;
+ int sampleR = ((r1 << 16) + (r2 - r1) * (u16)m_frac) >> 16;
sampleR = (sampleR * rvolume) >> 8;
sampleR += samples[currentSample];
MathUtil::Clamp(&sampleR, -32767, 32767);
samples[currentSample] = sampleR;
- frac += ratio;
- indexR += 2 * (u16)(frac >> 16);
- frac &= 0xffff;
+ m_frac += ratio;
+ indexR += 2 * (u16)(m_frac >> 16);
+ m_frac &= 0xffff;
}
// Padding
short s[2];
s[0] = Common::swap16(m_buffer[(indexR - 1) & INDEX_MASK]);
s[1] = Common::swap16(m_buffer[(indexR - 2) & INDEX_MASK]);
- s[0] = (s[0] * lvolume) >> 8;
- s[1] = (s[1] * rvolume) >> 8;
+ s[0] = (s[0] * rvolume) >> 8;
+ s[1] = (s[1] * lvolume) >> 8;
for (; currentSample < numSamples * 2; currentSample += 2)
{
int sampleR = s[0] + samples[currentSample];