summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/Mixer.cpp
diff options
context:
space:
mode:
authorLinktothepast <kostamarino@gmail.com>2015-09-28 16:50:35 +0300
committerLinktothepast <kostamarino@gmail.com>2015-09-28 16:50:35 +0300
commit748be565b8df535ef558e74b38cd0f4d615f8a21 (patch)
treeb151efee0a87e99125f2401325a9bddecf84fc73 /Source/Core/AudioCommon/Mixer.cpp
parentcf17fccdd3093a1b8476b10183b1c4bde36da74d (diff)
parentce493b897d6d3735c930a8465cc0c26bbe5feb86 (diff)
Merge remote-tracking branch 'dolphin-emu/master' into gameinis
Diffstat (limited to 'Source/Core/AudioCommon/Mixer.cpp')
-rw-r--r--Source/Core/AudioCommon/Mixer.cpp43
1 files changed, 26 insertions, 17 deletions
diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp
index dbf7167bb4..56370ed350 100644
--- a/Source/Core/AudioCommon/Mixer.cpp
+++ b/Source/Core/AudioCommon/Mixer.cpp
@@ -18,6 +18,18 @@
#include <tmmintrin.h>
#endif
+CMixer::CMixer(unsigned int BackendSampleRate)
+ : m_dma_mixer(this, 32000)
+ , m_streaming_mixer(this, 48000)
+ , m_wiimote_speaker_mixer(this, 3000)
+ , m_sampleRate(BackendSampleRate)
+ , m_log_dtk_audio(false)
+ , m_log_dsp_audio(false)
+ , m_speed(0)
+{
+ INFO_LOG(AUDIO_INTERFACE, "Mixer is initialized");
+}
+
// Executed from sound stream thread
unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, bool consider_framelimit)
{
@@ -65,16 +77,14 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo
int sampleL = ((l1 << 16) + (l2 - l1) * (u16)m_frac) >> 16;
sampleL = (sampleL * lvolume) >> 8;
sampleL += samples[currentSample + 1];
- MathUtil::Clamp(&sampleL, -32767, 32767);
- samples[currentSample + 1] = sampleL;
+ samples[currentSample + 1] = MathUtil::Clamp(sampleL, -32767, 32767);
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)m_frac) >> 16;
sampleR = (sampleR * rvolume) >> 8;
sampleR += samples[currentSample];
- MathUtil::Clamp(&sampleR, -32767, 32767);
- samples[currentSample] = sampleR;
+ samples[currentSample] = MathUtil::Clamp(sampleR, -32767, 32767);
m_frac += ratio;
indexR += 2 * (u16)(m_frac >> 16);
@@ -89,11 +99,10 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo
s[1] = (s[1] * lvolume) >> 8;
for (; currentSample < numSamples * 2; currentSample += 2)
{
- int sampleR = s[0] + samples[currentSample];
- MathUtil::Clamp(&sampleR, -32767, 32767);
- samples[currentSample] = sampleR;
- int sampleL = s[1] + samples[currentSample + 1];
- MathUtil::Clamp(&sampleL, -32767, 32767);
+ int sampleR = MathUtil::Clamp(s[0] + samples[currentSample + 0], -32767, 32767);
+ int sampleL = MathUtil::Clamp(s[1] + samples[currentSample + 1], -32767, 32767);
+
+ samples[currentSample + 0] = sampleR;
samples[currentSample + 1] = sampleL;
}
@@ -210,11 +219,11 @@ void CMixer::StartLogDTKAudio(const std::string& filename)
m_log_dtk_audio = true;
m_wave_writer_dtk.Start(filename, 48000);
m_wave_writer_dtk.SetSkipSilence(false);
- NOTICE_LOG(DSPHLE, "Starting DTK Audio logging");
+ NOTICE_LOG(AUDIO, "Starting DTK Audio logging");
}
else
{
- WARN_LOG(DSPHLE, "DTK Audio logging has already been started");
+ WARN_LOG(AUDIO, "DTK Audio logging has already been started");
}
}
@@ -224,11 +233,11 @@ void CMixer::StopLogDTKAudio()
{
m_log_dtk_audio = false;
m_wave_writer_dtk.Stop();
- NOTICE_LOG(DSPHLE, "Stopping DTK Audio logging");
+ NOTICE_LOG(AUDIO, "Stopping DTK Audio logging");
}
else
{
- WARN_LOG(DSPHLE, "DTK Audio logging has already been stopped");
+ WARN_LOG(AUDIO, "DTK Audio logging has already been stopped");
}
}
@@ -239,11 +248,11 @@ void CMixer::StartLogDSPAudio(const std::string& filename)
m_log_dsp_audio = true;
m_wave_writer_dsp.Start(filename, 32000);
m_wave_writer_dsp.SetSkipSilence(false);
- NOTICE_LOG(DSPHLE, "Starting DSP Audio logging");
+ NOTICE_LOG(AUDIO, "Starting DSP Audio logging");
}
else
{
- WARN_LOG(DSPHLE, "DSP Audio logging has already been started");
+ WARN_LOG(AUDIO, "DSP Audio logging has already been started");
}
}
@@ -253,11 +262,11 @@ void CMixer::StopLogDSPAudio()
{
m_log_dsp_audio = false;
m_wave_writer_dsp.Stop();
- NOTICE_LOG(DSPHLE, "Stopping DSP Audio logging");
+ NOTICE_LOG(AUDIO, "Stopping DSP Audio logging");
}
else
{
- WARN_LOG(DSPHLE, "DSP Audio logging has already been stopped");
+ WARN_LOG(AUDIO, "DSP Audio logging has already been stopped");
}
}