From 1b314e8934d24c57fdcad47fca9284254c98a14d Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Thu, 1 Dec 2005 20:53:28 +0000 Subject: [PATCH] * Updated AL headers * Added a Makefile option USE_LOCAL_HEADERS which can be disabled to use system headers if desired --- README | 26 +- code/AL/VERSION | 16 + code/AL/al.h | 792 ++++++++++++++++++++------------------------ code/AL/alc.h | 182 ++++++---- code/AL/alctypes.h | 98 ++++-- code/AL/altypes.h | 201 ++++------- code/AL/alu.h | 55 --- code/AL/alut.h | 88 +++-- code/AL/aluttypes.h | 6 - code/AL/alutypes.h | 5 - code/client/qal.h | 6 + code/unix/Makefile | 8 + 12 files changed, 690 insertions(+), 793 deletions(-) create mode 100644 code/AL/VERSION delete mode 100644 code/AL/alu.h delete mode 100644 code/AL/aluttypes.h delete mode 100644 code/AL/alutypes.h diff --git a/README b/README index 46c82615..d482eb51 100644 --- a/README +++ b/README @@ -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@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@icculus.org, please send all your patches to +the bugzilla: https://bugzilla.icculus.org, or join the mailing list (quake3-subscribe@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 @@ Compiling (Under Linux) 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 @@ follows: 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/code/AL/VERSION b/code/AL/VERSION new file mode 100644 index 00000000..1af4e3fb --- /dev/null +++ b/code/AL/VERSION @@ -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@opensource.creative.com:/usr/local/cvs-repository +login +(use password "guest") +$ cvs -d:pserver:guest@opensource.creative.com:/usr/local/cvs-repository +co -D "6 Aug 2005" openal + +SVN revision >= 374 +------------------- +Standard OpenAL 1.0 headers diff --git a/code/AL/al.h b/code/AL/al.h index 522cc5fc..9fd55989 100644 --- a/code/AL/al.h +++ b/code/AL/al.h @@ -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,526 +57,437 @@ extern "C" { #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. + * Query for the presence of an extension, and obtain any appropriate + * function pointers and enum values. */ -ALAPI ALboolean ALAPIENTRY alIsExtensionPresent( const ALubyte* fname ); +ALAPI ALboolean ALAPIENTRY alIsExtensionPresent( const ALchar* extname ); +ALAPI void* ALAPIENTRY alGetProcAddress( const ALchar* fname ); -/** - * Extension support. - * Obtain the address of a function (usually an extension) - * with the name fname. All addresses are context-independent. - */ -ALAPI void* ALAPIENTRY alGetProcAddress( const ALubyte* fname ); +ALAPI ALenum ALAPIENTRY alGetEnumValue( const ALchar* ename ); -/** - * Extension support. - * Obtain the integer value of an enumeration (usually an extension) with the name ename. - */ -ALAPI ALenum ALAPIENTRY alGetEnumValue( const ALubyte* ename ); - - - - - - -/** - * 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. - */ -ALAPI void ALAPIENTRY alListenerf( ALenum pname, ALfloat param ); - -ALAPI void ALAPIENTRY alListeneri( ALenum pname, ALint param ); - -/** - * - * Listener Position: ALfloat[3] - * Listener Velocity: ALfloat[3] - */ -ALAPI void ALAPIENTRY alListener3f( ALenum pname, - ALfloat f1, ALfloat f2, ALfloat f3 ); - -/** - * - * Listener Position: ALfloat[3] - * Listener Velocity: ALfloat[3] - * Listener Orientation: ALfloat[6] (forward and up vector). - */ -ALAPI void ALAPIENTRY alListenerfv( ALenum pname, ALfloat* param ); - /* - * Retrieve listener information. + * 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 alGetListeneri( ALenum pname, ALint* value ); -ALAPI void ALAPIENTRY alGetListenerf( ALenum pname, ALfloat* value ); +ALAPI void ALAPIENTRY alListenerf( ALenum param, ALfloat value ); -ALAPI void ALAPIENTRY alGetListeneriv( ALenum pname, ALint* value ); -ALAPI void ALAPIENTRY alGetListenerfv( ALenum pname, ALfloat* values ); +ALAPI void ALAPIENTRY alListener3f( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); + +ALAPI void ALAPIENTRY alListenerfv( ALenum param, const ALfloat* values ); + +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 ); + +/* + * Get Listener parameters + */ +ALAPI void ALAPIENTRY alGetListenerf( ALenum param, ALfloat* value ); + +ALAPI void ALAPIENTRY alGetListener3f( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 ); + +ALAPI void ALAPIENTRY alGetListenerfv( ALenum param, ALfloat* values ); + +ALAPI void ALAPIENTRY alGetListeneri( ALenum param, ALint* value ); + +ALAPI void ALAPIENTRY alGetListener3i( ALenum param, ALint *value1, ALint *value2, ALint *value3 ); + +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 alSource3i( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 ); + +ALAPI void ALAPIENTRY alSourceiv( ALuint sid, ALenum param, const ALint* values ); + +/* + * Get Source parameters + */ +ALAPI void ALAPIENTRY alGetSourcef( ALuint sid, ALenum param, ALfloat* value ); + +ALAPI void ALAPIENTRY alGetSource3f( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3); + +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 ); + + +/* + * Source vector based playback calls + */ + +/* 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 ); + +/* Pause a list of Sources */ +ALAPI void ALAPIENTRY alSourcePausev( ALsizei ns, const ALuint *sids ); + +/* + * Source based playback calls + */ + +/* Play, replay, or resume a Source */ ALAPI void ALAPIENTRY alSourcePlay( ALuint sid ); -/** - * Pause a source, - * temporarily remove it from the mixer list. - */ -ALAPI void ALAPIENTRY alSourcePause( ALuint sid ); +/* Stop a Source */ +ALAPI void ALAPIENTRY alSourceStop( ALuint sid ); -/** - * Rewind a source, - * set the source to play at the beginning. - */ +/* Rewind a Source (set playback postiton to beginning) */ ALAPI void ALAPIENTRY alSourceRewind( 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. +/* Pause a Source */ +ALAPI void ALAPIENTRY alSourcePause( ALuint sid ); + +/* + * Source Queuing */ -ALAPI void ALAPIENTRY alSourceStop( ALuint sid ); +ALAPI void ALAPIENTRY alSourceQueueBuffers( ALuint sid, ALsizei numEntries, const ALuint *bids ); + +ALAPI void ALAPIENTRY alSourceUnqueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids ); + /** * 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. + * 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 */ - - - -/** Buffer object generation. */ +/* Create Buffer objects */ ALAPI void ALAPIENTRY alGenBuffers( ALsizei n, ALuint* buffers ); -ALAPI void ALAPIENTRY alDeleteBuffers( ALsizei n, ALuint* buffers ); +/* 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 ); -ALAPI ALboolean ALAPIENTRY alIsBuffer( ALuint buffer ); +/* Specify the data to be copied into a buffer */ +ALAPI void ALAPIENTRY alBufferData( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq ); -/** - * Specify the data to be filled into a buffer. +/* + * Set Buffer parameters */ -ALAPI void ALAPIENTRY alBufferData( ALuint buffer, - ALenum format, - ALvoid* data, - ALsizei size, - ALsizei freq ); +ALAPI void ALAPIENTRY alBufferf( ALuint bid, ALenum param, ALfloat value ); -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); +ALAPI void ALAPIENTRY alBuffer3f( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); +ALAPI void ALAPIENTRY alBufferfv( ALuint bid, ALenum param, const ALfloat* values ); +ALAPI void ALAPIENTRY alBufferi( ALuint bid, ALenum param, ALint value ); -/** - * Frequency Domain Filters are band filters. - * Attenuation in Media (distance based) - * Reflection Material - * Occlusion Material (separating surface) - * - * Temporal Domain Filters: - * Early Reflections - * Late Reverb - * +ALAPI void ALAPIENTRY alBuffer3i( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 ); + +ALAPI void ALAPIENTRY alBufferiv( ALuint bid, ALenum param, const ALint* values ); + +/* + * Get Buffer parameters */ +ALAPI void ALAPIENTRY alGetBufferf( ALuint bid, ALenum param, ALfloat* value ); + +ALAPI void ALAPIENTRY alGetBuffer3f( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3); + +ALAPI void ALAPIENTRY alGetBufferfv( ALuint bid, ALenum param, ALfloat* values ); + +ALAPI void ALAPIENTRY alGetBufferi( ALuint bid, ALenum param, ALint* value ); + +ALAPI void ALAPIENTRY alGetBuffer3i( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3); + +ALAPI void ALAPIENTRY alGetBufferiv( ALuint bid, ALenum param, ALint* values ); - - -/** - * 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. - */ -ALAPI ALsizei ALAPIENTRY alGenEnvironmentIASIG( ALsizei n, ALuint* environs ); - -ALAPI void ALAPIENTRY alDeleteEnvironmentIASIG( ALsizei n, ALuint* environs ); - -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 - */ -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 +/* + * Global Parameters */ ALAPI void ALAPIENTRY alDopplerFactor( ALfloat value ); + ALAPI void ALAPIENTRY alDopplerVelocity( ALfloat value ); + +ALAPI void ALAPIENTRY alSpeedOfSound( ALfloat value ); + ALAPI void ALAPIENTRY alDistanceModel( ALenum distanceModel ); #else /* AL_NO_PROTOTYPES */ +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 ); -/** OpenAL Maintenance Functions */ +/* Type Definitions */ - 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 ); - - /** - * Extension support. - * Query existance of extension - */ - ALboolean (*alIsExtensionPresent)(const ALubyte* fname ); - - /** - * 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 ); - - - /** - * Extension support. - * Obtain the integer value of an enumeration (usually an extension) with the name ename. - */ - ALenum (*alGetEnumValue)( const ALubyte* ename ); - -/** - * 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 ); - - /** - * - * Listener Position: ALfloat[3] - * Listener Velocity: ALfloat[3] - * Listener Orientation: ALfloat[6] (forward and up vector). - */ - void (*alListenerfv)( ALenum pname, ALfloat* param ); - - /* - * 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. - */ - - /** Create Source objects. */ - void (*alGenSources)( ALsizei n, ALuint* sources ); - - /** Delete Source objects. */ - void (*alDeleteSources)( ALsizei n, ALuint* sources ); - - /** Verify a handle is a valid Source. */ - ALboolean (*alIsSource)( ALuint sid ); - - /** Set an integer parameter for a Source object. */ - void (*alSourcei)( ALuint sid, ALenum param, ALint value); - - /** Set a float parameter for a Source object. */ - void (*alSourcef)( ALuint sid, ALenum param, ALfloat value); - - /** 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. - */ - - /** Buffer object generation. */ - void (*alGenBuffers)( ALsizei n, ALuint* buffers ); - void (*alDeleteBuffers)( ALsizei n, ALuint* buffers ); - ALboolean (*alIsBuffer)( ALuint buffer ); - - /** - * Specify the data to be filled into a buffer. - */ - void (*alBufferData)( ALuint buffer, - ALenum format, - ALvoid* data, - ALsizei size, - ALsizei freq ); - - 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 ); - -/** - * 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 ); - - void (*alDopplerFactor)( ALfloat value ); - void (*alDopplerVelocity)( ALfloat value ); - void (*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 - * - */ +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 */ diff --git a/code/AL/alc.h b/code/AL/alc.h index 371ee1cc..980d8f1a 100644 --- a/code/AL/alc.h +++ b/code/AL/alc.h @@ -11,91 +11,147 @@ extern "C" { #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 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 ); + + +/* + * Device Management */ -ALCAPI ALCcontext * ALCAPIENTRY alcProcessContext( ALCcontext *alcHandle ); +ALCAPI ALCdevice * ALCAPIENTRY alcOpenDevice( const ALchar *devicename ); -/** - * Suspend processing on an asynchronous context, non-op on a - * synced context. +ALCAPI ALCboolean ALCAPIENTRY alcCloseDevice( ALCdevice *device ); + + +/* + * Error support. + * Obtain the most recent Context error */ -ALCAPI void ALCAPIENTRY alcSuspendContext( ALCcontext *alcHandle ); - -ALCAPI ALCenum ALCAPIENTRY alcDestroyContext( ALCcontext *alcHandle ); - -ALCAPI ALCenum ALCAPIENTRY alcGetError( ALCdevice *dev ); - -ALCAPI ALCcontext * ALCAPIENTRY alcGetCurrentContext( ALvoid ); - -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); - -ALCAPI ALCdevice* ALCAPIENTRY alcGetContextsDevice(ALCcontext *context); +ALCAPI ALCenum ALCAPIENTRY alcGetError( ALCdevice *device ); -/** +/* + * 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 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 diff --git a/code/AL/alctypes.h b/code/AL/alctypes.h index 39d428c7..181384b0 100644 --- a/code/AL/alctypes.h +++ b/code/AL/alctypes.h @@ -10,25 +10,77 @@ typedef void ALCcontext; 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 -/** - * followed by Hz - */ -#define ALC_FREQUENCY 0x100 +/* Boolean False. */ +#define ALC_FALSE 0 + +/* Boolean True. */ +#define ALC_TRUE 1 /** * followed by Hz */ -#define ALC_REFRESH 0x101 +#define ALC_FREQUENCY 0x1007 + +/** + * followed by Hz + */ +#define ALC_REFRESH 0x1008 /** * followed by AL_TRUE, AL_FALSE */ -#define ALC_SYNC 0x102 +#define ALC_SYNC 0x1009 + +/** + * followed by Num of requested Mono (3D) Sources + */ +#define ALC_MONO_SOURCES 0x1010 + +/** + * followed by Num of requested Stereo Sources + */ +#define ALC_STEREO_SOURCES 0x1011 /** * errors @@ -37,52 +89,54 @@ typedef int ALCenum; /** * 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 */ diff --git a/code/AL/altypes.h b/code/AL/altypes.h index c42e13b8..3ec959fd 100644 --- a/code/AL/altypes.h +++ b/code/AL/altypes.h @@ -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 float ALfloat; 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,14 +75,10 @@ typedef ALdouble ALclampd; /** 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. @@ -120,14 +128,6 @@ typedef ALdouble ALclampd; */ #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. @@ -148,14 +148,6 @@ typedef ALdouble ALclampd; */ #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 @@ -181,6 +173,14 @@ typedef ALdouble ALclampd; */ #define AL_ORIENTATION 0x100F +/** + * Specify the channel mask. (Creative) + * Type: ALuint + * Range: [0 - 255] + */ +#define AL_CHANNEL_MASK 0x3000 + + /** * Source state information. */ @@ -197,11 +197,22 @@ typedef ALdouble ALclampd; #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 @@ typedef ALdouble ALclampd; #define AL_BITS 0x2002 #define AL_CHANNELS 0x2003 #define AL_SIZE 0x2004 +#define AL_DATA 0x2005 /** * Buffer state. @@ -263,8 +275,9 @@ typedef ALdouble ALclampd; * 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 @@ typedef ALdouble ALclampd; * Invalid parameter passed to AL call. */ #define AL_ILLEGAL_ENUM 0xA002 +#define AL_INVALID_ENUM 0xA002 /** * Invalid enum parameter value. @@ -288,6 +302,8 @@ typedef ALdouble ALclampd; * Illegal call. */ #define AL_ILLEGAL_COMMAND 0xA004 +#define AL_INVALID_OPERATION 0xA004 + /** * No mojo. @@ -314,9 +330,9 @@ typedef ALdouble ALclampd; #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 @@ typedef ALdouble ALclampd; #define AL_DISTANCE_MODEL 0xD000 #define AL_INVERSE_DISTANCE 0xD001 #define AL_INVERSE_DISTANCE_CLAMPED 0xD002 - - -/** - * 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 +#define AL_LINEAR_DISTANCE 0xD003 +#define AL_LINEAR_DISTANCE_CLAMPED 0xD004 +#define AL_EXPONENT_DISTANCE 0xD005 +#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006 #endif diff --git a/code/AL/alu.h b/code/AL/alu.h deleted file mode 100644 index c60eb039..00000000 --- a/code/AL/alu.h +++ /dev/null @@ -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 -#include -#else -#include -#include -#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_ */ - diff --git a/code/AL/alut.h b/code/AL/alut.h index a6fbc171..e29ae582 100644 --- a/code/AL/alut.h +++ b/code/AL/alut.h @@ -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); - -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); +ALUTAPI void ALUTAPIENTRY alutInit(int *argc, char *argv[]); +ALUTAPI void ALUTAPIENTRY alutExit(ALvoid); +#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 diff --git a/code/AL/aluttypes.h b/code/AL/aluttypes.h deleted file mode 100644 index 4b118d96..00000000 --- a/code/AL/aluttypes.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _ALUTTYPES_H_ -#define _ALUTTYPES_H_ - -#define AL_PROVIDES_ALUT 1 - -#endif /* _ALUTTYPES_H_ */ diff --git a/code/AL/alutypes.h b/code/AL/alutypes.h deleted file mode 100644 index 82356c67..00000000 --- a/code/AL/alutypes.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef _ALUTYPES_H_ -#define _ALUTYPES_H_ - - -#endif /* _ALUTYPES_H_ */ diff --git a/code/client/qal.h b/code/client/qal.h index a84639ac..b9eb2fdb 100644 --- a/code/client/qal.h +++ b/code/client/qal.h @@ -32,8 +32,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define AL_NO_PROTOTYPES #define ALC_NO_PROTOTYPES #endif + +#if USE_LOCAL_HEADERS #include "../AL/al.h" #include "../AL/alc.h" +#else +#include +#include +#endif #if USE_OPENAL_DLOPEN extern LPALENABLE qalEnable; diff --git a/code/unix/Makefile b/code/unix/Makefile index b06c9d35..f1cf1f3e 100644 --- a/code/unix/Makefile +++ b/code/unix/Makefile @@ -70,6 +70,10 @@ ifndef USE_OPENAL_DLOPEN 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 @@ ifdef DEFAULT_BASEDIR 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