diff options
| author | Fog <christhecoolist@gmail.com> | 2014-10-04 03:28:01 -0400 |
|---|---|---|
| committer | Fog <christhecoolist@gmail.com> | 2014-10-09 00:06:04 -0400 |
| commit | fc4125cdd15c6119d75f6667cd44dcbd4df4a8b3 (patch) | |
| tree | a7ce8b2e4c918ea08db6d9841befc13b27c7250e /Source/Core/AudioCommon | |
| parent | 47bf698b70668f72f8495da209ffe68091d89bcf (diff) | |
Proper Audio/Video Dumping
Diffstat (limited to 'Source/Core/AudioCommon')
| -rw-r--r-- | Source/Core/AudioCommon/AudioCommon.cpp | 14 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/AudioCommon.vcxproj | 2 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/AudioCommon.vcxproj.filters | 2 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/Mixer.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/Mixer.h | 64 |
5 files changed, 64 insertions, 24 deletions
diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp index 88fc7b892f..8afbc1478e 100644 --- a/Source/Core/AudioCommon/AudioCommon.cpp +++ b/Source/Core/AudioCommon/AudioCommon.cpp @@ -68,9 +68,12 @@ namespace AudioCommon { if (SConfig::GetInstance().m_DumpAudio) { - std::string audio_file_name = File::GetUserPath(D_DUMPAUDIO_IDX) + "audiodump.wav"; - File::CreateFullPath(audio_file_name); - mixer->StartLogAudio(audio_file_name); + std::string audio_file_name_dtk = File::GetUserPath(D_DUMPAUDIO_IDX) + "dtkdump.wav"; + std::string audio_file_name_dsp = File::GetUserPath(D_DUMPAUDIO_IDX) + "dspdump.wav"; + File::CreateFullPath(audio_file_name_dtk); + File::CreateFullPath(audio_file_name_dsp); + mixer->StartLogDTKAudio(audio_file_name_dtk); + mixer->StartLogDSPAudio(audio_file_name_dsp); } return g_sound_stream; @@ -93,8 +96,11 @@ namespace AudioCommon { g_sound_stream->Stop(); if (SConfig::GetInstance().m_DumpAudio) - g_sound_stream->GetMixer()->StopLogAudio(); + { + g_sound_stream->GetMixer()->StopLogDTKAudio(); + g_sound_stream->GetMixer()->StopLogDSPAudio(); //g_sound_stream->StopLogAudio(); + } delete g_sound_stream; g_sound_stream = nullptr; } diff --git a/Source/Core/AudioCommon/AudioCommon.vcxproj b/Source/Core/AudioCommon/AudioCommon.vcxproj index c626ffd77d..13aa887e32 100644 --- a/Source/Core/AudioCommon/AudioCommon.vcxproj +++ b/Source/Core/AudioCommon/AudioCommon.vcxproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup Label="ProjectConfigurations"> <ProjectConfiguration Include="Debug|x64"> diff --git a/Source/Core/AudioCommon/AudioCommon.vcxproj.filters b/Source/Core/AudioCommon/AudioCommon.vcxproj.filters index 2832422073..fee0799dbb 100644 --- a/Source/Core/AudioCommon/AudioCommon.vcxproj.filters +++ b/Source/Core/AudioCommon/AudioCommon.vcxproj.filters @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Filter Include="SoundStreams"> diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp index a7984579ca..60203b2f37 100644 --- a/Source/Core/AudioCommon/Mixer.cpp +++ b/Source/Core/AudioCommon/Mixer.cpp @@ -122,8 +122,6 @@ unsigned int CMixer::Mix(short* samples, unsigned int num_samples, bool consider m_dma_mixer.Mix(samples, num_samples, consider_framelimit); m_streaming_mixer.Mix(samples, num_samples, consider_framelimit); m_wiimote_speaker_mixer.Mix(samples, num_samples, consider_framelimit); - if (m_logAudio) - g_wave_writer.AddStereoSamples(samples, num_samples); return num_samples; } @@ -161,11 +159,15 @@ void CMixer::MixerFifo::PushSamples(const short *samples, unsigned int num_sampl void CMixer::PushSamples(const short *samples, unsigned int num_samples) { m_dma_mixer.PushSamples(samples, num_samples); + if (m_log_dsp_audio) + g_wave_writer_dsp.AddStereoSamplesBE(samples, num_samples); } void CMixer::PushStreamingSamples(const short *samples, unsigned int num_samples) { m_streaming_mixer.PushSamples(samples, num_samples); + if (m_log_dtk_audio) + g_wave_writer_dtk.AddStereoSamplesBE(samples, num_samples); } void CMixer::PushWiimoteSpeakerSamples(const short *samples, unsigned int num_samples, unsigned int sample_rate) diff --git a/Source/Core/AudioCommon/Mixer.h b/Source/Core/AudioCommon/Mixer.h index e3272af070..ba9809d5bc 100644 --- a/Source/Core/AudioCommon/Mixer.h +++ b/Source/Core/AudioCommon/Mixer.h @@ -26,7 +26,8 @@ public: , m_streaming_mixer(this, 48000) , m_wiimote_speaker_mixer(this, 3000) , m_sampleRate(BackendSampleRate) - , m_logAudio(0) + , m_log_dtk_audio(0) + , m_log_dsp_audio(0) , m_speed(0) { INFO_LOG(AUDIO_INTERFACE, "Mixer is initialized"); @@ -48,32 +49,61 @@ public: void SetStreamingVolume(unsigned int lvolume, unsigned int rvolume); void SetWiimoteSpeakerVolume(unsigned int lvolume, unsigned int rvolume); - virtual void StartLogAudio(const std::string& filename) + virtual void StartLogDTKAudio(const std::string& filename) { - if (! m_logAudio) + if (!m_log_dtk_audio) { - m_logAudio = true; - g_wave_writer.Start(filename, GetSampleRate()); - g_wave_writer.SetSkipSilence(false); - NOTICE_LOG(DSPHLE, "Starting Audio logging"); + m_log_dtk_audio = true; + g_wave_writer_dtk.Start(filename, 48000); + g_wave_writer_dtk.SetSkipSilence(false); + NOTICE_LOG(DSPHLE, "Starting DTK Audio logging"); } else { - WARN_LOG(DSPHLE, "Audio logging has already been started"); + WARN_LOG(DSPHLE, "DTK Audio logging has already been started"); } } - virtual void StopLogAudio() + virtual void StopLogDTKAudio() { - if (m_logAudio) + if (m_log_dtk_audio) { - m_logAudio = false; - g_wave_writer.Stop(); - NOTICE_LOG(DSPHLE, "Stopping Audio logging"); + m_log_dtk_audio = false; + g_wave_writer_dtk.Stop(); + NOTICE_LOG(DSPHLE, "Stopping DTK Audio logging"); } else { - WARN_LOG(DSPHLE, "Audio logging has already been stopped"); + WARN_LOG(DSPHLE, "DTK Audio logging has already been stopped"); + } + } + + virtual void StartLogDSPAudio(const std::string& filename) + { + if (!m_log_dsp_audio) + { + m_log_dsp_audio = true; + g_wave_writer_dsp.Start(filename, 32000); + g_wave_writer_dsp.SetSkipSilence(false); + NOTICE_LOG(DSPHLE, "Starting DSP Audio logging"); + } + else + { + WARN_LOG(DSPHLE, "DSP Audio logging has already been started"); + } + } + + virtual void StopLogDSPAudio() + { + if (m_log_dsp_audio) + { + m_log_dsp_audio = false; + g_wave_writer_dsp.Stop(); + NOTICE_LOG(DSPHLE, "Stopping DSP Audio logging"); + } + else + { + WARN_LOG(DSPHLE, "DSP Audio logging has already been stopped"); } } @@ -118,9 +148,11 @@ protected: MixerFifo m_wiimote_speaker_mixer; unsigned int m_sampleRate; - WaveFileWriter g_wave_writer; + WaveFileWriter g_wave_writer_dtk; + WaveFileWriter g_wave_writer_dsp; - bool m_logAudio; + bool m_log_dtk_audio; + bool m_log_dsp_audio; std::mutex m_csMixing; |
