r402 - in trunk: . code/AL code/client code/unix

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Dec 1 15:53:29 EST 2005


Author: tma
Date: 2005-12-01 15:53:28 -0500 (Thu, 01 Dec 2005)
New Revision: 402

Added:
   trunk/code/AL/VERSION
Removed:
   trunk/code/AL/alu.h
   trunk/code/AL/aluttypes.h
   trunk/code/AL/alutypes.h
Modified:
   trunk/README
   trunk/code/AL/al.h
   trunk/code/AL/alc.h
   trunk/code/AL/alctypes.h
   trunk/code/AL/altypes.h
   trunk/code/AL/alut.h
   trunk/code/client/qal.h
   trunk/code/unix/Makefile
Log:
* Updated AL headers
* Added a Makefile option USE_LOCAL_HEADERS which can be disabled to use system
  headers if desired


Modified: trunk/README
===================================================================
--- trunk/README	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/README	2005-12-01 20:53:28 UTC (rev 402)
@@ -1,8 +1,8 @@
 Name of this project: icculus.org/quake3
 URL: http://www.icculus.org/quake3
 Hello and welcome to the Quake 3 source repository on icculus.org
-I'll be your maintainer, zakk at icculus.org, please send all your patches to 
-the bugzilla: https://bugzilla.icculus.org, or join the mailing list 
+I'll be your maintainer, zakk at icculus.org, please send all your patches to
+the bugzilla: https://bugzilla.icculus.org, or join the mailing list
 (quake3-subscribe at icculus.org) and submit your patch there.
 Best case scenario is you subscribe to the ml, submit your patch to
 bugzilla, and then post the url to the mailing list.
@@ -40,10 +40,11 @@
 2. Run 'make'
 
 For distribution maintainers, you can set some make variables:
- OPTIMIZE        - use this for custom CFLAGS
- DEFAULT_BASEDIR - extra path to search for baseq3 and such
- BUILD_SERVER    - build the 'q3ded' server binary (1 = build it, default = 1)
- BUILD_CLIENT    - build the 'quake3' client binary (1 = build it, default = 1)
+ OPTIMIZE          - use this for custom CFLAGS
+ DEFAULT_BASEDIR   - extra path to search for baseq3 and such
+ BUILD_SERVER      - build the 'q3ded' server binary (1 = build it, default = 1)
+ BUILD_CLIENT      - build the 'quake3' client binary (1 = build it, default = 1)
+ USE_LOCAL_HEADERS - use system headers instead of ones local to ioq3
 
 Installing under Linux
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -109,14 +110,11 @@
 
 4. If you didn't install the DirectX SDK in C:\DXSDK\, add DXSDK_DIR to
    code/unix/Makefile.local to reflect the new location.
-5. If you want OpenAL support, aquire some OpenAL headers and put them in
-   /include/AL/ beneath your MinGW dir. If not, add "USE_OPENAL=0" to
-   code/unix/Makefile.local.
-6. Perform the usual precompilation sacrificial ritual.
-7. Open an MSys terminal, and follow the instructions for compiling on Linux.
-8. Steal underpants
-9. ?????
-10. Profit!
+5. Perform the usual precompilation sacrificial ritual.
+6. Open an MSys terminal, and follow the instructions for compiling on Linux.
+7. Steal underpants
+8. ?????
+9. Profit!
 
 Creating mods compatible with Q3 1.32b
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Added: trunk/code/AL/VERSION
===================================================================
--- trunk/code/AL/VERSION	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/VERSION	2005-12-01 20:53:28 UTC (rev 402)
@@ -0,0 +1,16 @@
+This file identifies the version of the AL headers in this directory. If you
+change or update the AL headers in any way, please make sure you also update
+this file.
+
+SVN revision >= 402
+-------------------
+Headers are from OpenAL CVS 6th August 2005:
+$ cvs -d:pserver:guest at opensource.creative.com:/usr/local/cvs-repository
+login
+(use password "guest")
+$ cvs -d:pserver:guest at opensource.creative.com:/usr/local/cvs-repository
+co -D "6 Aug 2005" openal
+
+SVN revision >= 374
+-------------------
+Standard OpenAL 1.0 headers

Modified: trunk/code/AL/al.h
===================================================================
--- trunk/code/AL/al.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/al.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -26,17 +26,24 @@
 extern "C" {
 #endif
 
+/* WIN32, not Xbox */
 #ifdef _WIN32
-#define ALAPI       __declspec(dllexport)
-#define ALAPIENTRY  __cdecl
+#ifndef _XBOX
+#ifdef _OPENAL32LIB
+#define ALAPI __declspec(dllexport)
+#else
+#define ALAPI __declspec(dllimport)
+#endif
+#define ALAPIENTRY __cdecl
 #define AL_CALLBACK 
-#else /* _WIN32 */
+#endif
+#endif
 
 #ifdef TARGET_OS_MAC
 #if TARGET_OS_MAC
 #pragma export on
-#endif /* TARGET_OS_MAC */
-#endif /* TARGET_OS_MAC */
+#endif
+#endif
 
 #ifndef ALAPI
 #define ALAPI
@@ -50,527 +57,438 @@
 #define AL_CALLBACK 
 #endif
 
-#endif /* _WIN32 */
+#define OPENAL
 
 #ifndef AL_NO_PROTOTYPES
 
-/**
- * OpenAL Maintenance Functions
- * State Management and Query.
- * Error Handling.
- * Extension Support.
+/*
+ * Renderer State management
  */
-
-
-/** Renderer State management. */
 ALAPI void ALAPIENTRY alEnable( ALenum capability );
 
 ALAPI void ALAPIENTRY alDisable( ALenum capability ); 
 
 ALAPI ALboolean ALAPIENTRY alIsEnabled( ALenum capability ); 
 
-/** Application preferences for driver performance choices. */
-ALAPI void ALAPIENTRY alHint( ALenum target, ALenum mode );
 
-/** State retrieval. */
+/*
+ * State retrieval
+ */
+ALAPI const ALchar* ALAPIENTRY alGetString( ALenum param );
+
 ALAPI void ALAPIENTRY alGetBooleanv( ALenum param, ALboolean* data );
 
-/** State retrieval. */
 ALAPI void ALAPIENTRY alGetIntegerv( ALenum param, ALint* data );
 
-/** State retrieval. */
 ALAPI void ALAPIENTRY alGetFloatv( ALenum param, ALfloat* data );
 
-/** State retrieval. */
 ALAPI void ALAPIENTRY alGetDoublev( ALenum param, ALdouble* data );
 
-/** State retrieval. */
-ALAPI const ALubyte* ALAPIENTRY alGetString( ALenum param );
-
-
-/** State retrieval.through return value ( for compatibility ) */
 ALAPI ALboolean ALAPIENTRY alGetBoolean( ALenum param );
+
 ALAPI ALint ALAPIENTRY alGetInteger( ALenum param );
+
 ALAPI ALfloat ALAPIENTRY alGetFloat( ALenum param );
+
 ALAPI ALdouble ALAPIENTRY alGetDouble( ALenum param );
 
-/**
+
+/*
  * Error support.
  * Obtain the most recent error generated in the AL state machine.
  */
 ALAPI ALenum ALAPIENTRY alGetError( ALvoid );
 
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALboolean ALAPIENTRY alIsExtensionPresent( const ALubyte* fname );
 
-
-/** 
+/* 
  * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
+ * Query for the presence of an extension, and obtain any appropriate
+ * function pointers and enum values.
  */
-ALAPI void* ALAPIENTRY alGetProcAddress( const ALubyte* fname );
+ALAPI ALboolean ALAPIENTRY alIsExtensionPresent( const ALchar* extname );
 
+ALAPI void* ALAPIENTRY alGetProcAddress( const ALchar* fname );
 
-/**
- * Extension support.
- * Obtain the integer value of an enumeration (usually an extension) with the name ename. 
- */
-ALAPI ALenum ALAPIENTRY alGetEnumValue( const ALubyte* ename );
+ALAPI ALenum ALAPIENTRY alGetEnumValue( const ALchar* ename );
 
 
+/*
+ * LISTENER
+ * Listener represents the location and orientation of the
+ * 'user' in 3D-space.
+ *
+ * Properties include: -
+ *
+ * Gain         AL_GAIN         ALfloat
+ * Position     AL_POSITION     ALfloat[3]
+ * Velocity     AL_VELOCITY     ALfloat[3]
+ * Orientation  AL_ORIENTATION  ALfloat[6] (Forward then Up vectors)
+*/
 
+/*
+ * Set Listener parameters
+ */
+ALAPI void ALAPIENTRY alListenerf( ALenum param, ALfloat value );
 
+ALAPI void ALAPIENTRY alListener3f( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
 
+ALAPI void ALAPIENTRY alListenerfv( ALenum param, const ALfloat* values ); 
 
-/**
- * LISTENER
- * Listener is the sample position for a given context.
- * The multi-channel (usually stereo) output stream generated
- *  by the mixer is parametrized by this Listener object:
- *  its position and velocity relative to Sources, within
- *  occluder and reflector geometry.
- */
+ALAPI void ALAPIENTRY alListeneri( ALenum param, ALint value );
 
+ALAPI void ALAPIENTRY alListener3i( ALenum param, ALint value1, ALint value2, ALint value3 );
 
+ALAPI void ALAPIENTRY alListeneriv( ALenum param, const ALint* values );
 
-/**
- *
- * Listener Gain:  default 1.0f.
+/*
+ * Get Listener parameters
  */
-ALAPI void ALAPIENTRY alListenerf( ALenum pname, ALfloat param );
+ALAPI void ALAPIENTRY alGetListenerf( ALenum param, ALfloat* value );
 
-ALAPI void ALAPIENTRY alListeneri( ALenum pname, ALint param );
+ALAPI void ALAPIENTRY alGetListener3f( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
 
-/**
- *
- * Listener Position:        ALfloat[3]
- * Listener Velocity:        ALfloat[3]
- */
-ALAPI void ALAPIENTRY alListener3f( ALenum pname,
-				    ALfloat f1, ALfloat f2, ALfloat f3 ); 
+ALAPI void ALAPIENTRY alGetListenerfv( ALenum param, ALfloat* values );
 
-/**
- *
- * Listener Position:        ALfloat[3]
- * Listener Velocity:        ALfloat[3]
- * Listener Orientation:     ALfloat[6]  (forward and up vector).
- */
-ALAPI void ALAPIENTRY alListenerfv( ALenum pname, ALfloat* param ); 
+ALAPI void ALAPIENTRY alGetListeneri( ALenum param, ALint* value );
 
-/*
- * Retrieve listener information.
- */
-ALAPI void ALAPIENTRY alGetListeneri( ALenum pname, ALint* value );
-ALAPI void ALAPIENTRY alGetListenerf( ALenum pname, ALfloat* value );
+ALAPI void ALAPIENTRY alGetListener3i( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
 
-ALAPI void ALAPIENTRY alGetListeneriv( ALenum pname, ALint* value );
-ALAPI void ALAPIENTRY alGetListenerfv( ALenum pname, ALfloat* values );
+ALAPI void ALAPIENTRY alGetListeneriv( ALenum param, ALint* values );
 
-ALAPI void ALAPIENTRY alGetListener3f( ALenum pname,
-				       ALfloat *f1, ALfloat *f2, ALfloat *f3 ); 
 
 /**
  * SOURCE
- * Source objects are by default localized. Sources
- *  take the PCM data provided in the specified Buffer,
- *  apply Source-specific modifications, and then
- *  submit them to be mixed according to spatial 
- *  arrangement etc.
+ * Sources represent individual sound objects in 3D-space.
+ * Sources take the PCM data provided in the specified Buffer,
+ * apply Source-specific modifications, and then
+ * submit them to be mixed according to spatial arrangement etc.
+ * 
+ * Properties include: -
+ *
+ * Gain                              AL_GAIN                 ALfloat
+ * Min Gain                          AL_MIN_GAIN             ALfloat
+ * Max Gain                          AL_MAX_GAIN             ALfloat
+ * Position                          AL_POSITION             ALfloat[3]
+ * Velocity                          AL_VELOCITY             ALfloat[3]
+ * Direction                         AL_DIRECTION            ALfloat[3]
+ * Head Relative Mode                AL_SOURCE_RELATIVE      ALint (AL_TRUE or AL_FALSE)
+ * Reference Distance                AL_REFERENCE_DISTANCE   ALfloat
+ * Max Distance                      AL_MAX_DISTANCE         ALfloat
+ * RollOff Factor                    AL_ROLLOFF_FACTOR       ALfloat
+ * Inner Angle                       AL_CONE_INNER_ANGLE     ALint or ALfloat
+ * Outer Angle                       AL_CONE_OUTER_ANGLE     ALint or ALfloat
+ * Cone Outer Gain                   AL_CONE_OUTER_GAIN      ALint or ALfloat
+ * Pitch                             AL_PITCH                ALfloat
+ * Looping                           AL_LOOPING			     ALint (AL_TRUE or AL_FALSE)
+ * MS Offset                         AL_MSEC_OFFSET          ALint or ALfloat
+ * Byte Offset                       AL_BYTE_OFFSET          ALint or ALfloat
+ * Sample Offset                     AL_SAMPLE_OFFSET        ALint or ALfloat
+ * Attached Buffer                   AL_BUFFER               ALint
+ * State (Query only)                AL_SOURCE_STATE         ALint
+ * Buffers Queued (Query only)       AL_BUFFERS_QUEUED       ALint
+ * Buffers Processed (Query only)    AL_BUFFERS_PROCESSED    ALint
  */
 
-
-
-/** Create Source objects. */
+/* Create Source objects */
 ALAPI void ALAPIENTRY alGenSources( ALsizei n, ALuint* sources ); 
 
-/** Delete Source objects. */
-ALAPI void ALAPIENTRY alDeleteSources( ALsizei n, ALuint* sources );
+/* Delete Source objects */
+ALAPI void ALAPIENTRY alDeleteSources( ALsizei n, const ALuint* sources );
 
-/** Verify a handle is a valid Source. */ 
+/* Verify a handle is a valid Source */ 
 ALAPI ALboolean ALAPIENTRY alIsSource( ALuint sid ); 
 
-
-/** Set an integer parameter for a Source object. */
-ALAPI void ALAPIENTRY alSourcei( ALuint sid, ALenum param, ALint value ); 
+/*
+ * Set Source parameters
+ */
 ALAPI void ALAPIENTRY alSourcef( ALuint sid, ALenum param, ALfloat value ); 
-ALAPI void ALAPIENTRY alSource3f( ALuint sid, ALenum param,
-                                  ALfloat f1, ALfloat f2, ALfloat f3 );
-ALAPI void ALAPIENTRY alSourcefv( ALuint sid, ALenum param, ALfloat* values ); 
 
-/** Get an integer parameter for a Source object. */
-ALAPI void ALAPIENTRY alGetSourcei( ALuint sid,  ALenum pname, ALint* value );
-ALAPI void ALAPIENTRY alGetSourceiv( ALuint sid,  ALenum pname, ALint* values );
-ALAPI void ALAPIENTRY alGetSourcef( ALuint sid, ALenum pname, ALfloat* value );
-ALAPI void ALAPIENTRY alGetSourcefv( ALuint sid, ALenum pname, ALfloat* values );
+ALAPI void ALAPIENTRY alSource3f( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
 
-/* deprecated, included for Win compatibility */
-ALAPI void ALAPIENTRY alGetSource3f( ALuint sid, ALenum pname, ALfloat* value1,
-                                     ALfloat* value2, ALfloat* value3);
+ALAPI void ALAPIENTRY alSourcefv( ALuint sid, ALenum param, const ALfloat* values ); 
 
-ALAPI void ALAPIENTRY alSourcePlayv( ALsizei ns, ALuint *ids );
-ALAPI void ALAPIENTRY alSourceStopv( ALsizei ns, ALuint *ids );
-ALAPI void ALAPIENTRY alSourceRewindv( ALsizei ns, ALuint *ids );
-ALAPI void ALAPIENTRY alSourcePausev( ALsizei ns, ALuint *ids );
+ALAPI void ALAPIENTRY alSourcei( ALuint sid, ALenum param, ALint value ); 
 
-/** Activate a source, start replay. */
-ALAPI void ALAPIENTRY alSourcePlay( ALuint sid );
+ALAPI void ALAPIENTRY alSource3i( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
 
-/**
- * Pause a source, 
- *  temporarily remove it from the mixer list.
- */
-ALAPI void ALAPIENTRY alSourcePause( ALuint sid );
+ALAPI void ALAPIENTRY alSourceiv( ALuint sid, ALenum param, const ALint* values );
 
-/**
- * Rewind a source, 
- *  set the source to play at the beginning.
+/*
+ * Get Source parameters
  */
-ALAPI void ALAPIENTRY alSourceRewind( ALuint sid );
+ALAPI void ALAPIENTRY alGetSourcef( ALuint sid, ALenum param, ALfloat* value );
 
-/**
- * Stop a source,
- *  temporarily remove it from the mixer list,
- *  and reset its internal state to pre-Play.
- * To remove a Source completely, it has to be
- *  deleted following Stop, or before Play.
- */
-ALAPI void ALAPIENTRY alSourceStop( ALuint sid );
+ALAPI void ALAPIENTRY alGetSource3f( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
 
-/**
- * BUFFER
- * Buffer objects are storage space for sample data.
- * Buffers are referred to by Sources. There can be more than
- *  one Source using the same Buffer data. If Buffers have
- *  to be duplicated on a per-Source basis, the driver has to
- *  take care of allocation, copying, and deallocation as well
- *  as propagating buffer data changes.
- */
+ALAPI void ALAPIENTRY alGetSourcefv( ALuint sid, ALenum param, ALfloat* values );
 
+ALAPI void ALAPIENTRY alGetSourcei( ALuint sid,  ALenum param, ALint* value );
 
+ALAPI void ALAPIENTRY alGetSource3i( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
 
+ALAPI void ALAPIENTRY alGetSourceiv( ALuint sid,  ALenum param, ALint* values );
 
-/** Buffer object generation. */
-ALAPI void ALAPIENTRY alGenBuffers( ALsizei n, ALuint* buffers );
 
-ALAPI void ALAPIENTRY alDeleteBuffers( ALsizei n, ALuint* buffers );
-
-
-ALAPI ALboolean ALAPIENTRY alIsBuffer( ALuint buffer );
-
-/**
- * Specify the data to be filled into a buffer.
+/*
+ * Source vector based playback calls
  */
-ALAPI void ALAPIENTRY alBufferData( ALuint   buffer,
-                   ALenum   format,
-                   ALvoid*    data,
-                   ALsizei  size,
-                   ALsizei  freq );
 
-ALAPI void ALAPIENTRY alGetBufferi( ALuint buffer, ALenum param, ALint*   value );
-ALAPI void ALAPIENTRY alGetBufferf( ALuint buffer, ALenum param, ALfloat* value );
-ALAPI void ALAPIENTRY alGetBufferiv( ALuint buffer, ALenum param, ALint *v);
-ALAPI void ALAPIENTRY alGetBufferfv( ALuint buffer, ALenum param, ALfloat *v);
+/* Play, replay, or resume (if paused) a list of Sources */
+ALAPI void ALAPIENTRY alSourcePlayv( ALsizei ns, const ALuint *sids );
 
+/* Stop a list of Sources */
+ALAPI void ALAPIENTRY alSourceStopv( ALsizei ns, const ALuint *sids );
 
+/* Rewind a list of Sources */
+ALAPI void ALAPIENTRY alSourceRewindv( ALsizei ns, const ALuint *sids );
 
-/**
- * Frequency Domain Filters are band filters.
- *  Attenuation in Media (distance based)
- *  Reflection Material
- *  Occlusion Material (separating surface)
- *
- * Temporal Domain Filters:
- *  Early Reflections
- *  Late Reverb 
- *
- */
+/* Pause a list of Sources */
+ALAPI void ALAPIENTRY alSourcePausev( ALsizei ns, const ALuint *sids );
 
-
-
-
-/**
- * EXTENSION: IASIG Level 2 Environment.
- * Environment object generation.
- * This is an EXTension that describes the Environment/Reverb
- *  properties according to IASIG Level 2 specifications.
+/*
+ * Source based playback calls
  */
 
+/* Play, replay, or resume a Source */
+ALAPI void ALAPIENTRY alSourcePlay( ALuint sid );
 
+/* Stop a Source */
+ALAPI void ALAPIENTRY alSourceStop( ALuint sid );
 
+/* Rewind a Source (set playback postiton to beginning) */
+ALAPI void ALAPIENTRY alSourceRewind( ALuint sid );
 
+/* Pause a Source */
+ALAPI void ALAPIENTRY alSourcePause( ALuint sid );
 
-/**
- * Allocate n environment ids and store them in the array environs.
- * Returns the number of environments actually allocated.
+/*
+ * Source Queuing 
  */
-ALAPI ALsizei ALAPIENTRY alGenEnvironmentIASIG( ALsizei n, ALuint* environs );
+ALAPI void ALAPIENTRY alSourceQueueBuffers( ALuint sid, ALsizei numEntries, const ALuint *bids );
 
-ALAPI void ALAPIENTRY alDeleteEnvironmentIASIG( ALsizei n, ALuint* environs );
+ALAPI void ALAPIENTRY alSourceUnqueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids );
 
-ALAPI ALboolean ALAPIENTRY alIsEnvironmentIASIG( ALuint environ );
 
-ALAPI void ALAPIENTRY alEnvironmentiIASIG( ALuint eid, ALenum param, ALint value );
-
-ALAPI void ALAPIENTRY alEnvironmentfIASIG( ALuint eid, ALenum param, ALfloat value );
-
-
-
 /**
- * Queue stuff
+ * BUFFER
+ * Buffer objects are storage space for sample data.
+ * Buffers are referred to by Sources. One Buffer can be used
+ * by multiple Sources.
+ *
+ * Properties include: -
+ *
+ * Frequency (Query only)    AL_FREQUENCY      ALint
+ * Size (Query only)         AL_SIZE           ALint
+ * Bits (Query only)         AL_BITS           ALint
+ * Channels (Query only)     AL_CHANNELS       ALint
  */
-ALAPI void ALAPIENTRY alSourceQueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids );
-ALAPI void ALAPIENTRY alSourceUnqueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids );
-ALAPI void ALAPIENTRY alQueuei( ALuint sid, ALenum param, ALint value );
 
-/**
- * Knobs and dials
- */
-ALAPI void ALAPIENTRY alDopplerFactor( ALfloat value );
-ALAPI void ALAPIENTRY alDopplerVelocity( ALfloat value );
-ALAPI void ALAPIENTRY alDistanceModel( ALenum distanceModel );
+/* Create Buffer objects */
+ALAPI void ALAPIENTRY alGenBuffers( ALsizei n, ALuint* buffers );
 
-#else /* AL_NO_PROTOTYPES */
+/* Delete Buffer objects */
+ALAPI void ALAPIENTRY alDeleteBuffers( ALsizei n, const ALuint* buffers );
 
+/* Verify a handle is a valid Buffer */
+ALAPI ALboolean ALAPIENTRY alIsBuffer( ALuint bid );
 
-/** OpenAL Maintenance Functions */
+/* Specify the data to be copied into a buffer */
+ALAPI void ALAPIENTRY alBufferData( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
 
-      void                         (*alEnable)( ALenum capability );
-      void                         (*alDisable)( ALenum capability ); 
-      ALboolean                    (*alIsEnabled)( ALenum capability ); 
-      void                           (*alHint)( ALenum target, ALenum mode );
-      ALboolean                    (*alGetBoolean)( ALenum param );
-      ALint                        (*alGetInteger)( ALenum param );
-      ALfloat                      (*alGetFloat)( ALenum param );
-      ALdouble                     (*alGetDouble)( ALenum param );
-      void                         (*alGetBooleanv)( ALenum param,
-                                                      ALboolean* data );
-      void                         (*alGetIntegerv)( ALenum param,
-                                                      ALint* data );
-      void                         (*alGetFloatv)( ALenum param,
-                                                      ALfloat* data );
-      void                         (*alGetDoublev)( ALenum param,
-                                                      ALdouble* data );
-      const ALubyte*               (*GetString)( ALenum param );
-      ALenum                       (*alGetError)( ALvoid );
+/*
+ * Set Buffer parameters
+ */
+ALAPI void ALAPIENTRY alBufferf( ALuint bid, ALenum param, ALfloat value );
 
-      /** 
-       * Extension support.
-       * Query existance of extension
-       */
-      ALboolean                (*alIsExtensionPresent)(const ALubyte* fname );
+ALAPI void ALAPIENTRY alBuffer3f( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
 
-      /** 
-       * Extension support.
-       * Obtain the address of a function (usually an extension)
-       *  with the name fname. All addresses are context-independent. 
-       */
-      void*                (*alGetProcAddress)( const ALubyte* fname );
-      
+ALAPI void ALAPIENTRY alBufferfv( ALuint bid, ALenum param, const ALfloat* values );
 
-      /**
-       * Extension support.
-       * Obtain the integer value of an enumeration (usually an extension) with the name ename. 
-       */
-      ALenum                (*alGetEnumValue)( const ALubyte* ename );
+ALAPI void ALAPIENTRY alBufferi( ALuint bid, ALenum param, ALint value );
 
-/**
- * LISTENER
- * Listener is the sample position for a given context.
- * The multi-channel (usually stereo) output stream generated
- *  by the mixer is parametrized by this Listener object:
- *  its position and velocity relative to Sources, within
- *  occluder and reflector geometry.
- */
-      /**
-       *
-       * Listener Gain:  default 1.0f.
-       */
-      void                (*alListenerf)( ALenum pname, ALfloat param );
+ALAPI void ALAPIENTRY alBuffer3i( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
 
-      /**
-       *
-       * Listener Position:        ALfloat[3]
-       * Listener Velocity:        ALfloat[3]
-       * Listener Orientation:     ALfloat[6]  (forward and up vector).
-       */
-      void                (*alListenerfv)( ALenum pname, ALfloat* param ); 
+ALAPI void ALAPIENTRY alBufferiv( ALuint bid, ALenum param, const ALint* values );
 
-      /*
-       * Retrieve listener information.
-       */
-      void              (*alGetListeneri)( ALenum pname, ALint* value );
-      void              (*alGetListenerf)( ALenum pname, ALfloat* value );
-
-      void              (*alGetListeneriv)( ALenum pname, ALint* values );
-      void              (*alGetListenerfv)( ALenum pname, ALfloat* values );
-
-/**
- * SOURCE
- * Source objects are by default localized. Sources
- *  take the PCM data provided in the specified Buffer,
- *  apply Source-specific modifications, and then
- *  submit them to be mixed according to spatial 
- *  arrangement etc.
+/*
+ * Get Buffer parameters
  */
+ALAPI void ALAPIENTRY alGetBufferf( ALuint bid, ALenum param, ALfloat* value );
 
-      /** Create Source objects. */
-      void                (*alGenSources)( ALsizei n, ALuint* sources ); 
+ALAPI void ALAPIENTRY alGetBuffer3f( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
 
-      /** Delete Source objects. */
-      void                (*alDeleteSources)( ALsizei n, ALuint* sources );
+ALAPI void ALAPIENTRY alGetBufferfv( ALuint bid, ALenum param, ALfloat* values );
 
-      /** Verify a handle is a valid Source. */ 
-      ALboolean        (*alIsSource)( ALuint sid ); 
+ALAPI void ALAPIENTRY alGetBufferi( ALuint bid, ALenum param, ALint* value );
 
-      /** Set an integer parameter for a Source object. */
-      void                (*alSourcei)( ALuint sid, ALenum param, ALint value); 
+ALAPI void ALAPIENTRY alGetBuffer3i( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
 
-      /** Set a float parameter for a Source object. */
-      void                (*alSourcef)( ALuint sid, ALenum param, ALfloat value); 
+ALAPI void ALAPIENTRY alGetBufferiv( ALuint bid, ALenum param, ALint* values );
 
-      /** Set a 3 float parameter for a Source object. */
-      void                (*alSource3f)( ALuint sid, ALenum param,
-                                  ALfloat f1, ALfloat f2, ALfloat f3 );
 
-      /** Set a float vector parameter for a Source object. */
-      void                (*alSourcefv)( ALuint sid, ALenum param,
-                              ALfloat* values ); 
-
-      /** Get an integer scalar parameter for a Source object. */
-      void                (*alGetSourcei)( ALuint sid,
-                              ALenum pname, ALint* value );
-
-      /** Get an integer parameter for a Source object. */
-      void                (*alGetSourceiv)( ALuint sid,
-                              ALenum pname, ALint* values );
-
-      /** Get a float scalar parameter for a Source object. */
-      void                (*alGetSourcef)( ALuint sid,
-                              ALenum pname, ALfloat* value );
-
-      /** Get three float scalar parameter for a Source object. */
-      void                (*alGetSource3f)( ALuint sid, ALenum pname,
-					    ALfloat* value1,
-					    ALfloat* value2,
-					    ALfloat* value3);
-
-      /** Get a float vector parameter for a Source object. */
-      void                (*alGetSourcefv)( ALuint sid,
-                              ALenum pname, ALfloat* values );
-
-  
-      /** Activate a source, start replay. */
-      void                (*alSourcePlay)( ALuint sid );
-
-      /**
-       * Pause a source, 
-       *  temporarily remove it from the mixer list.
-       */
-      void                (*alSourcePause)( ALuint sid );
-
-      /**
-       * Stop a source,
-       *  temporarily remove it from the mixer list,
-       *  and reset its internal state to pre-Play.
-       * To remove a Source completely, it has to be
-       *  deleted following Stop, or before Play.
-       */
-      void                (*alSourceStop)( ALuint sid );
-
-      /**
-       * Rewind a souce.  Stopped paused and playing sources,
-       * resets the offset into the PCM data and sets state to
-       * AL_INITIAL.
-       */
-      void                (*alSourceRewind)( ALuint sid );
-
-      /**
-       * vector forms of those functions we all love
-       */
-      void                (*alSourcePlayv)( ALsizei ns, ALuint *ids );
-      void                (*alSourceStopv)( ALsizei ns, ALuint *ids );
-      void                (*alSourceRewindv)( ALsizei ns, ALuint *ids );
-      void                (*alSourcePausev)( ALsizei ns, ALuint *ids );
-
-/**
- * BUFFER
- * Buffer objects are storage space for sample data.
- * Buffers are referred to by Sources. There can be more than
- *  one Source using the same Buffer data. If Buffers have
- *  to be duplicated on a per-Source basis, the driver has to
- *  take care of allocation, copying, and deallocation as well
- *  as propagating buffer data changes.
+/*
+ * Global Parameters
  */
+ALAPI void ALAPIENTRY alDopplerFactor( ALfloat value );
 
-      /** Buffer object generation. */
-      void                (*alGenBuffers)( ALsizei n, ALuint* buffers );
-      void                (*alDeleteBuffers)( ALsizei n, ALuint* buffers );
-      ALboolean           (*alIsBuffer)( ALuint buffer );
+ALAPI void ALAPIENTRY alDopplerVelocity( ALfloat value );
 
-      /**
-       * Specify the data to be filled into a buffer.
-       */
-      void                (*alBufferData)( ALuint   buffer,
-                                        ALenum   format,
-                                        ALvoid*    data,
-                                        ALsizei  size,
-                                        ALsizei  freq );
+ALAPI void ALAPIENTRY alSpeedOfSound( ALfloat value );
 
-      void                (*alGetBufferi)( ALuint buffer,
-                                      ALenum param, ALint*   value );
-      void                (*alGetBufferf)( ALuint buffer,
-                                      ALenum param, ALfloat* value );
-      void                (*alGetBufferiv)( ALuint buffer,
-                                      ALenum param, ALint*   value );
-      void                (*alGetBufferfv)( ALuint buffer,
-                                      ALenum param, ALfloat* value );
+ALAPI void ALAPIENTRY alDistanceModel( ALenum distanceModel );
 
-/**
- * EXTENSION: IASIG Level 2 Environment.
- * Environment object generation.
- * This is an EXTension that describes the Environment/Reverb
- *  properties according to IASIG Level 2 specifications.
- */
-      /**
-       * Allocate n environment ids and store them in the array environs.
-       * Returns the number of environments actually allocated.
-       */
-      ALsizei                (*alGenEnvironmentIASIG)( ALsizei n, ALuint* environs );
-      void                (*alDeleteEnvironmentIASIG)(ALsizei n,
-                                              ALuint* environs);
-      ALboolean                (*alIsEnvironmentIASIG)( ALuint environ );
-      void                (*alEnvironmentiIASIG)( ALuint eid,
-                                      ALenum param, ALint value );
-      void                (*alEnvironmentfIASIG)( ALuint eid,
-                                      ALenum param, ALuint value );
-      /**
-       * Queue stuff
-       */
-      void              (*alQueuei)(ALuint sid, ALenum param, ALint value );
-      void              (*alSourceUnqueueBuffers)(ALuint sid, ALsizei numEntries, ALuint *bids );
-      void              (*alSourceQueueBuffers)(ALuint sid, ALsizei numEntries, ALuint *bids );
+#else /* AL_NO_PROTOTYPES */
 
-      void              (*alDopplerFactor)( ALfloat value );
-      void              (*alDopplerVelocity)( ALfloat value );
-      void              (*alDistanceModel)( ALenum distanceModel );
+void          (ALAPIENTRY *alEnable)( ALenum capability );
+void          (ALAPIENTRY *alDisable)( ALenum capability ); 
+ALboolean     (ALAPIENTRY *alIsEnabled)( ALenum capability ); 
+const ALchar* (ALAPIENTRY *alGetString)( ALenum param );
+void          (ALAPIENTRY *alGetBooleanv)( ALenum param, ALboolean* data );
+void          (ALAPIENTRY *alGetIntegerv)( ALenum param, ALint* data );
+void          (ALAPIENTRY *alGetFloatv)( ALenum param, ALfloat* data );
+void          (ALAPIENTRY *alGetDoublev)( ALenum param, ALdouble* data );
+ALboolean     (ALAPIENTRY *alGetBoolean)( ALenum param );
+ALint         (ALAPIENTRY *alGetInteger)( ALenum param );
+ALfloat       (ALAPIENTRY *alGetFloat)( ALenum param );
+ALdouble      (ALAPIENTRY *alGetDouble)( ALenum param );
+ALenum        (ALAPIENTRY *alGetError)( ALvoid );
+ALboolean     (ALAPIENTRY *alIsExtensionPresent)(const ALchar* extname );
+void*         (ALAPIENTRY *alGetProcAddress)( const ALchar* fname );
+ALenum        (ALAPIENTRY *alGetEnumValue)( const ALchar* ename );
+void          (ALAPIENTRY *alListenerf)( ALenum param, ALfloat value );
+void          (ALAPIENTRY *alListener3f)( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+void          (ALAPIENTRY *alListenerfv)( ALenum param, const ALfloat* values );
+void          (ALAPIENTRY *alListeneri)( ALenum param, ALint value );
+void          (ALAPIENTRY *alListener3i)( ALenum param, ALint value1, ALint value2, ALint value3 );
+void          (ALAPIENTRY *alListeneriv)( ALenum param, const ALint* values );
+void          (ALAPIENTRY *alGetListenerf)( ALenum param, ALfloat* value );
+void          (ALAPIENTRY *alGetListener3f)( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
+void          (ALAPIENTRY *alGetListenerfv)( ALenum param, ALfloat* values );
+void          (ALAPIENTRY *alGetListeneri)( ALenum param, ALint* value );
+void          (ALAPIENTRY *alGetListener3i)( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
+void          (ALAPIENTRY *alGetListeneriv)( ALenum param, ALint* values );
+void          (ALAPIENTRY *alGenSources)( ALsizei n, ALuint* sources );
+void          (ALAPIENTRY *alDeleteSources)( ALsizei n, const ALuint* sources );
+ALboolean     (ALAPIENTRY *alIsSource)( ALuint sid ); 
+void          (ALAPIENTRY *alSourcef)( ALuint sid, ALenum param, ALfloat value);
+void          (ALAPIENTRY *alSource3f)( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+void          (ALAPIENTRY *alSourcefv)( ALuint sid, ALenum param, const ALfloat* values );
+void          (ALAPIENTRY *alSourcei)( ALuint sid, ALenum param, ALint value);
+void          (ALAPIENTRY *alSource3i)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
+void          (ALAPIENTRY *alSourceiv)( ALuint sid, ALenum param, const ALint* values );
+void          (ALAPIENTRY *alGetSourcef)( ALuint sid, ALenum param, ALfloat* value );
+void          (ALAPIENTRY *alGetSource3f)( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+void          (ALAPIENTRY *alGetSourcefv)( ALuint sid, ALenum param, ALfloat* values );
+void          (ALAPIENTRY *alGetSourcei)( ALuint sid, ALenum param, ALint* value );
+void          (ALAPIENTRY *alGetSource3i)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+void          (ALAPIENTRY *alGetSourceiv)( ALuint sid, ALenum param, ALint* values );
+void          (ALAPIENTRY *alSourcePlayv)( ALsizei ns, const ALuint *sids );
+void          (ALAPIENTRY *alSourceStopv)( ALsizei ns, const ALuint *sids );
+void          (ALAPIENTRY *alSourceRewindv)( ALsizei ns, const ALuint *sids );
+void          (ALAPIENTRY *alSourcePausev)( ALsizei ns, const ALuint *sids );
+void          (ALAPIENTRY *alSourcePlay)( ALuint sid );
+void          (ALAPIENTRY *alSourceStop)( ALuint sid );
+void          (ALAPIENTRY *alSourceRewind)( ALuint sid );
+void          (ALAPIENTRY *alSourcePause)( ALuint sid );
+void          (ALAPIENTRY *alSourceQueueBuffers)( ALuint sid, ALsizei numEntries, const ALuint *bids );
+void          (ALAPIENTRY *alSourceUnqueueBuffers)( ALuint sid, ALsizei numEntries, ALuint *bids );
+void          (ALAPIENTRY *alGenBuffers)( ALsizei n, ALuint* buffers );
+void          (ALAPIENTRY *alDeleteBuffers)( ALsizei n, const ALuint* buffers );
+ALboolean     (ALAPIENTRY *alIsBuffer)( ALuint bid );
+void          (ALAPIENTRY *alBufferData)( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
+void          (ALAPIENTRY *alBufferf)( ALuint bid, ALenum param, ALfloat value);
+void          (ALAPIENTRY *alBuffer3f)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+void          (ALAPIENTRY *alBufferfv)( ALuint bid, ALenum param, const ALfloat* values );
+void          (ALAPIENTRY *alBufferi)( ALuint bid, ALenum param, ALint value);
+void          (ALAPIENTRY *alBuffer3i)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
+void          (ALAPIENTRY *alBufferiv)( ALuint bid, ALenum param, const ALint* values );
+void          (ALAPIENTRY *alGetBufferf)( ALuint bid, ALenum param, ALfloat* value );
+void          (ALAPIENTRY *alGetBuffer3f)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+void          (ALAPIENTRY *alGetBufferfv)( ALuint bid, ALenum param, ALfloat* values );
+void          (ALAPIENTRY *alGetBufferi)( ALuint bid, ALenum param, ALint* value );
+void          (ALAPIENTRY *alGetBuffer3i)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+void          (ALAPIENTRY *alGetBufferiv)( ALuint bid, ALenum param, ALint* values );
+void          (ALAPIENTRY *alDopplerFactor)( ALfloat value );
+void          (ALAPIENTRY *alDopplerVelocity)( ALfloat value );
+void          (ALAPIENTRY *alSpeedOfSound)( ALfloat value );
+void          (ALAPIENTRY *alDistanceModel)( ALenum distanceModel );
 
-/**
- * Frequency Domain Filters are band filters.
- *  Attenuation in Media (distance based)
- *  Reflection Material
- *  Occlusion Material (separating surface)
- *
- * Temporal Domain Filters:
- *  Early Reflections
- *  Late Reverb 
- *
- */
+/* Type Definitions */
 
+typedef void           (ALAPIENTRY *LPALENABLE)( ALenum capability );
+typedef void           (ALAPIENTRY *LPALDISABLE)( ALenum capability ); 
+typedef ALboolean      (ALAPIENTRY *LPALISENABLED)( ALenum capability ); 
+typedef const ALchar*  (ALAPIENTRY *LPALGETSTRING)( ALenum param );
+typedef void           (ALAPIENTRY *LPALGETBOOLEANV)( ALenum param, ALboolean* data );
+typedef void           (ALAPIENTRY *LPALGETINTEGERV)( ALenum param, ALint* data );
+typedef void           (ALAPIENTRY *LPALGETFLOATV)( ALenum param, ALfloat* data );
+typedef void           (ALAPIENTRY *LPALGETDOUBLEV)( ALenum param, ALdouble* data );
+typedef ALboolean      (ALAPIENTRY *LPALGETBOOLEAN)( ALenum param );
+typedef ALint          (ALAPIENTRY *LPALGETINTEGER)( ALenum param );
+typedef ALfloat        (ALAPIENTRY *LPALGETFLOAT)( ALenum param );
+typedef ALdouble       (ALAPIENTRY *LPALGETDOUBLE)( ALenum param );
+typedef ALenum         (ALAPIENTRY *LPALGETERROR)( ALvoid );
+typedef ALboolean      (ALAPIENTRY *LPALISEXTENSIONPRESENT)(const ALchar* extname );
+typedef void*          (ALAPIENTRY *LPALGETPROCADDRESS)( const ALchar* fname );
+typedef ALenum         (ALAPIENTRY *LPALGETENUMVALUE)( const ALchar* ename );
+typedef void           (ALAPIENTRY *LPALLISTENERF)( ALenum param, ALfloat value );
+typedef void           (ALAPIENTRY *LPALLISTENER3F)( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+typedef void           (ALAPIENTRY *LPALLISTENERFV)( ALenum param, const ALfloat* values );
+typedef void           (ALAPIENTRY *LPALLISTENERI)( ALenum param, ALint value );
+typedef void           (ALAPIENTRY *LPALLISTENER3I)( ALenum param, ALint value1, ALint value2, ALint value3 );
+typedef void           (ALAPIENTRY *LPALLISTENERIV)( ALenum param, const ALint* values );
+typedef void           (ALAPIENTRY *LPALGETLISTENERF)( ALenum param, ALfloat* value );
+typedef void           (ALAPIENTRY *LPALGETLISTENER3F)( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 );
+typedef void           (ALAPIENTRY *LPALGETLISTENERFV)( ALenum param, ALfloat* values );
+typedef void           (ALAPIENTRY *LPALGETLISTENERI)( ALenum param, ALint* value );
+typedef void           (ALAPIENTRY *LPALGETLISTENER3I)( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
+typedef void           (ALAPIENTRY *LPALGETLISTENERIV)( ALenum param, ALint* values );
+typedef void           (ALAPIENTRY *LPALGENSOURCES)( ALsizei n, ALuint* sources ); 
+typedef void           (ALAPIENTRY *LPALDELETESOURCES)( ALsizei n, const ALuint* sources );
+typedef ALboolean      (ALAPIENTRY *LPALISSOURCE)( ALuint sid ); 
+typedef void           (ALAPIENTRY *LPALSOURCEF)( ALuint sid, ALenum param, ALfloat value); 
+typedef void           (ALAPIENTRY *LPALSOURCE3F)( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+typedef void           (ALAPIENTRY *LPALSOURCEFV)( ALuint sid, ALenum param, const ALfloat* values );
+typedef void           (ALAPIENTRY *LPALSOURCEI)( ALuint sid, ALenum param, ALint value); 
+typedef void           (ALAPIENTRY *LPALSOURCE3I)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
+typedef void           (ALAPIENTRY *LPALSOURCEIV)( ALuint sid, ALenum param, const ALint* values );
+typedef void           (ALAPIENTRY *LPALGETSOURCEF)( ALuint sid, ALenum param, ALfloat* value );
+typedef void           (ALAPIENTRY *LPALGETSOURCE3F)( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+typedef void           (ALAPIENTRY *LPALGETSOURCEFV)( ALuint sid, ALenum param, ALfloat* values );
+typedef void           (ALAPIENTRY *LPALGETSOURCEI)( ALuint sid, ALenum param, ALint* value );
+typedef void           (ALAPIENTRY *LPALGETSOURCE3I)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+typedef void           (ALAPIENTRY *LPALGETSOURCEIV)( ALuint sid, ALenum param, ALint* values );
+typedef void           (ALAPIENTRY *LPALSOURCEPLAYV)( ALsizei ns, const ALuint *sids );
+typedef void           (ALAPIENTRY *LPALSOURCESTOPV)( ALsizei ns, const ALuint *sids );
+typedef void           (ALAPIENTRY *LPALSOURCEREWINDV)( ALsizei ns, const ALuint *sids );
+typedef void           (ALAPIENTRY *LPALSOURCEPAUSEV)( ALsizei ns, const ALuint *sids );
+typedef void           (ALAPIENTRY *LPALSOURCEPLAY)( ALuint sid );
+typedef void           (ALAPIENTRY *LPALSOURCESTOP)( ALuint sid );
+typedef void           (ALAPIENTRY *LPALSOURCEREWIND)( ALuint sid );
+typedef void           (ALAPIENTRY *LPALSOURCEPAUSE)( ALuint sid );
+typedef void           (ALAPIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, const ALuint *bids );
+typedef void           (ALAPIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, ALuint *bids );
+typedef void           (ALAPIENTRY *LPALGENBUFFERS)( ALsizei n, ALuint* buffers );
+typedef void           (ALAPIENTRY *LPALDELETEBUFFERS)( ALsizei n, const ALuint* buffers );
+typedef ALboolean      (ALAPIENTRY *LPALISBUFFER)( ALuint bid );
+typedef void           (ALAPIENTRY *LPALBUFFERDATA)( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq );
+typedef void           (ALAPIENTRY *LPALBUFFERF)( ALuint bid, ALenum param, ALfloat value);
+typedef void           (ALAPIENTRY *LPALBUFFER3F)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
+typedef void           (ALAPIENTRY *LPALBUFFERFV)( ALuint bid, ALenum param, const ALfloat* values );
+typedef void           (ALAPIENTRY *LPALBUFFERI)( ALuint bid, ALenum param, ALint value);
+typedef void           (ALAPIENTRY *LPALBUFFER3I)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
+typedef void           (ALAPIENTRY *LPALBUFFERIV)( ALuint bid, ALenum param, const ALint* values );
+typedef void           (ALAPIENTRY *LPALGETBUFFERF)( ALuint bid, ALenum param, ALfloat* value );
+typedef void           (ALAPIENTRY *LPALGETBUFFER3F)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
+typedef void           (ALAPIENTRY *LPALGETBUFFERFV)( ALuint bid, ALenum param, ALfloat* values );
+typedef void           (ALAPIENTRY *LPALGETBUFFERI)( ALuint bid, ALenum param, ALint* value );
+typedef void           (ALAPIENTRY *LPALGETBUFFER3I)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
+typedef void           (ALAPIENTRY *LPALGETBUFFERIV)( ALuint bid, ALenum param, ALint* values );
+typedef void           (ALAPIENTRY *LPALDOPPLERFACTOR)( ALfloat value );
+typedef void           (ALAPIENTRY *LPALDOPPLERVELOCITY)( ALfloat value );
+typedef void           (ALAPIENTRY *LPALSPEEDOFSOUND)( ALfloat value );
+typedef void           (ALAPIENTRY *LPALDISTANCEMODEL)( ALenum distanceModel );
+
 #endif /* AL_NO_PROTOTYPES */
 
 #ifdef TARGET_OS_MAC

Modified: trunk/code/AL/alc.h
===================================================================
--- trunk/code/AL/alc.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/alc.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -11,92 +11,148 @@
 #define ALC_VERSION_0_1         1
 
 #ifdef _WIN32
- #ifdef _OPENAL32LIB
-  #define ALCAPI __declspec(dllexport)
- #else
-  #define ALCAPI __declspec(dllimport)
- #endif
-
  typedef struct ALCdevice_struct ALCdevice;
  typedef struct ALCcontext_struct ALCcontext;
-
- #define ALCAPIENTRY __cdecl
-#else
- #ifdef TARGET_OS_MAC
-  #if TARGET_OS_MAC
-   #pragma export on
+ #ifndef _XBOX
+  #ifdef _OPENAL32LIB
+   #define ALCAPI __declspec(dllexport)
+  #else
+   #define ALCAPI __declspec(dllimport)
   #endif
+  #define ALCAPIENTRY __cdecl
  #endif
+#endif
 
+#ifdef TARGET_OS_MAC
+ #if TARGET_OS_MAC
+  #pragma export on
+ #endif
+#endif
+
+#ifndef ALCAPI
  #define ALCAPI
+#endif
+
+#ifndef ALCAPIENTRY
  #define ALCAPIENTRY
 #endif
 
-#ifndef AL_NO_PROTOTYPES
 
-ALCAPI ALCcontext * ALCAPIENTRY alcCreateContext( ALCdevice *dev,
-						ALint* attrlist );
+#ifndef ALC_NO_PROTOTYPES
 
-/**
- * There is no current context, as we can mix
- *  several active contexts. But al* calls
- *  only affect the current context.
+/*
+ * Context Management
  */
-ALCAPI ALCenum ALCAPIENTRY alcMakeContextCurrent( ALCcontext *alcHandle );
+ALCAPI ALCcontext *    ALCAPIENTRY alcCreateContext( ALCdevice *device, const ALCint* attrlist );
 
-/**
- * Perform processing on a synced context, non-op on a asynchronous
- * context.
- */
-ALCAPI ALCcontext * ALCAPIENTRY alcProcessContext( ALCcontext *alcHandle );
+ALCAPI ALCboolean      ALCAPIENTRY alcMakeContextCurrent( ALCcontext *context );
 
-/**
- * Suspend processing on an asynchronous context, non-op on a
- * synced context.
+ALCAPI void            ALCAPIENTRY alcProcessContext( ALCcontext *context );
+
+ALCAPI void            ALCAPIENTRY alcSuspendContext( ALCcontext *context );
+
+ALCAPI void            ALCAPIENTRY alcDestroyContext( ALCcontext *context );
+
+ALCAPI ALCcontext *    ALCAPIENTRY alcGetCurrentContext( ALCvoid );
+
+ALCAPI ALCdevice*      ALCAPIENTRY alcGetContextsDevice( ALCcontext *context );
+
+
+/*
+ * Device Management
  */
-ALCAPI void ALCAPIENTRY alcSuspendContext( ALCcontext *alcHandle );
+ALCAPI ALCdevice *     ALCAPIENTRY alcOpenDevice( const ALchar *devicename );
 
-ALCAPI ALCenum ALCAPIENTRY alcDestroyContext( ALCcontext *alcHandle );
+ALCAPI ALCboolean      ALCAPIENTRY alcCloseDevice( ALCdevice *device );
 
-ALCAPI ALCenum ALCAPIENTRY alcGetError( ALCdevice *dev );
 
-ALCAPI ALCcontext * ALCAPIENTRY alcGetCurrentContext( ALvoid );
+/*
+ * Error support.
+ * Obtain the most recent Context error
+ */
+ALCAPI ALCenum         ALCAPIENTRY alcGetError( ALCdevice *device );
 
-ALCAPI ALCdevice *alcOpenDevice( const ALubyte *tokstr );
-ALCAPI void alcCloseDevice( ALCdevice *dev );
 
-ALCAPI ALboolean ALCAPIENTRY alcIsExtensionPresent(ALCdevice *device, ALubyte *extName);
-ALCAPI ALvoid  * ALCAPIENTRY alcGetProcAddress(ALCdevice *device, ALubyte *funcName);
-ALCAPI ALenum    ALCAPIENTRY alcGetEnumValue(ALCdevice *device, ALubyte *enumName);
+/* 
+ * Extension support.
+ * Query for the presence of an extension, and obtain any appropriate
+ * function pointers and enum values.
+ */
+ALCAPI ALCboolean      ALCAPIENTRY alcIsExtensionPresent( ALCdevice *device, const ALCchar *extname );
 
-ALCAPI ALCdevice* ALCAPIENTRY alcGetContextsDevice(ALCcontext *context);
+ALCAPI void  *         ALCAPIENTRY alcGetProcAddress( ALCdevice *device, const ALCchar *funcname );
 
+ALCAPI ALCenum         ALCAPIENTRY alcGetEnumValue( ALCdevice *device, const ALCchar *enumname );
 
-/**
+
+/*
  * Query functions
  */
-const ALubyte * alcGetString( ALCdevice *deviceHandle, ALenum token );
-void alcGetIntegerv( ALCdevice *deviceHandle, ALenum  token , ALsizei  size , ALint *dest );
+ALCAPI const ALCchar * ALCAPIENTRY alcGetString( ALCdevice *device, ALCenum param );
 
-#else
-      ALCcontext *   (*alcCreateContext)( ALCdevice *dev, ALint* attrlist );
-      ALCenum	     (*alcMakeContextCurrent)( ALCcontext *alcHandle );
-      ALCcontext *   (*alcProcessContext)( ALCcontext *alcHandle );
-      void           (*alcSuspendContext)( ALCcontext *alcHandle );
-      ALCenum	     (*alcDestroyContext)( ALCcontext *alcHandle );
-      ALCenum	     (*alcGetError)( ALCdevice *dev );
-      ALCcontext *   (*alcGetCurrentContext)( ALvoid );
-      ALCdevice *    (*alcOpenDevice)( const ALubyte *tokstr );
-      void           (*alcCloseDevice)( ALCdevice *dev );
-      ALboolean      (*alcIsExtensionPresent)( ALCdevice *device, ALubyte *extName );
-      ALvoid  *      (*alcGetProcAddress)(ALCdevice *device, ALubyte *funcName );
-      ALenum         (*alcGetEnumValue)(ALCdevice *device, ALubyte *enumName);
-      ALCdevice*     (*alcGetContextsDevice)(ALCcontext *context);
-      const ALubyte* (*alcGetString)( ALCdevice *deviceHandle, ALenum token );
-      void           (*alcGetIntegerv)( ALCdevice *deviceHandle, ALenum  token , ALsizei  size , ALint *dest );
+ALCAPI void            ALCAPIENTRY alcGetIntegerv( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *data );
 
-#endif /* AL_NO_PROTOTYPES */
 
+/*
+ * Capture functions
+ */
+ALCAPI ALCdevice*      ALCAPIENTRY alcCaptureOpenDevice( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize );
+
+ALCAPI ALCboolean      ALCAPIENTRY alcCaptureCloseDevice( ALCdevice *device );
+
+ALCAPI void            ALCAPIENTRY alcCaptureStart( ALCdevice *device );
+
+ALCAPI void            ALCAPIENTRY alcCaptureStop( ALCdevice *device );
+
+ALCAPI void            ALCAPIENTRY alcCaptureSamples( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
+
+#else /* ALC_NO_PROTOTYPES */
+
+ALCAPI ALCcontext *    (ALCAPIENTRY *alcCreateContext)( ALCdevice *device, const ALCint* attrlist );
+ALCAPI ALCboolean      (ALCAPIENTRY *alcMakeContextCurrent)( ALCcontext *context );
+ALCAPI void            (ALCAPIENTRY *alcProcessContext)( ALCcontext *context );
+ALCAPI void            (ALCAPIENTRY *alcSuspendContext)( ALCcontext *context );
+ALCAPI void	           (ALCAPIENTRY *alcDestroyContext)( ALCcontext *context );
+ALCAPI ALCcontext *    (ALCAPIENTRY *alcGetCurrentContext)( ALCvoid );
+ALCAPI ALCdevice *     (ALCAPIENTRY *alcGetContextsDevice)( ALCcontext *context );
+ALCAPI ALCdevice *     (ALCAPIENTRY *alcOpenDevice)( const ALCchar *devicename );
+ALCAPI ALCboolean      (ALCAPIENTRY *alcCloseDevice)( ALCdevice *device );
+ALCAPI ALCenum	       (ALCAPIENTRY *alcGetError)( ALCdevice *device );
+ALCAPI ALCboolean      (ALCAPIENTRY *alcIsExtensionPresent)( ALCdevice *device, const ALCchar *extname );
+ALCAPI void *          (ALCAPIENTRY *alcGetProcAddress)( ALCdevice *device, const ALCchar *funcname );
+ALCAPI ALCenum         (ALCAPIENTRY *alcGetEnumValue)( ALCdevice *device, const ALCchar *enumname );
+ALCAPI const ALCchar*  (ALCAPIENTRY *alcGetString)( ALCdevice *device, ALCenum param );
+ALCAPI void            (ALCAPIENTRY *alcGetIntegerv)( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *dest );
+ALCAPI ALCdevice *     (ALCAPIENTRY *alcCaptureOpenDevice)( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize );
+ALCAPI ALCboolean      (ALCAPIENTRY *alcCaptureCloseDevice)( ALCdevice *device );
+ALCAPI void            (ALCAPIENTRY *alcCaptureStart)( ALCdevice *device );
+ALCAPI void            (ALCAPIENTRY *alcCaptureStop)( ALCdevice *device );
+ALCAPI void            (ALCAPIENTRY *alcCaptureSamples)( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
+
+/* Type definitions */
+typedef ALCcontext *   (ALCAPIENTRY *LPALCCREATECONTEXT) (ALCdevice *device, const ALCint *attrlist);
+typedef ALCboolean     (ALCAPIENTRY *LPALCMAKECONTEXTCURRENT)( ALCcontext *context );
+typedef void           (ALCAPIENTRY *LPALCPROCESSCONTEXT)( ALCcontext *context );
+typedef void           (ALCAPIENTRY *LPALCSUSPENDCONTEXT)( ALCcontext *context );
+typedef void	       (ALCAPIENTRY *LPALCDESTROYCONTEXT)( ALCcontext *context );
+typedef ALCcontext *   (ALCAPIENTRY *LPALCGETCURRENTCONTEXT)( ALCvoid );
+typedef ALCdevice *    (ALCAPIENTRY *LPALCGETCONTEXTSDEVICE)( ALCcontext *context );
+typedef ALCdevice *    (ALCAPIENTRY *LPALCOPENDEVICE)( const ALCchar *devicename );
+typedef ALCboolean     (ALCAPIENTRY *LPALCCLOSEDEVICE)( ALCdevice *device );
+typedef ALCenum	       (ALCAPIENTRY *LPALCGETERROR)( ALCdevice *device );
+typedef ALCboolean     (ALCAPIENTRY *LPALCISEXTENSIONPRESENT)( ALCdevice *device, const ALCchar *extname );
+typedef void *         (ALCAPIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname );
+typedef ALCenum        (ALCAPIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname );
+typedef const ALCchar* (ALCAPIENTRY *LPALCGETSTRING)( ALCdevice *device, ALCenum param );
+typedef void           (ALCAPIENTRY *LPALCGETINTEGERV)( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *dest );
+typedef ALCdevice *    (ALCAPIENTRY *LPALCCAPTUREOPENDEVICE)( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize );
+typedef ALCboolean     (ALCAPIENTRY *LPALCCAPTURECLOSEDEVICE)( ALCdevice *device );
+typedef void           (ALCAPIENTRY *LPALCCAPTURESTART)( ALCdevice *device );
+typedef void           (ALCAPIENTRY *LPALCCAPTURESTOP)( ALCdevice *device );
+typedef void           (ALCAPIENTRY *LPALCCAPTURESAMPLES)( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
+
+#endif /* ALC_NO_PROTOTYPES */
+
 #ifdef TARGET_OS_MAC
 #if TARGET_OS_MAC
 #pragma export off

Modified: trunk/code/AL/alctypes.h
===================================================================
--- trunk/code/AL/alctypes.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/alctypes.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -10,79 +10,133 @@
 
 typedef int ALCenum;
 
+/** ALC boolean type. */
+typedef char ALCboolean;
+
+/** ALC 8bit signed byte. */
+typedef char ALCbyte;
+
+/** ALC 8bit unsigned byte. */
+typedef unsigned char ALCubyte;
+
+/** OpenAL 8bit char */
+typedef char ALCchar;
+
+/** ALC 16bit signed short integer type. */
+typedef short ALCshort;
+
+/** ALC 16bit unsigned short integer type. */
+typedef unsigned short ALCushort;
+
+/** ALC 32bit unsigned integer type. */
+typedef unsigned ALCuint;
+
+/** ALC 32bit signed integer type. */
+typedef int ALCint;
+
+/** ALC 32bit floating point type. */
+typedef float ALCfloat;
+
+/** ALC 64bit double point type. */
+typedef double ALCdouble;
+
+/** ALC 32bit type. */
+typedef int ALCsizei;
+
+/** ALC void type */
+typedef void ALCvoid;
+
 /* Enumerant values begin at column 50. No tabs. */
 
 /* bad value */
 #define ALC_INVALID                              0
 
+/* Boolean False. */
+#define ALC_FALSE                                0
+
+/* Boolean True. */
+#define ALC_TRUE                                 1
+
 /**
  * followed by <int> Hz
  */
-#define ALC_FREQUENCY                            0x100
+#define ALC_FREQUENCY                            0x1007
 
 /**
  * followed by <int> Hz
  */
-#define ALC_REFRESH                              0x101
+#define ALC_REFRESH                              0x1008
 
 /**
  * followed by AL_TRUE, AL_FALSE
  */
-#define ALC_SYNC                                 0x102
+#define ALC_SYNC                                 0x1009
 
 /**
+ * followed by <int> Num of requested Mono (3D) Sources
+ */
+#define ALC_MONO_SOURCES                         0x1010
+
+/**
+ * followed by <int> Num of requested Stereo Sources
+ */
+#define ALC_STEREO_SOURCES                       0x1011
+
+/**
  * errors
  */
 
 /**
  * No error
  */
-#define ALC_NO_ERROR                             0
+#define ALC_NO_ERROR                             ALC_FALSE
 
 /**
  * No device
  */
-#define ALC_INVALID_DEVICE                       0x200
+#define ALC_INVALID_DEVICE                       0xA001
 
 /**
  * invalid context ID
  */
-#define ALC_INVALID_CONTEXT                      0x201
+#define ALC_INVALID_CONTEXT                      0xA002
 
 /**
  * bad enum
  */
-#define ALC_INVALID_ENUM                         0x202
+#define ALC_INVALID_ENUM                         0xA003
 
 /**
  * bad value
  */
-#define ALC_INVALID_VALUE                        0x203
+#define ALC_INVALID_VALUE                        0xA004
 
 /**
  * Out of memory.
  */
-#define ALC_OUT_OF_MEMORY                        0x204
+#define ALC_OUT_OF_MEMORY                        0xA005
 
 
 
 /**
  * The Specifier string for default device
  */
-#define ALC_DEFAULT_DEVICE_SPECIFIER             0x300
-#define ALC_DEVICE_SPECIFIER                     0x301
-#define ALC_EXTENSIONS                           0x302
+#define ALC_DEFAULT_DEVICE_SPECIFIER             0x1004
+#define ALC_DEVICE_SPECIFIER                     0x1005
+#define ALC_EXTENSIONS                           0x1006
 
-#define ALC_MAJOR_VERSION                        0x303
-#define ALC_MINOR_VERSION                        0x304
+#define ALC_MAJOR_VERSION                        0x1000
+#define ALC_MINOR_VERSION                        0x1001
 
-#define ALC_ATTRIBUTES_SIZE                      0x305
-#define ALC_ALL_ATTRIBUTES                       0x306
+#define ALC_ATTRIBUTES_SIZE                      0x1002
+#define ALC_ALL_ATTRIBUTES                       0x1003
 
 /**
- * Not sure if the following are conformant
+ * Capture extension
  */
-#define ALC_FALSE                                0
-#define ALC_TRUE                                 (!(ALC_FALSE))
+#define ALC_CAPTURE_DEVICE_SPECIFIER             0x310
+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER     0x311
+#define ALC_CAPTURE_SAMPLES                      0x312
 
+
 #endif /* _ALCTYPES_H */

Modified: trunk/code/AL/altypes.h
===================================================================
--- trunk/code/AL/altypes.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/altypes.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -1,15 +1,31 @@
 #ifndef _AL_TYPES_H_
 #define _AL_TYPES_H_
 
+/* define platform type */
+#if !defined(MACINTOSH_AL) && !defined(LINUX_AL) && !defined(WINDOWS_AL)
+  #ifdef __APPLE__
+    #define MACINTOSH_AL
+    #else
+    #ifdef _WIN32
+      #define WINDOWS_AL
+    #else
+      #define LINUX_AL
+    #endif
+  #endif
+#endif
+
 /** OpenAL bool type. */
 typedef char ALboolean;
 
 /** OpenAL 8bit signed byte. */
-typedef signed char ALbyte;
+typedef char ALbyte;
 
 /** OpenAL 8bit unsigned byte. */
 typedef unsigned char ALubyte;
 
+/** OpenAL 8bit char */
+typedef char ALchar;
+
 /** OpenAL 16bit signed short integer type. */
 typedef short ALshort;
 
@@ -29,14 +45,10 @@
 typedef double ALdouble;
 
 /** OpenAL 32bit type. */
-typedef signed int ALsizei;
+typedef int ALsizei;
 
 /** OpenAL void type (for params, not returns). */
-#ifdef __GNUC__
 typedef void ALvoid;
-#else
-#define ALvoid void
-#endif /* __GNUC__ */
 
 /** OpenAL enumerations. */
 typedef int ALenum;
@@ -63,15 +75,11 @@
 /** Boolean True. */
 #define AL_TRUE                                   1
 
-/**
- * Indicate the type of AL_SOURCE.
- * Sources can be spatialized 
- */
-#define AL_SOURCE_TYPE                            0x0200
-
 /** Indicate Source has relative coordinates. */
-#define AL_SOURCE_RELATIVE                        0x0202
+#define AL_SOURCE_RELATIVE                        0x202
 
+
+
 /**
  * Directional source, inner cone angle, in degrees.
  * Range:    [0-360] 
@@ -121,14 +129,6 @@
 #define AL_LOOPING                                0x1007
 
 /**
- * Indicate whether source is meant to be streaming.
- * Type: ALboolean?
- * Range:   [AL_TRUE, AL_FALSE]
- * Default: FALSE.
- */
-#define AL_STREAMING                              0x1008
-
-/**
  * Indicate the buffer to provide sound samples. 
  * Type: ALuint.
  * Range: any valid Buffer id.
@@ -148,14 +148,6 @@
  */
 #define AL_GAIN                                   0x100A
 
-/* byte offset into source (in canon format).  -1 if source
- * is not playing.  Don't set this, get this.
- *
- * Type:  ALint
- * Range: -1 - +inf
- */
-#define AL_BYTE_LOKI                              0x100C
-
 /*
  * Indicate minimum source attenuation
  * Type: ALfloat
@@ -182,6 +174,14 @@
 #define AL_ORIENTATION                            0x100F
 
 /**
+ * Specify the channel mask. (Creative)
+ * Type:	 ALuint
+ * Range:	 [0 - 255]
+ */
+#define AL_CHANNEL_MASK                           0x3000
+
+
+/**
  * Source state information.
  */
 #define AL_SOURCE_STATE                           0x1010
@@ -197,11 +197,22 @@
 #define AL_BUFFERS_PROCESSED                      0x1016
 
 /**
- * Buffer states
+ * Source buffer position information
  */
-#define AL_PENDING                                0x1017
-#define AL_PROCESSED                              0x1018
+#define AL_SEC_OFFSET                             0x1024
+#define AL_SAMPLE_OFFSET                          0x1025
+#define AL_BYTE_OFFSET                            0x1026
 
+/*
+ * Source type (Static, Streaming or undetermined)
+ * Source is Static if a Buffer has been attached using AL_BUFFER
+ * Source is Streaming if one or more Buffers have been attached using alSourceQueueBuffers
+ * Source is undetermined when it has the NULL buffer attached
+ */
+#define AL_SOURCE_TYPE                            0x1027
+#define AL_STATIC                                 0x1028
+#define AL_STREAMING                              0x1029
+#define AL_UNDETERMINED                           0x1030
 
 /** Sound samples: format specifier. */
 #define AL_FORMAT_MONO8                           0x1100
@@ -256,6 +267,7 @@
 #define AL_BITS                                   0x2002
 #define AL_CHANNELS                               0x2003
 #define AL_SIZE                                   0x2004
+#define AL_DATA                                   0x2005
 
 /**
  * Buffer state.
@@ -263,9 +275,10 @@
  * Not supported for public use (yet).
  */
 #define AL_UNUSED                                 0x2010
-#define AL_QUEUED                                 0x2011
-#define AL_CURRENT                                0x2012
+#define AL_PENDING                                0x2011
+#define AL_PROCESSED                              0x2012
 
+
 /** Errors: No Error. */
 #define AL_NO_ERROR                               AL_FALSE
 
@@ -278,6 +291,7 @@
  * Invalid parameter passed to AL call.
  */
 #define AL_ILLEGAL_ENUM                           0xA002
+#define AL_INVALID_ENUM                           0xA002
 
 /** 
  * Invalid enum parameter value.
@@ -288,6 +302,8 @@
  * Illegal call.
  */
 #define AL_ILLEGAL_COMMAND                        0xA004
+#define AL_INVALID_OPERATION                      0xA004
+
   
 /**
  * No mojo.
@@ -314,9 +330,9 @@
 #define AL_DOPPLER_VELOCITY                       0xC001
 
 /**
- * Distance scaling
+ * Speed of Sound in units per second
  */
-#define AL_DISTANCE_SCALE                         0xC002
+#define AL_SPEED_OF_SOUND                         0xC003
 
 /**
  * Distance models
@@ -328,114 +344,9 @@
 #define AL_DISTANCE_MODEL                         0xD000
 #define AL_INVERSE_DISTANCE                       0xD001
 #define AL_INVERSE_DISTANCE_CLAMPED               0xD002
+#define AL_LINEAR_DISTANCE                        0xD003
+#define AL_LINEAR_DISTANCE_CLAMPED                0xD004
+#define AL_EXPONENT_DISTANCE                      0xD005
+#define AL_EXPONENT_DISTANCE_CLAMPED              0xD006
 
-
-/**
- * enables
- */
-
-/* #define AL_SOME_ENABLE                            0xE000 */
-
-/** IASIG Level 2 Environment. */
-
-/**  
- * Parameter:  IASIG ROOM  blah
- * Type:       intgeger
- * Range:      [-10000, 0]
- * Default:    -10000 
- */
-#define AL_ENV_ROOM_IASIG                         0x3001
-
-/**
- * Parameter:  IASIG ROOM_HIGH_FREQUENCY
- * Type:       integer
- * Range:      [-10000, 0]
- * Default:    0 
- */
-#define AL_ENV_ROOM_HIGH_FREQUENCY_IASIG          0x3002
-
-/**
- * Parameter:  IASIG ROOM_ROLLOFF_FACTOR
- * Type:       float
- * Range:      [0.0, 10.0]
- * Default:    0.0 
- */
-#define AL_ENV_ROOM_ROLLOFF_FACTOR_IASIG          0x3003
-
-/** 
- * Parameter:  IASIG  DECAY_TIME
- * Type:       float
- * Range:      [0.1, 20.0]
- * Default:    1.0 
- */
-#define AL_ENV_DECAY_TIME_IASIG                   0x3004
-
-/**
- * Parameter:  IASIG DECAY_HIGH_FREQUENCY_RATIO
- * Type:       float
- * Range:      [0.1, 2.0]
- * Default:    0.5
- */
-#define AL_ENV_DECAY_HIGH_FREQUENCY_RATIO_IASIG   0x3005
-
-/**
- * Parameter:  IASIG REFLECTIONS
- * Type:       integer
- * Range:      [-10000, 1000]
- * Default:    -10000
- */
-#define AL_ENV_REFLECTIONS_IASIG                  0x3006
-
-/**
- * Parameter:  IASIG REFLECTIONS_DELAY
- * Type:       float
- * Range:      [0.0, 0.3]
- * Default:    0.02
- */
-#define AL_ENV_REFLECTIONS_DELAY_IASIG            0x3006
-
-/**
- * Parameter:  IASIG REVERB
- * Type:       integer
- * Range:      [-10000,2000]
- * Default:    -10000
- */
-#define AL_ENV_REVERB_IASIG                       0x3007
-
-/**
- * Parameter:  IASIG REVERB_DELAY
- * Type:       float
- * Range:      [0.0, 0.1]
- * Default:    0.04
- */
-#define AL_ENV_REVERB_DELAY_IASIG                 0x3008
-
-/**
- * Parameter:  IASIG DIFFUSION
- * Type:       float
- * Range:      [0.0, 100.0]
- * Default:    100.0
- */
-#define AL_ENV_DIFFUSION_IASIG                    0x3009
-
-/**
- * Parameter:  IASIG DENSITY
- * Type:       float
- * Range:      [0.0, 100.0]
- * Default:    100.0
- */
-#define AL_ENV_DENSITY_IASIG                      0x300A
-  
-  /**
- * Parameter:  IASIG HIGH_FREQUENCY_REFERENCE
- * Type:       float
- * Range:      [20.0, 20000.0]
- * Default:    5000.0
- */
-#define AL_ENV_HIGH_FREQUENCY_REFERENCE_IASIG     0x300B
-
-
-#define AL_INVALID_ENUM                          0xA002  
-#define AL_INVALID_OPERATION                     0xA004
-
 #endif

Deleted: trunk/code/AL/alu.h
===================================================================
--- trunk/code/AL/alu.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/alu.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -1,55 +0,0 @@
-#ifndef __alu_h_
-#define __alu_h_
-
-#ifdef _WIN32
-#define ALAPI       __declspec(dllexport)
-#define ALAPIENTRY  __cdecl
-#else  /* _WIN32 */
-
-#ifdef TARGET_OS_MAC
-#if TARGET_OS_MAC
-#pragma export on
-#endif /* TARGET_OS_MAC */
-#endif /* TARGET_OS_MAC */
-
-#define ALAPI
-#define ALAPIENTRY
-#define AL_CALLBACK
-#endif /* _WIN32 */
-
-#if defined(__MACH__) && defined(__APPLE__)
-#include <OpenAL/al.h>
-#include <OpenAL/alutypes.h>
-#else
-#include <AL/al.h>
-#include <AL/alutypes.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef AL_NO_PROTOTYPES
-
-
-
-#else
-
-
-
-
-
-#endif /* AL_NO_PROTOTYPES */
-
-#ifdef TARGET_OS_MAC
-#if TARGET_OS_MAC
-#pragma export off
-#endif /* TARGET_OS_MAC */
-#endif /* TARGET_OS_MAC */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __alu_h_ */
-

Modified: trunk/code/AL/alut.h
===================================================================
--- trunk/code/AL/alut.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/alut.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -1,12 +1,24 @@
 #ifndef _ALUT_H_
 #define _ALUT_H_
 
+/* define platform type */
+#if !defined(MACINTOSH_AL) && !defined(LINUX_AL) && !defined(WINDOWS_AL)
+  #ifdef __APPLE__
+    #define MACINTOSH_AL
+    #else
+    #ifdef _WIN32
+      #define WINDOWS_AL
+    #else
+      #define LINUX_AL
+    #endif
+  #endif
+#endif
+
 #include "altypes.h"
-#include "aluttypes.h"
 
 #ifdef _WIN32
-#define ALAPI         __declspec(dllexport)
-#define ALAPIENTRY    __cdecl
+#define ALUTAPI
+#define ALUTAPIENTRY    __cdecl
 #define AL_CALLBACK
 #else  /* _WIN32 */
 
@@ -16,12 +28,12 @@
 #endif /* TARGET_OS_MAC */
 #endif /* TARGET_OS_MAC */
 
-#ifndef ALAPI
-#define ALAPI
+#ifndef ALUTAPI
+#define ALUTAPI
 #endif
 
-#ifndef ALAPIENTRY
-#define ALAPIENTRY
+#ifndef ALUTAPIENTRY
+#define ALUTAPIENTRY
 #endif
 
 #ifndef AL_CALLBACK
@@ -34,52 +46,36 @@
 extern "C" {
 #endif
 
-#ifndef AL_NO_PROTOTYPES
+#ifndef ALUT_NO_PROTOTYPES
 
-ALAPI void ALAPIENTRY alutInit(ALint *argc, ALbyte **argv);
-ALAPI void ALAPIENTRY alutExit(ALvoid);
+ALUTAPI void ALUTAPIENTRY alutInit(int *argc, char *argv[]);
+ALUTAPI void ALUTAPIENTRY alutExit(ALvoid);
 
-ALAPI ALboolean ALAPIENTRY alutLoadWAV( const char *fname,
-                        ALvoid **wave,
-			ALsizei *format,
-			ALsizei *size,
-			ALsizei *bits,
-			ALsizei *freq );
-
-ALAPI void ALAPIENTRY alutLoadWAVFile(ALbyte *file,
-				      ALenum *format,
-				      ALvoid **data,
-				      ALsizei *size,
-				      ALsizei *freq,
-				      ALboolean *loop);
-ALAPI void ALAPIENTRY alutLoadWAVMemory(ALbyte *memory,
-					ALenum *format,
-					ALvoid **data,
-					ALsizei *size,
-					ALsizei *freq,
-					ALboolean *loop);
-ALAPI void ALAPIENTRY alutUnloadWAV(ALenum format,
-				    ALvoid *data,
-				    ALsizei size,
-				    ALsizei freq);
-
+#ifndef MACINTOSH_AL
+/* Windows and Linux versions have a loop parameter, Macintosh doesn't */
+ALUTAPI void ALUTAPIENTRY alutLoadWAVFile(ALbyte *file, ALenum *format, ALvoid **data, ALsizei *size, ALsizei *freq, ALboolean *loop);
+ALUTAPI void ALUTAPIENTRY alutLoadWAVMemory(ALbyte *memory, ALenum *format, ALvoid **data, ALsizei *size, ALsizei *freq, ALboolean *loop);
 #else
-      void 	(*alutInit)(int *argc, char *argv[]);
-      void 	(*alutExit)(ALvoid);
+ALUTAPI void ALUTAPIENTRY alutLoadWAVFile(ALbyte *file, ALenum *format, ALvoid **data, ALsizei *size, ALsizei *freq);
+ALUTAPI void ALUTAPIENTRY alutLoadWAVMemory(ALbyte *memory, ALenum *format, ALvoid **data, ALsizei *size, ALsizei *freq);
+#endif
 
-      ALboolean 	(*alutLoadWAV)( const char *fname,
-                        ALvoid **wave,
-			ALsizei *format,
-			ALsizei *size,
-			ALsizei *bits,
-			ALsizei *freq );
+ALUTAPI void ALUTAPIENTRY alutUnloadWAV(ALenum format, ALvoid *data, ALsizei size, ALsizei freq);
 
-      void (*alutLoadWAVFile(ALbyte *file,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq,ALboolean *loop);
-      void (*alutLoadWAVMemory)(ALbyte *memory,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq,ALboolean *loop);
-      void (*alutUnloadWAV)(ALenum format,ALvoid *data,ALsizei size,ALsizei freq);
+#else /* ALUT_NO_PROTOTYPES */
 
+    void      (ALUTAPIENTRY *alutInit)( int *argc, char *argv[] );
+    void 	  (ALUTAPIENTRY *alutExit)( ALvoid );
+#ifndef MACINTOSH_AL
+    void      (ALUTAPIENTRY *alutLoadWAVFile)( ALbyte *file,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq,ALboolean *loop );
+    void      (ALUTAPIENTRY *alutLoadWAVMemory)( ALbyte *memory,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq,ALboolean *loop );
+#else
+    void      (ALUTAPIENTRY *alutLoadWAVFile( ALbyte *file,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq );
+    void      (ALUTAPIENTRY *alutLoadWAVMemory)( ALbyte *memory,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq );
+#endif
+    void      (ALUTAPIENTRY *alutUnloadWAV)( ALenum format,ALvoid *data,ALsizei size,ALsizei freq );
 
-#endif /* AL_NO_PROTOTYPES */
+#endif /* ALUT_NO_PROTOTYPES */
 
 #ifdef TARGET_OS_MAC
 #if TARGET_OS_MAC

Deleted: trunk/code/AL/aluttypes.h
===================================================================
--- trunk/code/AL/aluttypes.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/aluttypes.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -1,6 +0,0 @@
-#ifndef _ALUTTYPES_H_
-#define _ALUTTYPES_H_
-
-#define AL_PROVIDES_ALUT                          1
-
-#endif /* _ALUTTYPES_H_ */

Deleted: trunk/code/AL/alutypes.h
===================================================================
--- trunk/code/AL/alutypes.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/AL/alutypes.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -1,5 +0,0 @@
-#ifndef _ALUTYPES_H_
-#define _ALUTYPES_H_
-
-
-#endif /* _ALUTYPES_H_ */

Modified: trunk/code/client/qal.h
===================================================================
--- trunk/code/client/qal.h	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/client/qal.h	2005-12-01 20:53:28 UTC (rev 402)
@@ -32,8 +32,14 @@
 #define AL_NO_PROTOTYPES
 #define ALC_NO_PROTOTYPES
 #endif
+
+#if USE_LOCAL_HEADERS
 #include "../AL/al.h"
 #include "../AL/alc.h"
+#else
+#include <AL/al.h>
+#include <AL/alc.h>
+#endif
 
 #if USE_OPENAL_DLOPEN
 extern LPALENABLE qalEnable;

Modified: trunk/code/unix/Makefile
===================================================================
--- trunk/code/unix/Makefile	2005-12-01 20:45:01 UTC (rev 401)
+++ trunk/code/unix/Makefile	2005-12-01 20:53:28 UTC (rev 402)
@@ -70,6 +70,10 @@
 USE_OPENAL_DLOPEN=0
 endif
 
+ifndef USE_LOCAL_HEADERS
+USE_LOCAL_HEADERS=1
+endif
+
 ifndef BUILD_CLIENT
 BUILD_CLIENT=1
 endif
@@ -653,6 +657,10 @@
   BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\"
 endif
 
+ifeq ($(USE_LOCAL_HEADERS),1)
+  BASE_CFLAGS += -DUSE_LOCAL_HEADERS=1
+endif
+
 ifeq ($(GENERATE_DEPENDENCIES),1)
   ifeq ($(CC),gcc)
     DEPEND_CFLAGS=-MMD




More information about the quake3-commits mailing list