From 1deb2a5f8a1c9b44ad38eea73449250d46ec0ce7 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 21 May 2018 23:33:33 +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 | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 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 0559c18..cdf84aa 100644 --- a/src/libjin/audio/sdl/audio.cpp +++ b/src/libjin/audio/sdl/audio.cpp @@ -11,21 +11,22 @@ namespace audio return false; const SDLAudioSetting* setting = (SDLAudioSetting*)s; - SDL_AudioSpec wanted; - zero(wanted); - wanted.freq = setting->rate; - wanted.format = setting->resolution; - wanted.channels = setting->channels; - wanted.samples = setting->samples; - wanted.userdata = setting->userdata; - wanted.callback = setting->callback; + SDL_AudioSpec spec; + zero(spec); + spec.freq = setting->rate; + spec.format = setting->resolution; + spec.channels = setting->channels; + spec.samples = setting->samples; + spec.userdata = this; + spec.callback = defaultCallback; - if (SDL_OpenAudio(&wanted, NULL) < 0) + audioDevice = SDL_OpenAudioDevice(NULL, 0, &spec, NULL, 0); + if (audioDevice == 0) { return false; } // start audio - SDL_PauseAudio(0); + SDL_PauseAudioDevice(audioDevice, 0); return true; } @@ -35,7 +36,15 @@ namespace audio delete audio; } - void SDLAudio::defaultCallback(void *udata, Uint8 *stream, int len) + shared void SDLAudio::defaultCallback(void *userdata, Uint8 *stream, int size) + { + SDLAudio* audio = (SDLAudio*)userdata; + int16_t* buffer = (int16_t*)stream; + int len = size >> 1; + audio->processSources(len); + } + + void SDLAudio::processSources(int len) { } -- cgit v1.1-26-g67d0