diff options
| author | Linktothepast <kostamarino@gmail.com> | 2015-09-28 16:50:35 +0300 |
|---|---|---|
| committer | Linktothepast <kostamarino@gmail.com> | 2015-09-28 16:50:35 +0300 |
| commit | 748be565b8df535ef558e74b38cd0f4d615f8a21 (patch) | |
| tree | b151efee0a87e99125f2401325a9bddecf84fc73 /Source/Core/AudioCommon/Mixer.cpp | |
| parent | cf17fccdd3093a1b8476b10183b1c4bde36da74d (diff) | |
| parent | ce493b897d6d3735c930a8465cc0c26bbe5feb86 (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.cpp | 43 |
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"); } } |
