Re-implemented the NullSound back-end. Allows Dolphin to be used on hosts with no sound hardware. Emulates strict DSP timing in the DSP HLE plugin.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6329 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
13dda74946
commit
0af0929a88
|
@ -413,6 +413,14 @@
|
|||
<Filter
|
||||
Name="SoundStreams"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\Src\NullSoundStream.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\NullSoundStream.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\AOSoundStream.cpp"
|
||||
>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include "AudioCommon.h"
|
||||
#include "Mixer.h"
|
||||
#include "NullSoundStream.h"
|
||||
#include "DSoundStream.h"
|
||||
#include "AOSoundStream.h"
|
||||
#include "AlsaSoundStream.h"
|
||||
|
@ -37,6 +38,8 @@ namespace AudioCommon
|
|||
std::string backend = ac_Config.sBackend;
|
||||
if (backend == BACKEND_OPENAL && OpenALStream::isValid())
|
||||
soundStream = new OpenALStream(mixer);
|
||||
else if (backend == BACKEND_NULLSOUND && NullSound::isValid())
|
||||
soundStream = new NullSound(mixer, g_dspInitialize.hWnd);
|
||||
else if (backend == BACKEND_DIRECTSOUND && DSound::isValid())
|
||||
soundStream = new DSound(mixer, g_dspInitialize.hWnd);
|
||||
else if (backend == BACKEND_AOSOUND && AOSound::isValid())
|
||||
|
@ -91,6 +94,8 @@ namespace AudioCommon
|
|||
{
|
||||
std::vector<std::string> backends;
|
||||
|
||||
if (NullSound::isValid())
|
||||
backends.push_back(BACKEND_NULLSOUND);
|
||||
if (DSound::isValid())
|
||||
backends.push_back(BACKEND_DIRECTSOUND);
|
||||
if (OpenALStream::isValid())
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "IniFile.h"
|
||||
|
||||
// Backend Types
|
||||
#define BACKEND_NULLSOUND "No audio output"
|
||||
#define BACKEND_COREAUDIO "CoreAudio"
|
||||
#define BACKEND_DIRECTSOUND "DSound"
|
||||
#define BACKEND_AOSOUND "AOSound"
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "AudioCommon.h"
|
||||
#include "NullSoundStream.h"
|
||||
|
||||
void NullSound::SoundLoop()
|
||||
{
|
||||
}
|
||||
|
||||
bool NullSound::Start()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void NullSound::SetVolume(int volume)
|
||||
{
|
||||
}
|
||||
|
||||
void NullSound::Update()
|
||||
{
|
||||
// This should equal AUDIO_DMA_PERIOD. TODO: Fix after DSP merge
|
||||
int numBytesToRender = 32000 * 4 / 32;
|
||||
m_mixer->Mix(realtimeBuffer, numBytesToRender / 4);
|
||||
}
|
||||
|
||||
void NullSound::Clear(bool mute)
|
||||
{
|
||||
m_muted = mute;
|
||||
}
|
||||
|
||||
void NullSound::Stop()
|
||||
{
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _NULLSOUNDSTREAM_H_
|
||||
#define _NULLSOUNDSTREAM_H_
|
||||
|
||||
#include "SoundStream.h"
|
||||
#include "Thread.h"
|
||||
|
||||
#define BUF_SIZE (48000 * 4 / 32)
|
||||
|
||||
class NullSound : public SoundStream
|
||||
{
|
||||
// playback position
|
||||
short realtimeBuffer[BUF_SIZE / sizeof(short)];
|
||||
|
||||
public:
|
||||
NullSound(CMixer *mixer, void *hWnd = NULL)
|
||||
: SoundStream(mixer)
|
||||
{}
|
||||
|
||||
virtual ~NullSound() {}
|
||||
|
||||
virtual bool Start();
|
||||
virtual void SoundLoop();
|
||||
virtual void SetVolume(int volume);
|
||||
virtual void Stop();
|
||||
virtual void Clear(bool mute);
|
||||
static bool isValid() { return true; }
|
||||
virtual bool usesMixer() const { return true; }
|
||||
virtual void Update();
|
||||
};
|
||||
|
||||
#endif //_NULLSOUNDSTREAM_H_
|
|
@ -8,6 +8,7 @@ files = [
|
|||
'WaveFile.cpp',
|
||||
'Mixer.cpp',
|
||||
'AudioCommon.cpp',
|
||||
'NullSoundStream.cpp',
|
||||
]
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
|
|
Loading…
Reference in New Issue