Mercurial > sdl-ios-xcode
diff src/audio/dma/SDL_dmaaudio.c @ 1668:4da1ee79c9af SDL-1.3
more tweaking indent options
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 29 May 2006 04:04:35 +0000 |
parents | 782fd950bd46 |
children |
line wrap: on
line diff
--- a/src/audio/dma/SDL_dmaaudio.c Mon May 29 03:53:21 2006 +0000 +++ b/src/audio/dma/SDL_dmaaudio.c Mon May 29 04:04:35 2006 +0000 @@ -60,64 +60,64 @@ #define OPEN_FLAGS (O_RDWR|O_NONBLOCK) /* Audio driver functions */ -static int DMA_OpenAudio (_THIS, SDL_AudioSpec * spec); -static void DMA_WaitAudio (_THIS); -static void DMA_PlayAudio (_THIS); -static Uint8 *DMA_GetAudioBuf (_THIS); -static void DMA_CloseAudio (_THIS); +static int DMA_OpenAudio(_THIS, SDL_AudioSpec * spec); +static void DMA_WaitAudio(_THIS); +static void DMA_PlayAudio(_THIS); +static Uint8 *DMA_GetAudioBuf(_THIS); +static void DMA_CloseAudio(_THIS); /* Audio driver bootstrap functions */ static int -Audio_Available (void) +Audio_Available(void) { int available; int fd; available = 0; - fd = SDL_OpenAudioPath (NULL, 0, OPEN_FLAGS, 0); + fd = SDL_OpenAudioPath(NULL, 0, OPEN_FLAGS, 0); if (fd >= 0) { int caps; struct audio_buf_info info; - if ((ioctl (fd, SNDCTL_DSP_GETCAPS, &caps) == 0) && + if ((ioctl(fd, SNDCTL_DSP_GETCAPS, &caps) == 0) && (caps & DSP_CAP_TRIGGER) && (caps & DSP_CAP_MMAP) && - (ioctl (fd, SNDCTL_DSP_GETOSPACE, &info) == 0)) { + (ioctl(fd, SNDCTL_DSP_GETOSPACE, &info) == 0)) { available = 1; } - close (fd); + close(fd); } return (available); } static void -Audio_DeleteDevice (SDL_AudioDevice * device) +Audio_DeleteDevice(SDL_AudioDevice * device) { - SDL_free (device->hidden); - SDL_free (device); + SDL_free(device->hidden); + SDL_free(device); } static SDL_AudioDevice * -Audio_CreateDevice (int devindex) +Audio_CreateDevice(int devindex) { SDL_AudioDevice *this; /* Initialize all variables that we clean on shutdown */ - this = (SDL_AudioDevice *) SDL_malloc (sizeof (SDL_AudioDevice)); + this = (SDL_AudioDevice *) SDL_malloc(sizeof(SDL_AudioDevice)); if (this) { - SDL_memset (this, 0, (sizeof *this)); + SDL_memset(this, 0, (sizeof *this)); this->hidden = (struct SDL_PrivateAudioData *) - SDL_malloc ((sizeof *this->hidden)); + SDL_malloc((sizeof *this->hidden)); } if ((this == NULL) || (this->hidden == NULL)) { - SDL_OutOfMemory (); + SDL_OutOfMemory(); if (this) { - SDL_free (this); + SDL_free(this); } return (0); } - SDL_memset (this->hidden, 0, (sizeof *this->hidden)); + SDL_memset(this->hidden, 0, (sizeof *this->hidden)); audio_fd = -1; /* Set the function pointers */ @@ -139,7 +139,7 @@ /* This function waits until it is possible to write a full sound buffer */ static void -DMA_WaitAudio (_THIS) +DMA_WaitAudio(_THIS) { fd_set fdset; @@ -150,7 +150,7 @@ that use a different process id for each thread. */ if (parent && (((++cnt) % 10) == 0)) { /* Check every 10 loops */ - if (kill (parent, 0) < 0) { + if (kill(parent, 0) < 0) { this->enabled = 0; } } @@ -161,21 +161,21 @@ /* Use timer for general audio synchronization */ Sint32 ticks; - ticks = ((Sint32) (next_frame - SDL_GetTicks ())) - FUDGE_TICKS; + ticks = ((Sint32) (next_frame - SDL_GetTicks())) - FUDGE_TICKS; if (ticks > 0) { - SDL_Delay (ticks); + SDL_Delay(ticks); } } else { /* Use select() for audio synchronization */ struct timeval timeout; - FD_ZERO (&fdset); - FD_SET (audio_fd, &fdset); + FD_ZERO(&fdset); + FD_SET(audio_fd, &fdset); timeout.tv_sec = 10; timeout.tv_usec = 0; #ifdef DEBUG_AUDIO - fprintf (stderr, "Waiting for audio to get ready\n"); + fprintf(stderr, "Waiting for audio to get ready\n"); #endif - if (select (audio_fd + 1, NULL, &fdset, NULL, &timeout) <= 0) { + if (select(audio_fd + 1, NULL, &fdset, NULL, &timeout) <= 0) { const char *message = #ifdef AUDIO_OSPACE_HACK "Audio timeout - buggy audio driver? (trying ospace)"; @@ -186,29 +186,29 @@ but in this case we have no other way of letting the user know what happened. */ - fprintf (stderr, "SDL: %s\n", message); + fprintf(stderr, "SDL: %s\n", message); #ifdef AUDIO_OSPACE_HACK /* We may be able to use GET_OSPACE trick */ frame_ticks = (float) (this->spec->samples * 1000) / this->spec->freq; - next_frame = SDL_GetTicks () + frame_ticks; + next_frame = SDL_GetTicks() + frame_ticks; #else this->enabled = 0; /* Don't try to close - may hang */ audio_fd = -1; #ifdef DEBUG_AUDIO - fprintf (stderr, "Done disabling audio\n"); + fprintf(stderr, "Done disabling audio\n"); #endif #endif /* AUDIO_OSPACE_HACK */ } #ifdef DEBUG_AUDIO - fprintf (stderr, "Ready!\n"); + fprintf(stderr, "Ready!\n"); #endif } } static void -DMA_PlayAudio (_THIS) +DMA_PlayAudio(_THIS) { /* If timer synchronization is enabled, set the next write frame */ if (frame_ticks) { @@ -218,7 +218,7 @@ } static Uint8 * -DMA_GetAudioBuf (_THIS) +DMA_GetAudioBuf(_THIS) { count_info info; int playing; @@ -226,7 +226,7 @@ /* Get number of blocks, looping if we're not using select() */ do { - if (ioctl (audio_fd, SNDCTL_DSP_GETOPTR, &info) < 0) { + if (ioctl(audio_fd, SNDCTL_DSP_GETOPTR, &info) < 0) { /* Uh oh... */ this->enabled = 0; return (NULL); @@ -235,7 +235,7 @@ while (frame_ticks && (info.blocks < 1)); #ifdef DEBUG_AUDIO if (info.blocks > 1) { - printf ("Warning: audio underflow (%d frags)\n", info.blocks - 1); + printf("Warning: audio underflow (%d frags)\n", info.blocks - 1); } #endif playing = info.ptr / this->spec.size; @@ -244,69 +244,68 @@ } static void -DMA_CloseAudio (_THIS) +DMA_CloseAudio(_THIS) { if (dma_buf != NULL) { - munmap (dma_buf, dma_len); + munmap(dma_buf, dma_len); dma_buf = NULL; } if (audio_fd >= 0) { - close (audio_fd); + close(audio_fd); audio_fd = -1; } } static int -DMA_ReopenAudio (_THIS, const char *audiodev, int format, int stereo, - SDL_AudioSpec * spec) +DMA_ReopenAudio(_THIS, const char *audiodev, int format, int stereo, + SDL_AudioSpec * spec) { int frag_spec; int value; /* Close and then reopen the audio device */ - close (audio_fd); - audio_fd = open (audiodev, O_RDWR, 0); + close(audio_fd); + audio_fd = open(audiodev, O_RDWR, 0); if (audio_fd < 0) { - SDL_SetError ("Couldn't open %s: %s", audiodev, strerror (errno)); + SDL_SetError("Couldn't open %s: %s", audiodev, strerror(errno)); return (-1); } /* Calculate the final parameters for this audio specification */ - SDL_CalculateAudioSpec (spec); + SDL_CalculateAudioSpec(spec); /* Determine the power of two of the fragment size */ for (frag_spec = 0; (0x01 << frag_spec) < spec->size; ++frag_spec); if ((0x01 << frag_spec) != spec->size) { - SDL_SetError ("Fragment size must be a power of two"); + SDL_SetError("Fragment size must be a power of two"); return (-1); } /* Set the audio buffering parameters */ - if (ioctl (audio_fd, SNDCTL_DSP_SETFRAGMENT, &frag_spec) < 0) { - SDL_SetError ("Couldn't set audio fragment spec"); + if (ioctl(audio_fd, SNDCTL_DSP_SETFRAGMENT, &frag_spec) < 0) { + SDL_SetError("Couldn't set audio fragment spec"); return (-1); } /* Set the audio format */ value = format; - if ((ioctl (audio_fd, SNDCTL_DSP_SETFMT, &value) < 0) || - (value != format)) { - SDL_SetError ("Couldn't set audio format"); + if ((ioctl(audio_fd, SNDCTL_DSP_SETFMT, &value) < 0) || (value != format)) { + SDL_SetError("Couldn't set audio format"); return (-1); } /* Set mono or stereo audio */ value = (spec->channels > 1); - if ((ioctl (audio_fd, SNDCTL_DSP_STEREO, &stereo) < 0) || + if ((ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo) < 0) || (value != stereo)) { - SDL_SetError ("Couldn't set audio channels"); + SDL_SetError("Couldn't set audio channels"); return (-1); } /* Set the DSP frequency */ value = spec->freq; - if (ioctl (audio_fd, SNDCTL_DSP_SPEED, &value) < 0) { - SDL_SetError ("Couldn't set audio frequency"); + if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &value) < 0) { + SDL_SetError("Couldn't set audio frequency"); return (-1); } spec->freq = value; @@ -316,7 +315,7 @@ } static int -DMA_OpenAudio (_THIS, SDL_AudioSpec * spec) +DMA_OpenAudio(_THIS, SDL_AudioSpec * spec) { char audiodev[1024]; int format; @@ -329,26 +328,26 @@ frame_ticks = 0.0; /* Open the audio device */ - audio_fd = SDL_OpenAudioPath (audiodev, sizeof (audiodev), OPEN_FLAGS, 0); + audio_fd = SDL_OpenAudioPath(audiodev, sizeof(audiodev), OPEN_FLAGS, 0); if (audio_fd < 0) { - SDL_SetError ("Couldn't open %s: %s", audiodev, strerror (errno)); + SDL_SetError("Couldn't open %s: %s", audiodev, strerror(errno)); return (-1); } dma_buf = NULL; - ioctl (audio_fd, SNDCTL_DSP_RESET, 0); + ioctl(audio_fd, SNDCTL_DSP_RESET, 0); /* Get a list of supported hardware formats */ - if (ioctl (audio_fd, SNDCTL_DSP_GETFMTS, &value) < 0) { - SDL_SetError ("Couldn't get audio format list"); + if (ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &value) < 0) { + SDL_SetError("Couldn't get audio format list"); return (-1); } /* Try for a closest match on audio format */ format = 0; - for (test_format = SDL_FirstAudioFormat (spec->format); + for (test_format = SDL_FirstAudioFormat(spec->format); !format && test_format;) { #ifdef DEBUG_AUDIO - fprintf (stderr, "Trying format 0x%4.4x\n", test_format); + fprintf(stderr, "Trying format 0x%4.4x\n", test_format); #endif switch (test_format) { case AUDIO_U8: @@ -386,26 +385,25 @@ break; } if (!format) { - test_format = SDL_NextAudioFormat (); + test_format = SDL_NextAudioFormat(); } } if (format == 0) { - SDL_SetError ("Couldn't find any hardware audio formats"); + SDL_SetError("Couldn't find any hardware audio formats"); return (-1); } spec->format = test_format; /* Set the audio format */ value = format; - if ((ioctl (audio_fd, SNDCTL_DSP_SETFMT, &value) < 0) || - (value != format)) { - SDL_SetError ("Couldn't set audio format"); + if ((ioctl(audio_fd, SNDCTL_DSP_SETFMT, &value) < 0) || (value != format)) { + SDL_SetError("Couldn't set audio format"); return (-1); } /* Set mono or stereo audio (currently only two channels supported) */ stereo = (spec->channels > 1); - ioctl (audio_fd, SNDCTL_DSP_STEREO, &stereo); + ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo); if (stereo) { spec->channels = 2; } else { @@ -416,14 +414,14 @@ after setting the format, we must re-open the audio device once we know what format and channels are supported */ - if (DMA_ReopenAudio (this, audiodev, format, stereo, spec) < 0) { + if (DMA_ReopenAudio(this, audiodev, format, stereo, spec) < 0) { /* Error is set by DMA_ReopenAudio() */ return (-1); } /* Memory map the audio buffer */ - if (ioctl (audio_fd, SNDCTL_DSP_GETOSPACE, &info) < 0) { - SDL_SetError ("Couldn't get OSPACE parameters"); + if (ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &info) < 0) { + SDL_SetError("Couldn't get OSPACE parameters"); return (-1); } spec->size = info.fragsize; @@ -431,36 +429,36 @@ spec->samples /= spec->channels; num_buffers = info.fragstotal; dma_len = num_buffers * spec->size; - dma_buf = (Uint8 *) mmap (NULL, dma_len, PROT_WRITE, MAP_SHARED, - audio_fd, 0); + dma_buf = (Uint8 *) mmap(NULL, dma_len, PROT_WRITE, MAP_SHARED, + audio_fd, 0); if (dma_buf == MAP_FAILED) { - SDL_SetError ("DMA memory map failed"); + SDL_SetError("DMA memory map failed"); dma_buf = NULL; return (-1); } - SDL_memset (dma_buf, spec->silence, dma_len); + SDL_memset(dma_buf, spec->silence, dma_len); /* Check to see if we need to use select() workaround */ { char *workaround; - workaround = SDL_getenv ("SDL_DSP_NOSELECT"); + workaround = SDL_getenv("SDL_DSP_NOSELECT"); if (workaround) { frame_ticks = (float) (spec->samples * 1000) / spec->freq; - next_frame = SDL_GetTicks () + frame_ticks; + next_frame = SDL_GetTicks() + frame_ticks; } } /* Trigger audio playback */ value = 0; - ioctl (audio_fd, SNDCTL_DSP_SETTRIGGER, &value); + ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &value); value = PCM_ENABLE_OUTPUT; - if (ioctl (audio_fd, SNDCTL_DSP_SETTRIGGER, &value) < 0) { - SDL_SetError ("Couldn't trigger audio output"); + if (ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &value) < 0) { + SDL_SetError("Couldn't trigger audio output"); return (-1); } /* Get the parent process id (we're the parent of the audio thread) */ - parent = getpid (); + parent = getpid(); /* We're ready to rock and roll. :-) */ return (0);