Mercurial > sdl-ios-xcode
diff test/loopwave.c @ 1895:c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 10 Jul 2006 21:04:37 +0000 |
parents | 290b5baf2fca |
children | 5f6550e5184f |
line wrap: on
line diff
--- a/test/loopwave.c Thu Jul 06 18:01:37 2006 +0000 +++ b/test/loopwave.c Mon Jul 10 21:04:37 2006 +0000 @@ -16,99 +16,117 @@ #include "SDL.h" #include "SDL_audio.h" -struct { - SDL_AudioSpec spec; - Uint8 *sound; /* Pointer to wave data */ - Uint32 soundlen; /* Length of wave data */ - int soundpos; /* Current play position */ +struct +{ + SDL_AudioSpec spec; + Uint8 *sound; /* Pointer to wave data */ + Uint32 soundlen; /* Length of wave data */ + int soundpos; /* Current play position */ } wave; /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void quit(int rc) +static void +quit(int rc) { - SDL_Quit(); - exit(rc); + SDL_Quit(); + exit(rc); } -void SDLCALL fillerup(void *unused, Uint8 *stream, int len) +void SDLCALL +fillerup(void *unused, Uint8 * stream, int len) { - Uint8 *waveptr; - int waveleft; + Uint8 *waveptr; + int waveleft; - /* Set up the pointers */ - waveptr = wave.sound + wave.soundpos; - waveleft = wave.soundlen - wave.soundpos; + /* Set up the pointers */ + waveptr = wave.sound + wave.soundpos; + waveleft = wave.soundlen - wave.soundpos; - /* Go! */ - while ( waveleft <= len ) { - SDL_MixAudio(stream, waveptr, waveleft, SDL_MIX_MAXVOLUME); - stream += waveleft; - len -= waveleft; - waveptr = wave.sound; - waveleft = wave.soundlen; - wave.soundpos = 0; - } - SDL_MixAudio(stream, waveptr, len, SDL_MIX_MAXVOLUME); - wave.soundpos += len; + /* Go! */ + while (waveleft <= len) { + SDL_MixAudio(stream, waveptr, waveleft, SDL_MIX_MAXVOLUME); + stream += waveleft; + len -= waveleft; + waveptr = wave.sound; + waveleft = wave.soundlen; + wave.soundpos = 0; + } + SDL_MixAudio(stream, waveptr, len, SDL_MIX_MAXVOLUME); + wave.soundpos += len; } static int done = 0; -void poked(int sig) +void +poked(int sig) { - done = 1; + done = 1; } -int main(int argc, char *argv[]) +int +main(int argc, char *argv[]) { - char name[32]; + int i, n; + + /* Print available audio drivers */ + n = SDL_GetNumAudioDrivers(); + if (n == 0) { + printf("No built-in audio drivers\n"); + } else { + printf("Built-in audio drivers:"); + for (i = 0; i < n; ++i) { + if (i > 0) { + printf(","); + } + printf(" %s", SDL_GetAudioDriver(i)); + } + printf("\n"); + } - /* Load the SDL library */ - if ( SDL_Init(SDL_INIT_AUDIO) < 0 ) { - fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); - return(1); - } - if ( argv[1] == NULL ) { - argv[1] = "sample.wav"; - } - /* Load the wave file into memory */ - if ( SDL_LoadWAV(argv[1], - &wave.spec, &wave.sound, &wave.soundlen) == NULL ) { - fprintf(stderr, "Couldn't load %s: %s\n", - argv[1], SDL_GetError()); - quit(1); - } + /* Load the SDL library */ + if (SDL_Init(SDL_INIT_AUDIO) < 0) { + fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); + return (1); + } + if (argv[1] == NULL) { + argv[1] = "sample.wav"; + } + /* Load the wave file into memory */ + if (SDL_LoadWAV(argv[1], &wave.spec, &wave.sound, &wave.soundlen) == NULL) { + fprintf(stderr, "Couldn't load %s: %s\n", argv[1], SDL_GetError()); + quit(1); + } - wave.spec.callback = fillerup; + wave.spec.callback = fillerup; #if HAVE_SIGNAL_H - /* Set the signals */ + /* Set the signals */ #ifdef SIGHUP - signal(SIGHUP, poked); + signal(SIGHUP, poked); #endif - signal(SIGINT, poked); + signal(SIGINT, poked); #ifdef SIGQUIT - signal(SIGQUIT, poked); + signal(SIGQUIT, poked); #endif - signal(SIGTERM, poked); + signal(SIGTERM, poked); #endif /* HAVE_SIGNAL_H */ - /* Initialize fillerup() variables */ - if ( SDL_OpenAudio(&wave.spec, NULL) < 0 ) { - fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); - SDL_FreeWAV(wave.sound); - quit(2); - } - SDL_PauseAudio(0); + /* Initialize fillerup() variables */ + if (SDL_OpenAudio(&wave.spec, NULL) < 0) { + fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); + SDL_FreeWAV(wave.sound); + quit(2); + } + SDL_PauseAudio(0); - /* Let the audio run */ - printf("Using audio driver: %s\n", SDL_AudioDriverName(name, 32)); - while ( ! done && (SDL_GetAudioStatus() == SDL_AUDIO_PLAYING) ) - SDL_Delay(1000); + /* Let the audio run */ + printf("Using audio driver: %s\n", SDL_GetCurrentAudioDriver()); + while (!done && (SDL_GetAudioStatus() == SDL_AUDIO_PLAYING)) + SDL_Delay(1000); - /* Clean up on signal */ - SDL_CloseAudio(); - SDL_FreeWAV(wave.sound); - SDL_Quit(); - return(0); + /* Clean up on signal */ + SDL_CloseAudio(); + SDL_FreeWAV(wave.sound); + SDL_Quit(); + return (0); }