diff options
| author | nakeee <nakeee@gmail.com> | 2009-10-15 17:28:23 +0000 |
|---|---|---|
| committer | nakeee <nakeee@gmail.com> | 2009-10-15 17:28:23 +0000 |
| commit | 5834fa67107d95723bc6ca2cb237ae7a58062e1e (patch) | |
| tree | ac491e4ae0bbd65a1c9d6c222046dc5697358d04 /Source/Core/AudioCommon/Src/PulseAudioStream.cpp | |
| parent | a05fbd852533e18b6809e8f6cc73c139a7ad7503 (diff) | |
Pulse audio empty struct implementation. Working on it though
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4428 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/AudioCommon/Src/PulseAudioStream.cpp')
| -rw-r--r-- | Source/Core/AudioCommon/Src/PulseAudioStream.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Source/Core/AudioCommon/Src/PulseAudioStream.cpp b/Source/Core/AudioCommon/Src/PulseAudioStream.cpp new file mode 100644 index 0000000000..96d0157dca --- /dev/null +++ b/Source/Core/AudioCommon/Src/PulseAudioStream.cpp @@ -0,0 +1,88 @@ +// 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 "Common.h" +#include "Thread.h" + +#include "PulseAudioStream.h" + +#define BUFFER_SIZE 4096 +#define BUFFER_SIZE_BYTES (BUFFER_SIZE*2*2) + +PulseAudio::PulseAudio(CMixer *mixer) : SoundStream(mixer), thread_data(0), handle(NULL) +{ + mix_buffer = new u8[BUFFER_SIZE_BYTES]; +} + +PulseAudio::~PulseAudio() +{ + delete [] mix_buffer; +} + +static void *ThreadTrampoline(void *args) +{ + reinterpret_cast<PulseAudio *>(args)->SoundLoop(); + return NULL; +} + +bool PulseAudio::Start() +{ + thread = new Common::Thread(&ThreadTrampoline, this); + thread_data = 0; + return true; +} + +void PulseAudio::Stop() +{ + thread_data = 1; + delete thread; + thread = NULL; +} + +void PulseAudio::Update() +{ + // don't need to do anything here. +} + +// Called on audio thread. +void PulseAudio::SoundLoop() +{ + PulseInit(); + while (!thread_data) + { + int frames_to_deliver = 512; + m_mixer->Mix(reinterpret_cast<short *>(mix_buffer), frames_to_deliver); + } + PulseShutdown(); + thread_data = 2; +} + +bool PulseAudio::PulseInit() +{ + NOTICE_LOG(AUDIO, "Pulse successfully initialized.\n"); + return true; +} + +void PulseAudio::PulseShutdown() +{ + if (handle != NULL) + { + + handle = NULL; + } +} + |
