diff include/SDL_audio.h @ 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 c71e05b4dc2e
children 071b6598d48f
line wrap: on
line diff
--- a/include/SDL_audio.h	Thu Jul 06 18:01:37 2006 +0000
+++ b/include/SDL_audio.h	Mon Jul 10 21:04:37 2006 +0000
@@ -20,7 +20,11 @@
     slouken@libsdl.org
 */
 
-/* Access to the raw audio mixing buffer for the SDL library */
+/**
+ * \file SDL_audio.h
+ *
+ * Access to the raw audio mixing buffer for the SDL library
+ */
 
 #ifndef _SDL_audio_h
 #define _SDL_audio_h
@@ -35,35 +39,38 @@
 #include "begin_code.h"
 /* Set up for C function definitions, even when using C++ */
 #ifdef __cplusplus
+/* *INDENT-OFF* */
 extern "C" {
+/* *INDENT-ON* */
 #endif
 
 /* The calculated values in this structure are calculated by SDL_OpenAudio() */
-typedef struct SDL_AudioSpec {
-	int freq;		/* DSP frequency -- samples per second */
-	Uint16 format;		/* Audio data format */
-	Uint8  channels;	/* Number of channels: 1 mono, 2 stereo */
-	Uint8  silence;		/* Audio buffer silence value (calculated) */
-	Uint16 samples;		/* Audio buffer size in samples (power of 2) */
-	Uint16 padding;		/* Necessary for some compile environments */
-	Uint32 size;		/* Audio buffer size in bytes (calculated) */
-	/* This function is called when the audio device needs more data.
-	   'stream' is a pointer to the audio data buffer
-	   'len' is the length of that buffer in bytes.
-	   Once the callback returns, the buffer will no longer be valid.
-	   Stereo samples are stored in a LRLRLR ordering.
-	*/
-	void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len);
-	void  *userdata;
+typedef struct SDL_AudioSpec
+{
+    int freq;                   /* DSP frequency -- samples per second */
+    Uint16 format;              /* Audio data format */
+    Uint8 channels;             /* Number of channels: 1 mono, 2 stereo */
+    Uint8 silence;              /* Audio buffer silence value (calculated) */
+    Uint16 samples;             /* Audio buffer size in samples (power of 2) */
+    Uint16 padding;             /* Necessary for some compile environments */
+    Uint32 size;                /* Audio buffer size in bytes (calculated) */
+    /* This function is called when the audio device needs more data.
+       'stream' is a pointer to the audio data buffer
+       'len' is the length of that buffer in bytes.
+       Once the callback returns, the buffer will no longer be valid.
+       Stereo samples are stored in a LRLRLR ordering.
+     */
+    void (SDLCALL * callback) (void *userdata, Uint8 * stream, int len);
+    void *userdata;
 } SDL_AudioSpec;
 
 /* Audio format flags (defaults to LSB byte order) */
-#define AUDIO_U8	0x0008	/* Unsigned 8-bit samples */
-#define AUDIO_S8	0x8008	/* Signed 8-bit samples */
-#define AUDIO_U16LSB	0x0010	/* Unsigned 16-bit samples */
-#define AUDIO_S16LSB	0x8010	/* Signed 16-bit samples */
-#define AUDIO_U16MSB	0x1010	/* As above, but big-endian byte order */
-#define AUDIO_S16MSB	0x9010	/* As above, but big-endian byte order */
+#define AUDIO_U8	0x0008  /* Unsigned 8-bit samples */
+#define AUDIO_S8	0x8008  /* Signed 8-bit samples */
+#define AUDIO_U16LSB	0x0010  /* Unsigned 16-bit samples */
+#define AUDIO_S16LSB	0x8010  /* Signed 16-bit samples */
+#define AUDIO_U16MSB	0x1010  /* As above, but big-endian byte order */
+#define AUDIO_S16MSB	0x9010  /* As above, but big-endian byte order */
 #define AUDIO_U16	AUDIO_U16LSB
 #define AUDIO_S16	AUDIO_S16LSB
 
@@ -78,23 +85,30 @@
 
 
 /* A structure to hold a set of audio conversion filters and buffers */
-typedef struct SDL_AudioCVT {
-	int needed;			/* Set to 1 if conversion possible */
-	Uint16 src_format;		/* Source audio format */
-	Uint16 dst_format;		/* Target audio format */
-	double rate_incr;		/* Rate conversion increment */
-	Uint8 *buf;			/* Buffer to hold entire audio data */
-	int    len;			/* Length of original audio buffer */
-	int    len_cvt;			/* Length of converted audio buffer */
-	int    len_mult;		/* buffer must be len*len_mult big */
-	double len_ratio; 	/* Given len, final size is len*len_ratio */
-	void (SDLCALL *filters[10])(struct SDL_AudioCVT *cvt, Uint16 format);
-	int filter_index;		/* Current audio conversion function */
+typedef struct SDL_AudioCVT
+{
+    int needed;                 /* Set to 1 if conversion possible */
+    Uint16 src_format;          /* Source audio format */
+    Uint16 dst_format;          /* Target audio format */
+    double rate_incr;           /* Rate conversion increment */
+    Uint8 *buf;                 /* Buffer to hold entire audio data */
+    int len;                    /* Length of original audio buffer */
+    int len_cvt;                /* Length of converted audio buffer */
+    int len_mult;               /* buffer must be len*len_mult big */
+    double len_ratio;           /* Given len, final size is len*len_ratio */
+    void (SDLCALL * filters[10]) (struct SDL_AudioCVT * cvt, Uint16 format);
+    int filter_index;           /* Current audio conversion function */
 } SDL_AudioCVT;
 
 
 /* Function prototypes */
 
+/* These functions return the list of built in video drivers, in the 
+ * order that they are normally initialized by default.
+ */
+extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
+extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
+
 /* These functions are used internally, and should not be used unless you
  * have a specific need to specify the audio driver you want to use.
  * You should normally use SDL_Init() or SDL_InitSubSystem().
@@ -102,11 +116,10 @@
 extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
 extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
 
-/* This function fills the given character buffer with the name of the
- * current audio driver, and returns a pointer to it if the audio driver has
- * been initialized.  It returns NULL if no driver has been initialized.
+/* This function returns the name of the current audio driver, or NULL
+ * if no driver has been initialized.
  */
-extern DECLSPEC char * SDLCALL SDL_AudioDriverName(char *namebuf, int maxlen);
+extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
 
 /*
  * This function opens the audio device with the desired parameters, and
@@ -149,15 +162,17 @@
  * may modify the requested size of the audio buffer, you should allocate
  * any local mixing buffers after you open the audio device.
  */
-extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained);
+extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
+                                          SDL_AudioSpec * obtained);
 
 /*
  * Get the current audio state:
  */
-typedef enum {
-	SDL_AUDIO_STOPPED = 0,
-	SDL_AUDIO_PLAYING,
-	SDL_AUDIO_PAUSED
+typedef enum
+{
+    SDL_AUDIO_STOPPED = 0,
+    SDL_AUDIO_PLAYING,
+    SDL_AUDIO_PAUSED
 } SDL_audiostatus;
 extern DECLSPEC SDL_audiostatus SDLCALL SDL_GetAudioStatus(void);
 
@@ -187,7 +202,11 @@
  * wave file cannot be opened, uses an unknown data format, or is 
  * corrupt.  Currently raw and MS-ADPCM WAVE files are supported.
  */
-extern DECLSPEC SDL_AudioSpec * SDLCALL SDL_LoadWAV_RW(SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len);
+extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
+                                                      int freesrc,
+                                                      SDL_AudioSpec * spec,
+                                                      Uint8 ** audio_buf,
+                                                      Uint32 * audio_len);
 
 /* Compatibility convenience function -- loads a WAV from a file */
 #define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
@@ -196,7 +215,7 @@
 /*
  * This function frees data previously allocated with SDL_LoadWAV_RW()
  */
-extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 *audio_buf);
+extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
 
 /*
  * This function takes a source format and rate and a destination format
@@ -205,9 +224,13 @@
  * to the other.
  * This function returns 0, or -1 if there was an error.
  */
-extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT *cvt,
-		Uint16 src_format, Uint8 src_channels, int src_rate,
-		Uint16 dst_format, Uint8 dst_channels, int dst_rate);
+extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
+                                              Uint16 src_format,
+                                              Uint8 src_channels,
+                                              int src_rate,
+                                              Uint16 dst_format,
+                                              Uint8 dst_channels,
+                                              int dst_rate);
 
 /* Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(),
  * created an audio buffer cvt->buf, and filled it with cvt->len bytes of
@@ -217,7 +240,7 @@
  * cvt->buf should be allocated after the cvt structure is initialized by
  * SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long.
  */
-extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT *cvt);
+extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
 
 /*
  * This takes two audio buffers of the playing audio format and mixes
@@ -227,7 +250,8 @@
  * This is provided for convenience -- you can mix your own audio data.
  */
 #define SDL_MIX_MAXVOLUME 128
-extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume);
+extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
+                                          Uint32 len, int volume);
 
 /*
  * The lock manipulated by these functions protects the callback function.
@@ -246,8 +270,12 @@
 
 /* Ends C function definitions when using C++ */
 #ifdef __cplusplus
+/* *INDENT-OFF* */
 }
+/* *INDENT-ON* */
 #endif
 #include "close_code.h"
 
 #endif /* _SDL_audio_h */
+
+/* vi: set ts=4 sw=4 expandtab: */