tron@2186: /* $Id$ */ tron@2186: richk@10724: /** @file sdl_s.cpp Playing sound via SDL. */ richk@10724: Darkvater@6450: #ifdef WITH_SDL Darkvater@6450: tron@2189: #include "../stdafx.h" tron@2189: tron@2189: #include "../driver.h" tron@2189: #include "../mixer.h" tron@2189: #include "../sdl.h" tron@2189: #include "sdl_s.h" truelight@0: #include truelight@0: richk@6720: static FSoundDriver_SDL iFSoundDriver_SDL; richk@6720: truelight@0: static void CDECL fill_sound_buffer(void *userdata, Uint8 *stream, int len) truelight@0: { tron@2977: MxMixSamples(stream, len / 4); truelight@0: } truelight@0: richk@6720: const char *SoundDriver_SDL::Start(const char * const *parm) truelight@0: { truelight@0: SDL_AudioSpec spec; truelight@193: tron@1301: const char *s = SdlOpen(SDL_INIT_AUDIO); tron@423: if (s != NULL) return s; tron@423: truelight@0: spec.freq = GetDriverParamInt(parm, "hz", 11025); truelight@0: spec.format = AUDIO_S16SYS; truelight@0: spec.channels = 2; truelight@0: spec.samples = 512; tron@423: spec.callback = fill_sound_buffer; truelight@0: SDL_CALL SDL_OpenAudio(&spec, &spec); truelight@0: SDL_CALL SDL_PauseAudio(0); truelight@0: return NULL; truelight@0: } truelight@0: richk@6720: void SoundDriver_SDL::Stop() truelight@0: { truelight@0: SDL_CALL SDL_CloseAudio(); truelight@0: SdlClose(SDL_INIT_AUDIO); truelight@0: } truelight@0: Darkvater@6314: #endif /* WITH_SDL */