diff src/audio/mme/SDL_mmeaudio.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 d910939febfa
children b3741f227757
line wrap: on
line diff
--- a/src/audio/mme/SDL_mmeaudio.c	Thu Jul 06 18:01:37 2006 +0000
+++ b/src/audio/mme/SDL_mmeaudio.c	Mon Jul 10 21:04:37 2006 +0000
@@ -32,7 +32,7 @@
 static BOOL inUse[NUM_BUFFERS];
 
 /* Audio driver functions */
-static int MME_OpenAudio(_THIS, SDL_AudioSpec *spec);
+static int MME_OpenAudio(_THIS, SDL_AudioSpec * spec);
 static void MME_WaitAudio(_THIS);
 static Uint8 *MME_GetAudioBuf(_THIS);
 static void MME_PlayAudio(_THIS);
@@ -40,49 +40,52 @@
 static void MME_CloseAudio(_THIS);
 
 /* Audio driver bootstrap functions */
-static int Audio_Available(void)
+static int
+Audio_Available(void)
 {
-    return(1);
+    return (1);
 }
 
-static void Audio_DeleteDevice(SDL_AudioDevice *device)
+static void
+Audio_DeleteDevice(SDL_AudioDevice * device)
 {
-    if ( device ) {
-	if ( device->hidden ) {
-	    SDL_free(device->hidden);
-	    device->hidden = NULL;
-	}
-	SDL_free(device);
-	device = NULL;
+    if (device) {
+        if (device->hidden) {
+            SDL_free(device->hidden);
+            device->hidden = NULL;
+        }
+        SDL_free(device);
+        device = NULL;
     }
 }
 
-static SDL_AudioDevice *Audio_CreateDevice(int devindex)
+static SDL_AudioDevice *
+Audio_CreateDevice(int devindex)
 {
     SDL_AudioDevice *this;
 
 /* Initialize all variables that we clean on shutdown */
     this = SDL_malloc(sizeof(SDL_AudioDevice));
-    if ( this ) {
-	SDL_memset(this, 0, (sizeof *this));
-	this->hidden = SDL_malloc((sizeof *this->hidden));
+    if (this) {
+        SDL_memset(this, 0, (sizeof *this));
+        this->hidden = SDL_malloc((sizeof *this->hidden));
     }
-    if ( (this == NULL) || (this->hidden == NULL) ) {
-	SDL_OutOfMemory();
-	if ( this ) {
-	    SDL_free(this);
-	}
-	return(0);
+    if ((this == NULL) || (this->hidden == NULL)) {
+        SDL_OutOfMemory();
+        if (this) {
+            SDL_free(this);
+        }
+        return (0);
     }
     SDL_memset(this->hidden, 0, (sizeof *this->hidden));
     /* Set the function pointers */
-    this->OpenAudio       =       MME_OpenAudio;
-    this->WaitAudio       =       MME_WaitAudio;
-    this->PlayAudio       =       MME_PlayAudio;
-    this->GetAudioBuf     =     MME_GetAudioBuf;
-    this->WaitDone        =        MME_WaitDone;
-    this->CloseAudio      =      MME_CloseAudio;
-    this->free            =  Audio_DeleteDevice;
+    this->OpenAudio = MME_OpenAudio;
+    this->WaitAudio = MME_WaitAudio;
+    this->PlayAudio = MME_PlayAudio;
+    this->GetAudioBuf = MME_GetAudioBuf;
+    this->WaitDone = MME_WaitDone;
+    this->CloseAudio = MME_CloseAudio;
+    this->free = Audio_DeleteDevice;
 
     return this;
 }
@@ -92,30 +95,30 @@
     Audio_Available, Audio_CreateDevice
 };
 
-static void SetMMerror(char *function, MMRESULT code)
+static void
+SetMMerror(char *function, MMRESULT code)
 {
     int len;
     char errbuf[MAXERRORLENGTH];
 
     SDL_snprintf(errbuf, SDL_arraysize(errbuf), "%s: ", function);
     len = SDL_strlen(errbuf);
-    waveOutGetErrorText(code, errbuf+len, MAXERRORLENGTH-len);
-    SDL_SetError("%s",errbuf);
+    waveOutGetErrorText(code, errbuf + len, MAXERRORLENGTH - len);
+    SDL_SetError("%s", errbuf);
 }
 
-static void CALLBACK MME_CALLBACK(HWAVEOUT hwo,
-				  UINT uMsg,
-				  DWORD dwInstance,
-				  LPARAM dwParam1,
-				  LPARAM dwParam2)
+static void CALLBACK
+MME_CALLBACK(HWAVEOUT hwo,
+             UINT uMsg, DWORD dwInstance, LPARAM dwParam1, LPARAM dwParam2)
 {
     WAVEHDR *wp = (WAVEHDR *) dwParam1;
 
-    if ( uMsg == WOM_DONE )
-	inUse[wp->dwUser] = FALSE;
+    if (uMsg == WOM_DONE)
+        inUse[wp->dwUser] = FALSE;
 }
 
-static int MME_OpenAudio(_THIS, SDL_AudioSpec *spec)
+static int
+MME_OpenAudio(_THIS, SDL_AudioSpec * spec)
 {
     MMRESULT result;
     int i;
@@ -124,141 +127,146 @@
 
     /* Set basic WAVE format parameters */
     shm = mmeAllocMem(sizeof(*shm));
-    if ( shm == NULL ) {
-	SDL_SetError("Out of memory: shm");
-	return(-1);
+    if (shm == NULL) {
+        SDL_SetError("Out of memory: shm");
+        return (-1);
     }
     shm->sound = 0;
     shm->wFmt.wf.wFormatTag = WAVE_FORMAT_PCM;
 
     /* Determine the audio parameters from the AudioSpec */
-    switch ( spec->format & 0xFF ) {
-	case 8:
-	    /* Unsigned 8 bit audio data */
-	    spec->format = AUDIO_U8;
-	    shm->wFmt.wBitsPerSample = 8;
-	    break;
-	case 16:
-	    /* Signed 16 bit audio data */
-	    spec->format = AUDIO_S16;
-	    shm->wFmt.wBitsPerSample = 16;
-	    break;
-	    default:
-	    SDL_SetError("Unsupported audio format");
-	    return(-1);
+    switch (spec->format & 0xFF) {
+    case 8:
+        /* Unsigned 8 bit audio data */
+        spec->format = AUDIO_U8;
+        shm->wFmt.wBitsPerSample = 8;
+        break;
+    case 16:
+        /* Signed 16 bit audio data */
+        spec->format = AUDIO_S16;
+        shm->wFmt.wBitsPerSample = 16;
+        break;
+    default:
+        SDL_SetError("Unsupported audio format");
+        return (-1);
     }
 
     shm->wFmt.wf.nChannels = spec->channels;
     shm->wFmt.wf.nSamplesPerSec = spec->freq;
     shm->wFmt.wf.nBlockAlign =
-	shm->wFmt.wf.nChannels * shm->wFmt.wBitsPerSample / 8;
+        shm->wFmt.wf.nChannels * shm->wFmt.wBitsPerSample / 8;
     shm->wFmt.wf.nAvgBytesPerSec =
-	shm->wFmt.wf.nSamplesPerSec * shm->wFmt.wf.nBlockAlign;
+        shm->wFmt.wf.nSamplesPerSec * shm->wFmt.wf.nBlockAlign;
 
     /* Check the buffer size -- minimum of 1/4 second (word aligned) */
-    if ( spec->samples < (spec->freq/4) )
-	spec->samples = ((spec->freq/4)+3)&~3;
+    if (spec->samples < (spec->freq / 4))
+        spec->samples = ((spec->freq / 4) + 3) & ~3;
 
     /* Update the fragment size as size in bytes */
     SDL_CalculateAudioSpec(spec);
 
     /* Open the audio device */
     result = waveOutOpen(&(shm->sound),
-			 WAVE_MAPPER,
-			 &(shm->wFmt.wf),
-			 MME_CALLBACK,
-			 NULL,
-			 (CALLBACK_FUNCTION|WAVE_OPEN_SHAREABLE));
-    if ( result != MMSYSERR_NOERROR ) {
-	    SetMMerror("waveOutOpen()", result);
-	    return(-1);
+                         WAVE_MAPPER,
+                         &(shm->wFmt.wf),
+                         MME_CALLBACK,
+                         NULL, (CALLBACK_FUNCTION | WAVE_OPEN_SHAREABLE));
+    if (result != MMSYSERR_NOERROR) {
+        SetMMerror("waveOutOpen()", result);
+        return (-1);
     }
 
     /* Create the sound buffers */
-    mixbuf = (Uint8 *)mmeAllocBuffer(NUM_BUFFERS * (spec->size));
-    if ( mixbuf == NULL ) {
-	SDL_SetError("Out of memory: mixbuf");
-	return(-1);
+    mixbuf = (Uint8 *) mmeAllocBuffer(NUM_BUFFERS * (spec->size));
+    if (mixbuf == NULL) {
+        SDL_SetError("Out of memory: mixbuf");
+        return (-1);
     }
 
     for (i = 0; i < NUM_BUFFERS; i++) {
-	shm->wHdr[i].lpData         = &mixbuf[i * (spec->size)];
-	shm->wHdr[i].dwBufferLength = spec->size;
-	shm->wHdr[i].dwFlags        = 0;
-	shm->wHdr[i].dwUser         = i;
-	shm->wHdr[i].dwLoops        = 0;       /* loop control counter */
-	shm->wHdr[i].lpNext         = NULL;    /* reserved for driver */
-	shm->wHdr[i].reserved       = 0;
-	inUse[i] = FALSE;
+        shm->wHdr[i].lpData = &mixbuf[i * (spec->size)];
+        shm->wHdr[i].dwBufferLength = spec->size;
+        shm->wHdr[i].dwFlags = 0;
+        shm->wHdr[i].dwUser = i;
+        shm->wHdr[i].dwLoops = 0;       /* loop control counter */
+        shm->wHdr[i].lpNext = NULL;     /* reserved for driver */
+        shm->wHdr[i].reserved = 0;
+        inUse[i] = FALSE;
     }
     next_buffer = 0;
     return 0;
 }
 
-static void MME_WaitAudio(_THIS)
+static void
+MME_WaitAudio(_THIS)
 {
-    while ( inUse[next_buffer] ) {
-	mmeWaitForCallbacks();
-	mmeProcessCallbacks();
+    while (inUse[next_buffer]) {
+        mmeWaitForCallbacks();
+        mmeProcessCallbacks();
     }
 }
 
-static Uint8 *MME_GetAudioBuf(_THIS)
+static Uint8 *
+MME_GetAudioBuf(_THIS)
 {
     Uint8 *retval;
 
     inUse[next_buffer] = TRUE;
-    retval = (Uint8 *)(shm->wHdr[next_buffer].lpData);
+    retval = (Uint8 *) (shm->wHdr[next_buffer].lpData);
     return retval;
 }
 
-static void MME_PlayAudio(_THIS)
+static void
+MME_PlayAudio(_THIS)
 {
     /* Queue it up */
     waveOutWrite(shm->sound, &(shm->wHdr[next_buffer]), sizeof(WAVEHDR));
-    next_buffer = (next_buffer+1)%NUM_BUFFERS;
+    next_buffer = (next_buffer + 1) % NUM_BUFFERS;
 }
 
-static void MME_WaitDone(_THIS)
+static void
+MME_WaitDone(_THIS)
 {
     MMRESULT result;
     int i;
 
-    if ( shm->sound ) {
-	for (i = 0; i < NUM_BUFFERS; i++)
-	    while ( inUse[i] ) {
-		mmeWaitForCallbacks();
-		mmeProcessCallbacks();
-	    }
-	result = waveOutReset(shm->sound);
-	if ( result != MMSYSERR_NOERROR )
-	    SetMMerror("waveOutReset()", result);
-	mmeProcessCallbacks();
+    if (shm->sound) {
+        for (i = 0; i < NUM_BUFFERS; i++)
+            while (inUse[i]) {
+                mmeWaitForCallbacks();
+                mmeProcessCallbacks();
+            }
+        result = waveOutReset(shm->sound);
+        if (result != MMSYSERR_NOERROR)
+            SetMMerror("waveOutReset()", result);
+        mmeProcessCallbacks();
     }
 }
 
-static void MME_CloseAudio(_THIS)
+static void
+MME_CloseAudio(_THIS)
 {
     MMRESULT result;
 
-    if ( mixbuf ) {
-	result = mmeFreeBuffer(mixbuf);
-	if (result != MMSYSERR_NOERROR )
-	    SetMMerror("mmeFreeBuffer", result);
-	mixbuf = NULL;
+    if (mixbuf) {
+        result = mmeFreeBuffer(mixbuf);
+        if (result != MMSYSERR_NOERROR)
+            SetMMerror("mmeFreeBuffer", result);
+        mixbuf = NULL;
     }
 
-    if ( shm ) {
-	if ( shm->sound ) {
-	    result = waveOutClose(shm->sound);
-	    if (result != MMSYSERR_NOERROR )
-		SetMMerror("waveOutClose()", result);
-	    mmeProcessCallbacks();
-	}
-	result = mmeFreeMem(shm);
-	if (result != MMSYSERR_NOERROR )
-	    SetMMerror("mmeFreeMem()", result);
-	shm = NULL;
+    if (shm) {
+        if (shm->sound) {
+            result = waveOutClose(shm->sound);
+            if (result != MMSYSERR_NOERROR)
+                SetMMerror("waveOutClose()", result);
+            mmeProcessCallbacks();
+        }
+        result = mmeFreeMem(shm);
+        if (result != MMSYSERR_NOERROR)
+            SetMMerror("mmeFreeMem()", result);
+        shm = NULL;
     }
 }
 
+/* vi: set ts=4 sw=4 expandtab: */