summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon
diff options
context:
space:
mode:
authorFog <christhecoolist@gmail.com>2014-10-04 03:28:01 -0400
committerFog <christhecoolist@gmail.com>2014-10-09 00:06:04 -0400
commitfc4125cdd15c6119d75f6667cd44dcbd4df4a8b3 (patch)
treea7ce8b2e4c918ea08db6d9841befc13b27c7250e /Source/Core/AudioCommon
parent47bf698b70668f72f8495da209ffe68091d89bcf (diff)
Proper Audio/Video Dumping
Diffstat (limited to 'Source/Core/AudioCommon')
-rw-r--r--Source/Core/AudioCommon/AudioCommon.cpp14
-rw-r--r--Source/Core/AudioCommon/AudioCommon.vcxproj2
-rw-r--r--Source/Core/AudioCommon/AudioCommon.vcxproj.filters2
-rw-r--r--Source/Core/AudioCommon/Mixer.cpp6
-rw-r--r--Source/Core/AudioCommon/Mixer.h64
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;