mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-30 01:29:42 -06:00
Added dtk sound mixing to audiocommon (should work with LLE now)
And also moved all common setting to audiocommonconfig git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2796 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -453,6 +453,14 @@
|
||||
RelativePath=".\Src\AudioCommon.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\AudioCommonConfig.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\AudioCommonConfig.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\Mixer.cpp"
|
||||
>
|
||||
|
@ -24,19 +24,28 @@
|
||||
|
||||
namespace AudioCommon
|
||||
{
|
||||
SoundStream *InitSoundStream(std::string backend, CMixer *mixer)
|
||||
SoundStream *InitSoundStream(CMixer *mixer)
|
||||
{
|
||||
if (!mixer)
|
||||
mixer = new CMixer();
|
||||
|
||||
std::string backend = ac_Config.sBackend;
|
||||
if (backend == BACKEND_DIRECTSOUND && DSound::isValid()) soundStream = new DSound(mixer, g_dspInitialize.hWnd);
|
||||
if (backend == BACKEND_AOSOUND && AOSound::isValid()) soundStream = new AOSound(mixer);
|
||||
if (backend == BACKEND_OPENAL && OpenALStream::isValid()) soundStream = new OpenALStream(mixer);
|
||||
if (backend == BACKEND_NULL && NullSound::isValid()) soundStream = new NullSound(mixer);
|
||||
|
||||
if (soundStream != NULL) {
|
||||
if (soundStream->Start())
|
||||
ac_Config.Update();
|
||||
if (soundStream->Start()) {
|
||||
// Start the sound recording
|
||||
/*
|
||||
if (ac_Config.record) {
|
||||
soundStream->StartLogAudio(FULL_DUMP_DIR g_Config.recordFile);
|
||||
}
|
||||
*/
|
||||
|
||||
return soundStream;
|
||||
}
|
||||
PanicAlert("Could not initialize backend %s, falling back to NULL", backend.c_str());
|
||||
}
|
||||
|
||||
@ -45,7 +54,7 @@ namespace AudioCommon
|
||||
delete soundStream;
|
||||
soundStream = new NullSound(mixer);
|
||||
soundStream->Start();
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -19,25 +19,22 @@
|
||||
#define _AUDIO_COMMON_H_
|
||||
|
||||
#include "Common.h"
|
||||
#include "AudioCommonConfig.h"
|
||||
#include "../../../PluginSpecs/pluginspecs_dsp.h"
|
||||
#include "SoundStream.h"
|
||||
|
||||
|
||||
class CMixer;
|
||||
|
||||
extern DSPInitialize g_dspInitialize;
|
||||
extern SoundStream *soundStream;
|
||||
extern AudioCommonConfig ac_Config;
|
||||
|
||||
namespace AudioCommon
|
||||
{
|
||||
SoundStream *InitSoundStream(std::string backend, CMixer *mixer = NULL);
|
||||
SoundStream *InitSoundStream(CMixer *mixer = NULL);
|
||||
void ShutdownSoundStream();
|
||||
std::vector<std::string> GetSoundBackends();
|
||||
|
||||
// Backend Types
|
||||
#define BACKEND_DIRECTSOUND "DSound"
|
||||
#define BACKEND_AOSOUND "AOSound"
|
||||
#define BACKEND_OPENAL "OpenAL"
|
||||
#define BACKEND_NULL "NullSound"
|
||||
}
|
||||
|
||||
#endif // _AUDIO_COMMON_H_
|
||||
|
29
Source/Core/AudioCommon/Src/AudioCommonConfig.cpp
Normal file
29
Source/Core/AudioCommon/Src/AudioCommonConfig.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
#include "AudioCommon.h"
|
||||
|
||||
AudioCommonConfig ac_Config;
|
||||
|
||||
// Load from given file
|
||||
void AudioCommonConfig::Load(IniFile &file) {
|
||||
file.Get("Config", "EnableDTKMusic", &m_EnableDTKMusic, true);
|
||||
file.Get("Config", "EnableThrottle", &m_EnableThrottle, true);
|
||||
#ifdef _WIN32
|
||||
file.Get("Config", "Backend", &sBackend, "DSound");
|
||||
#else
|
||||
file.Get("Config", "Backend", &sBackend, "AOSound");
|
||||
#endif
|
||||
}
|
||||
|
||||
// Set the values for the file
|
||||
void AudioCommonConfig::Set(IniFile &file) {
|
||||
file.Set("Config", "EnableDTKMusic", m_EnableDTKMusic);
|
||||
file.Set("Config", "EnableThrottle", m_EnableThrottle);
|
||||
file.Set("Config", "Backend", sBackend.c_str());
|
||||
}
|
||||
|
||||
// Update according to the values (stream/mixer)
|
||||
void AudioCommonConfig::Update() {
|
||||
if (soundStream) {
|
||||
soundStream->GetMixer()->SetThrottle(m_EnableThrottle);
|
||||
soundStream->GetMixer()->SetDTKMusic(m_EnableDTKMusic);
|
||||
}
|
||||
}
|
29
Source/Core/AudioCommon/Src/AudioCommonConfig.h
Normal file
29
Source/Core/AudioCommon/Src/AudioCommonConfig.h
Normal file
@ -0,0 +1,29 @@
|
||||
#ifndef _AUDIO_COMMON_CONFIG_H_
|
||||
#define _AUDIO_COMMON_CONFIG_H_
|
||||
|
||||
#include <string>
|
||||
#include "IniFile.h"
|
||||
|
||||
// Backend Types
|
||||
#define BACKEND_DIRECTSOUND "DSound"
|
||||
#define BACKEND_AOSOUND "AOSound"
|
||||
#define BACKEND_OPENAL "OpenAL"
|
||||
#define BACKEND_NULL "NullSound"
|
||||
|
||||
struct AudioCommonConfig
|
||||
{
|
||||
bool m_EnableDTKMusic;
|
||||
bool m_EnableThrottle;
|
||||
std::string sBackend;
|
||||
|
||||
// Load from given file
|
||||
void Load(IniFile &file);
|
||||
|
||||
// Set the values for the file
|
||||
void Set(IniFile &file);
|
||||
|
||||
// Update according to the values (stream/mixer)
|
||||
void Update();
|
||||
};
|
||||
|
||||
#endif //AUDIO_COMMON_CONFIG
|
@ -39,6 +39,11 @@ void CMixer::Mix(short *samples, int numSamples)
|
||||
return;
|
||||
}
|
||||
|
||||
// first get the DTK Music
|
||||
if (m_EnableDTKMusic) {
|
||||
g_dspInitialize.pGetAudioStreaming(samples, numSamples);
|
||||
}
|
||||
|
||||
Premix(samples, numSamples);
|
||||
|
||||
push_sync.Enter();
|
||||
|
@ -41,6 +41,7 @@ public:
|
||||
int GetSampleRate() {return m_sampleRate;}
|
||||
|
||||
void SetThrottle(bool use) { m_throttle = use;}
|
||||
void SetDTKMusic(bool use) { m_EnableDTKMusic = use;}
|
||||
|
||||
// TODO: do we need this
|
||||
bool IsHLEReady() { return m_HLEready;}
|
||||
@ -56,6 +57,7 @@ protected:
|
||||
bool m_HLEready;
|
||||
int m_queueSize;
|
||||
|
||||
bool m_EnableDTKMusic;
|
||||
bool m_throttle;
|
||||
private:
|
||||
Common::CriticalSection push_sync;
|
||||
|
@ -3,9 +3,10 @@
|
||||
Import('env')
|
||||
|
||||
files = [
|
||||
'AOSoundStream.cpp',
|
||||
'OpenALStream.cpp',
|
||||
'WaveFile.cpp',
|
||||
'AOSoundStream.cpp',
|
||||
'AudioCommonConfig.cpp',
|
||||
'OpenALStream.cpp',
|
||||
'WaveFile.cpp',
|
||||
'Mixer.cpp',
|
||||
'AudioCommon.cpp',
|
||||
]
|
||||
|
Reference in New Issue
Block a user