From 4f3ea475b0c72cf83175cc69bdd128b7a306523b Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 27 May 2018 17:39:09 +0800 Subject: =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=9F=B3=E9=A2=91=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/audio/sdl/audio.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'src/libjin/audio/sdl/audio.cpp') diff --git a/src/libjin/audio/sdl/audio.cpp b/src/libjin/audio/sdl/audio.cpp index 7870329..d753587 100644 --- a/src/libjin/audio/sdl/audio.cpp +++ b/src/libjin/audio/sdl/audio.cpp @@ -1,22 +1,29 @@ #include "audio.h" +#include "source.h" namespace jin { namespace audio { + static void defaultCallback(void *userdata, Uint8 *stream, int size) + { + SDLAudio* audio = (SDLAudio*)userdata; + audio->processCommands(); + audio->processSources(stream, size); + } + onlyonce bool SDLAudio::_init(const SettingBase* s) { if (SDL_Init(SDL_INIT_AUDIO) < 0) return false; - - const SDLAudioSetting* setting = (SDLAudioSetting*)s; + SDLAudioSetting* setting = (SDLAudioSetting*)s; SDL_AudioSpec spec; zero(spec); - spec.freq = setting->rate; - spec.format = setting->resolution; - spec.channels = setting->channels; - spec.samples = setting->samples; + spec.freq = 44100; + spec.format = AUDIO_S16SYS; + spec.channels = 1; + spec.samples = 2048; spec.userdata = this; spec.callback = defaultCallback; @@ -36,17 +43,14 @@ namespace audio delete audio; } - shared void SDLAudio::defaultCallback(void *userdata, Uint8 *stream, int size) + void SDLAudio::processCommands() { - SDLAudio* audio = (SDLAudio*)userdata; - int16_t* buffer = (int16_t*)stream; - int len = size >> 1; - audio->processSources(len); + SDLSourceManager::get()->processCommands(); } - void SDLAudio::processSources(int len) + void SDLAudio::processSources(Uint8* buffer, int len) { - + SDLSourceManager::get()->processSources(buffer, len); } void SDLAudio::play() {} -- cgit v1.1-26-g67d0