diff options
author | chai <chaifix@163.com> | 2018-05-27 17:39:09 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-05-27 17:39:09 +0800 |
commit | 4f3ea475b0c72cf83175cc69bdd128b7a306523b (patch) | |
tree | 9cfab06aabccc112f1f0217810048cbd30666ed0 /src/libjin/audio/sdl/audio.cpp | |
parent | 6cc59854d349a02263a5d27810fb824a9f4d1fde (diff) |
更新音频模块
Diffstat (limited to 'src/libjin/audio/sdl/audio.cpp')
-rw-r--r-- | src/libjin/audio/sdl/audio.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
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() {} |