comparison src/audio/nas/SDL_nasaudio.c @ 2060:866052b01ee5

indent is evil
author Sam Lantinga <slouken@libsdl.org>
date Sat, 28 Oct 2006 16:48:03 +0000
parents 5f6550e5184f
children 99210400e8b9
comparison
equal deleted inserted replaced
2059:4685ccd33d0e 2060:866052b01ee5
41 #define NAS_DRIVER_NAME "nas" 41 #define NAS_DRIVER_NAME "nas"
42 42
43 static struct SDL_PrivateAudioData *this2 = NULL; 43 static struct SDL_PrivateAudioData *this2 = NULL;
44 44
45 45
46 static void (*NAS_AuCloseServer)(AuServer *); 46 static void (*NAS_AuCloseServer) (AuServer *);
47 static void (*NAS_AuNextEvent)(AuServer *, AuBool, AuEvent *); 47 static void (*NAS_AuNextEvent) (AuServer *, AuBool, AuEvent *);
48 static AuBool (*NAS_AuDispatchEvent)(AuServer *, AuEvent *); 48 static AuBool(*NAS_AuDispatchEvent) (AuServer *, AuEvent *);
49 static AuFlowID (*NAS_AuCreateFlow)(AuServer *, AuStatus *); 49 static AuFlowID(*NAS_AuCreateFlow) (AuServer *, AuStatus *);
50 static void (*NAS_AuStartFlow)(AuServer *, AuFlowID, AuStatus *); 50 static void (*NAS_AuStartFlow) (AuServer *, AuFlowID, AuStatus *);
51 static void (*NAS_AuSetElements) 51 static void (*NAS_AuSetElements)
52 (AuServer *, AuFlowID, AuBool, int, AuElement *, AuStatus *); 52 (AuServer *, AuFlowID, AuBool, int, AuElement *, AuStatus *);
53 static void (*NAS_AuWriteElement) 53 static void (*NAS_AuWriteElement)
54 (AuServer *, AuFlowID, int, AuUint32, AuPointer, AuBool, AuStatus *); 54 (AuServer *, AuFlowID, int, AuUint32, AuPointer, AuBool, AuStatus *);
55 static AuServer *(*NAS_AuOpenServer) 55 static AuServer *(*NAS_AuOpenServer)
56 (_AuConst char *, int, _AuConst char *, int, _AuConst char *, char **); 56 (_AuConst char *, int, _AuConst char *, int, _AuConst char *, char **);
57 static AuEventHandlerRec *(*NAS_AuRegisterEventHandler) 57 static AuEventHandlerRec *(*NAS_AuRegisterEventHandler)
58 (AuServer *, AuMask, int, AuID, AuEventHandlerCallback, AuPointer); 58 (AuServer *, AuMask, int, AuID, AuEventHandlerCallback, AuPointer);
59 59
60 60
61 #ifdef SDL_AUDIO_DRIVER_NAS_DYNAMIC 61 #ifdef SDL_AUDIO_DRIVER_NAS_DYNAMIC
62 62
63 static const char *nas_library = SDL_AUDIO_DRIVER_NAS_DYNAMIC; 63 static const char *nas_library = SDL_AUDIO_DRIVER_NAS_DYNAMIC;
78 if (!load_nas_sym(#x, (void **) (char *) &NAS_##x)) return -1 78 if (!load_nas_sym(#x, (void **) (char *) &NAS_##x)) return -1
79 #else 79 #else
80 #define SDL_NAS_SYM(x) NAS_##x = x 80 #define SDL_NAS_SYM(x) NAS_##x = x
81 #endif 81 #endif
82 82
83 static int load_nas_syms(void) 83 static int
84 load_nas_syms(void)
84 { 85 {
85 SDL_NAS_SYM(AuCloseServer); 86 SDL_NAS_SYM(AuCloseServer);
86 SDL_NAS_SYM(AuNextEvent); 87 SDL_NAS_SYM(AuNextEvent);
87 SDL_NAS_SYM(AuDispatchEvent); 88 SDL_NAS_SYM(AuDispatchEvent);
88 SDL_NAS_SYM(AuCreateFlow); 89 SDL_NAS_SYM(AuCreateFlow);
91 SDL_NAS_SYM(AuWriteElement); 92 SDL_NAS_SYM(AuWriteElement);
92 SDL_NAS_SYM(AuOpenServer); 93 SDL_NAS_SYM(AuOpenServer);
93 SDL_NAS_SYM(AuRegisterEventHandler); 94 SDL_NAS_SYM(AuRegisterEventHandler);
94 return 0; 95 return 0;
95 } 96 }
97
96 #undef SDL_NAS_SYM 98 #undef SDL_NAS_SYM
97 99
98 #ifdef SDL_AUDIO_DRIVER_NAS_DYNAMIC 100 #ifdef SDL_AUDIO_DRIVER_NAS_DYNAMIC
99 101
100 static void 102 static void
118 size_t len = SDL_strlen(origerr) + 1; 120 size_t len = SDL_strlen(origerr) + 1;
119 char *err = (char *) alloca(len); 121 char *err = (char *) alloca(len);
120 SDL_strlcpy(err, origerr, len); 122 SDL_strlcpy(err, origerr, len);
121 retval = -1; 123 retval = -1;
122 SDL_SetError("NAS: SDL_LoadObject('%s') failed: %s\n", 124 SDL_SetError("NAS: SDL_LoadObject('%s') failed: %s\n",
123 nas_library, err); 125 nas_library, err);
124 } else { 126 } else {
125 retval = load_nas_syms(); 127 retval = load_nas_syms();
126 if (retval < 0) { 128 if (retval < 0) {
127 UnloadNASLibrary(); 129 UnloadNASLibrary();
128 } 130 }
173 } 175 }
174 this->hidden->buf_free -= this->hidden->mixlen; 176 this->hidden->buf_free -= this->hidden->mixlen;
175 177
176 /* Write the audio data */ 178 /* Write the audio data */
177 NAS_AuWriteElement(this->hidden->aud, this->hidden->flow, 0, 179 NAS_AuWriteElement(this->hidden->aud, this->hidden->flow, 0,
178 this->hidden->mixlen, this->hidden->mixbuf, AuFalse, NULL); 180 this->hidden->mixlen, this->hidden->mixbuf, AuFalse,
181 NULL);
179 182
180 this->hidden->written += this->hidden->mixlen; 183 this->hidden->written += this->hidden->mixlen;
181 184
182 #ifdef DEBUG_AUDIO 185 #ifdef DEBUG_AUDIO
183 fprintf(stderr, "Wrote %d bytes of audio data\n", this->hidden->mixlen); 186 fprintf(stderr, "Wrote %d bytes of audio data\n", this->hidden->mixlen);
287 int buffer_size; 290 int buffer_size;
288 SDL_AudioFormat test_format, format; 291 SDL_AudioFormat test_format, format;
289 292
290 /* Initialize all variables that we clean on shutdown */ 293 /* Initialize all variables that we clean on shutdown */
291 this->hidden = (struct SDL_PrivateAudioData *) 294 this->hidden = (struct SDL_PrivateAudioData *)
292 SDL_malloc((sizeof *this->hidden)); 295 SDL_malloc((sizeof *this->hidden));
293 if (this->hidden == NULL) { 296 if (this->hidden == NULL) {
294 SDL_OutOfMemory(); 297 SDL_OutOfMemory();
295 return 0; 298 return 0;
296 } 299 }
297 SDL_memset(this->hidden, 0, (sizeof *this->hidden)); 300 SDL_memset(this->hidden, 0, (sizeof *this->hidden));
337 /* Calculate the final parameters for this audio specification */ 340 /* Calculate the final parameters for this audio specification */
338 SDL_CalculateAudioSpec(&this->spec); 341 SDL_CalculateAudioSpec(&this->spec);
339 342
340 this2 = this->hidden; 343 this2 = this->hidden;
341 344
342 AuMakeElementImportClient(elms,this->spec.freq,format,this->spec.channels, 345 AuMakeElementImportClient(elms, this->spec.freq, format,
343 AuTrue, buffer_size, buffer_size / 4, 0, NULL); 346 this->spec.channels, AuTrue, buffer_size,
347 buffer_size / 4, 0, NULL);
344 AuMakeElementExportDevice(elms + 1, 0, this->hidden->dev, this->spec.freq, 348 AuMakeElementExportDevice(elms + 1, 0, this->hidden->dev, this->spec.freq,
345 AuUnlimitedSamples, 0, NULL); 349 AuUnlimitedSamples, 0, NULL);
346 NAS_AuSetElements(this->hidden->aud, this->hidden->flow, 350 NAS_AuSetElements(this->hidden->aud, this->hidden->flow, AuTrue, 2, elms,
347 AuTrue, 2, elms, NULL); 351 NULL);
348 NAS_AuRegisterEventHandler(this->hidden->aud, AuEventHandlerIDMask, 0, 352 NAS_AuRegisterEventHandler(this->hidden->aud, AuEventHandlerIDMask, 0,
349 this->hidden->flow, event_handler, 353 this->hidden->flow, event_handler,
350 (AuPointer) NULL); 354 (AuPointer) NULL);
351 355
352 NAS_AuStartFlow(this->hidden->aud, this->hidden->flow, NULL); 356 NAS_AuStartFlow(this->hidden->aud, this->hidden->flow, NULL);
370 { 374 {
371 UnloadNASLibrary(); 375 UnloadNASLibrary();
372 } 376 }
373 377
374 static int 378 static int
375 NAS_Init(SDL_AudioDriverImpl *impl) 379 NAS_Init(SDL_AudioDriverImpl * impl)
376 { 380 {
377 if (LoadNASLibrary() < 0) { 381 if (LoadNASLibrary() < 0) {
378 return 0; 382 return 0;
379 } else { 383 } else {
380 AuServer *aud = NAS_AuOpenServer("", 0, NULL, 0, NULL, NULL); 384 AuServer *aud = NAS_AuOpenServer("", 0, NULL, 0, NULL, NULL);
390 impl->PlayDevice = NAS_PlayDevice; 394 impl->PlayDevice = NAS_PlayDevice;
391 impl->WaitDevice = NAS_WaitDevice; 395 impl->WaitDevice = NAS_WaitDevice;
392 impl->GetDeviceBuf = NAS_GetDeviceBuf; 396 impl->GetDeviceBuf = NAS_GetDeviceBuf;
393 impl->CloseDevice = NAS_CloseDevice; 397 impl->CloseDevice = NAS_CloseDevice;
394 impl->Deinitialize = NAS_Deinitialize; 398 impl->Deinitialize = NAS_Deinitialize;
395 impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: is this true? */ 399 impl->OnlyHasDefaultOutputDevice = 1; /* !!! FIXME: is this true? */
396 400
397 return 1; 401 return 1;
398 } 402 }
399 403
400 AudioBootStrap NAS_bootstrap = { 404 AudioBootStrap NAS_bootstrap = {