comparison test/testmultiaudio.c @ 2060:866052b01ee5

indent is evil
author Sam Lantinga <slouken@libsdl.org>
date Sat, 28 Oct 2006 16:48:03 +0000
parents 5f6550e5184f
children 9fcde304c7b6
comparison
equal deleted inserted replaced
2059:4685ccd33d0e 2060:866052b01ee5
1 #include "SDL.h" 1 #include "SDL.h"
2 2
3 static SDL_AudioSpec spec; 3 static SDL_AudioSpec spec;
4 static Uint8 *sound = NULL; /* Pointer to wave data */ 4 static Uint8 *sound = NULL; /* Pointer to wave data */
5 static Uint32 soundlen = 0; /* Length of wave data */ 5 static Uint32 soundlen = 0; /* Length of wave data */
6 6
7 typedef struct 7 typedef struct
8 { 8 {
9 SDL_AudioDeviceID dev; 9 SDL_AudioDeviceID dev;
10 int soundpos; 10 int soundpos;
11 volatile int done; 11 volatile int done;
12 } callback_data; 12 } callback_data;
13 13
14 void SDLCALL play_through_once(void *arg, Uint8 * stream, int len) 14 void SDLCALL
15 play_through_once(void *arg, Uint8 * stream, int len)
15 { 16 {
16 callback_data *cbd = (callback_data *) arg; 17 callback_data *cbd = (callback_data *) arg;
17 Uint8 *waveptr = sound + cbd->soundpos; 18 Uint8 *waveptr = sound + cbd->soundpos;
18 int waveleft = soundlen - cbd->soundpos; 19 int waveleft = soundlen - cbd->soundpos;
19 int cpy = len; 20 int cpy = len;
28 memset(stream, spec.silence, len); 29 memset(stream, spec.silence, len);
29 cbd->done++; 30 cbd->done++;
30 } 31 }
31 } 32 }
32 33
33 static void test_multi_audio(int devcount) 34 static void
35 test_multi_audio(int devcount)
34 { 36 {
35 callback_data cbd[64]; 37 callback_data cbd[64];
36 int keep_going = 1; 38 int keep_going = 1;
37 int i; 39 int i;
38 40
39 if (devcount > 64) { 41 if (devcount > 64) {
40 fprintf(stderr, "Too many devices (%d), clamping to 64...\n", devcount); 42 fprintf(stderr, "Too many devices (%d), clamping to 64...\n",
43 devcount);
41 devcount = 64; 44 devcount = 64;
42 } 45 }
43 46
44 spec.callback = play_through_once; 47 spec.callback = play_through_once;
45 48
46 for (i = 0; i < devcount; i++) { 49 for (i = 0; i < devcount; i++) {
47 const char *devname = SDL_GetAudioDeviceName(i, 0); 50 const char *devname = SDL_GetAudioDeviceName(i, 0);
48 printf("playing on device #%d: ('%s')...", i, devname); 51 printf("playing on device #%d: ('%s')...", i, devname);
49 fflush(stdout); 52 fflush(stdout);
50 53
51 memset(&cbd[0], '\0', sizeof (callback_data)); 54 memset(&cbd[0], '\0', sizeof(callback_data));
52 spec.userdata = &cbd[0]; 55 spec.userdata = &cbd[0];
53 cbd[0].dev = SDL_OpenAudioDevice(devname, 0, &spec, NULL); 56 cbd[0].dev = SDL_OpenAudioDevice(devname, 0, &spec, NULL);
54 if (cbd[0].dev == 0) { 57 if (cbd[0].dev == 0) {
55 printf("Open device failed: %s\n", SDL_GetError()); 58 printf("Open device failed: %s\n", SDL_GetError());
56 } else { 59 } else {
61 printf("done.\n"); 64 printf("done.\n");
62 SDL_CloseAudioDevice(cbd[0].dev); 65 SDL_CloseAudioDevice(cbd[0].dev);
63 } 66 }
64 } 67 }
65 68
66 memset(cbd, '\0', sizeof (cbd)); 69 memset(cbd, '\0', sizeof(cbd));
67 70
68 printf("playing on all devices...\n"); 71 printf("playing on all devices...\n");
69 for (i = 0; i < devcount; i++) { 72 for (i = 0; i < devcount; i++) {
70 const char *devname = SDL_GetAudioDeviceName(i, 0); 73 const char *devname = SDL_GetAudioDeviceName(i, 0);
71 spec.userdata = &cbd[i]; 74 spec.userdata = &cbd[i];
100 103
101 printf("All done!\n"); 104 printf("All done!\n");
102 } 105 }
103 106
104 107
105 int main(int argc, char **argv) 108 int
109 main(int argc, char **argv)
106 { 110 {
107 int devcount = 0; 111 int devcount = 0;
108 112
109 /* Load the SDL library */ 113 /* Load the SDL library */
110 if (SDL_Init(SDL_INIT_AUDIO) < 0) { 114 if (SDL_Init(SDL_INIT_AUDIO) < 0) {
122 argv[1] = "sample.wav"; 126 argv[1] = "sample.wav";
123 } 127 }
124 128
125 /* Load the wave file into memory */ 129 /* Load the wave file into memory */
126 if (SDL_LoadWAV(argv[1], &spec, &sound, &soundlen) == NULL) { 130 if (SDL_LoadWAV(argv[1], &spec, &sound, &soundlen) == NULL) {
127 fprintf(stderr, "Couldn't load %s: %s\n", argv[1], SDL_GetError()); 131 fprintf(stderr, "Couldn't load %s: %s\n", argv[1],
132 SDL_GetError());
128 } else { 133 } else {
129 test_multi_audio(devcount); 134 test_multi_audio(devcount);
130 SDL_FreeWAV(sound); 135 SDL_FreeWAV(sound);
131 } 136 }
132 } 137 }