Mercurial > sdl-ios-xcode
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 = { |