From f80a415898a9c0224bdb3e1bd8f6f5166242c1db Mon Sep 17 00:00:00 2001 From: terminx Date: Mon, 27 Jul 2009 05:34:05 +0000 Subject: [PATCH] this commit is also broken git-svn-id: https://svn.eduke32.com/eduke32@1469 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/AL/include/AL/al.h | 732 ------------------ polymer/eduke32/AL/include/AL/alc.h | 273 ------- polymer/eduke32/AL/include/AL/alctypes.h | 125 --- polymer/eduke32/AL/include/AL/altypes.h | 332 -------- polymer/eduke32/AL/include/ogg/ogg.h | 184 ----- polymer/eduke32/AL/include/ogg/os_types.h | 89 --- polymer/eduke32/AL/include/vorbis/codec.h | 233 ------ polymer/eduke32/AL/include/vorbis/vorbisenc.h | 93 --- .../eduke32/AL/include/vorbis/vorbisfile.h | 133 ---- polymer/eduke32/AL/lib/libOpenAL32.a | Bin 16866 -> 0 bytes polymer/eduke32/AL/lib/libogg.a | Bin 14064 -> 0 bytes polymer/eduke32/AL/lib/libvorbis.a | Bin 185728 -> 0 bytes polymer/eduke32/AL/lib/libvorbisfile.a | Bin 27172 -> 0 bytes polymer/eduke32/Makefile | 96 +-- polymer/eduke32/Makefile.deps | 4 +- polymer/eduke32/Makefile.msvc | 2 +- polymer/eduke32/eduke32.vcproj | 88 +-- 17 files changed, 47 insertions(+), 2337 deletions(-) delete mode 100644 polymer/eduke32/AL/include/AL/al.h delete mode 100644 polymer/eduke32/AL/include/AL/alc.h delete mode 100644 polymer/eduke32/AL/include/AL/alctypes.h delete mode 100644 polymer/eduke32/AL/include/AL/altypes.h delete mode 100644 polymer/eduke32/AL/include/ogg/ogg.h delete mode 100644 polymer/eduke32/AL/include/ogg/os_types.h delete mode 100644 polymer/eduke32/AL/include/vorbis/codec.h delete mode 100644 polymer/eduke32/AL/include/vorbis/vorbisenc.h delete mode 100644 polymer/eduke32/AL/include/vorbis/vorbisfile.h delete mode 100644 polymer/eduke32/AL/lib/libOpenAL32.a delete mode 100644 polymer/eduke32/AL/lib/libogg.a delete mode 100644 polymer/eduke32/AL/lib/libvorbis.a delete mode 100644 polymer/eduke32/AL/lib/libvorbisfile.a diff --git a/polymer/eduke32/AL/include/AL/al.h b/polymer/eduke32/AL/include/AL/al.h deleted file mode 100644 index 2e43d5929..000000000 --- a/polymer/eduke32/AL/include/AL/al.h +++ /dev/null @@ -1,732 +0,0 @@ -#ifndef AL_AL_H -#define AL_AL_H - - - -#if defined(__cplusplus) -extern "C" { -#endif - -#if defined(_WIN32) && !defined(_XBOX) - /* _OPENAL32LIB is deprecated */ - #if defined(AL_BUILD_LIBRARY) || defined (_OPENAL32LIB) - #define AL_API __declspec(dllexport) - #else - #define AL_API __declspec(dllimport) - #endif -#else - #define AL_API extern -#endif - -#if defined(_WIN32) - #define AL_APIENTRY __cdecl -#else - #define AL_APIENTRY -#endif - -#if TARGET_OS_MAC - #pragma export on -#endif - -/* The OPENAL, ALAPI, and ALAPIENTRY macros are deprecated, but are included for applications porting code - from AL 1.0 */ -#define OPENAL -#define ALAPI AL_API -#define ALAPIENTRY AL_APIENTRY - -#define AL_VERSION_1_0 -#define AL_VERSION_1_1 - - -/** 8-bit boolean */ -typedef char ALboolean; - -/** character */ -typedef char ALchar; - -/** signed 8-bit 2's complement integer */ -typedef char ALbyte; - -/** unsigned 8-bit integer */ -typedef unsigned char ALubyte; - -/** signed 16-bit 2's complement integer */ -typedef short ALshort; - -/** unsigned 16-bit integer */ -typedef unsigned short ALushort; - -/** signed 32-bit 2's complement integer */ -typedef int ALint; - -/** unsigned 32-bit integer */ -typedef unsigned int ALuint; - -/** non-negative 32-bit binary integer size */ -typedef unsigned ALsizei; - -/** enumerated 32-bit value */ -typedef int ALenum; - -/** 32-bit IEEE754 floating-point */ -typedef float ALfloat; - -/** 64-bit IEEE754 floating-point */ -typedef double ALdouble; - -/** void type (for opaque pointers only) */ -typedef void ALvoid; - - -/* Enumerant values begin at column 50. No tabs. */ - -/* bad value */ -#define AL_INVALID -1 - -#define AL_NONE 0 - -/* Boolean False. */ -#define AL_FALSE 0 - -/** Boolean True. */ -#define AL_TRUE 1 - -/** Indicate Source has relative coordinates. */ -#define AL_SOURCE_RELATIVE 0x202 - - - -/** - * Directional source, inner cone angle, in degrees. - * Range: [0-360] - * Default: 360 - */ -#define AL_CONE_INNER_ANGLE 0x1001 - -/** - * Directional source, outer cone angle, in degrees. - * Range: [0-360] - * Default: 360 - */ -#define AL_CONE_OUTER_ANGLE 0x1002 - -/** - * Specify the pitch to be applied, either at source, - * or on mixer results, at listener. - * Range: [0.5-2.0] - * Default: 1.0 - */ -#define AL_PITCH 0x1003 - -/** - * Specify the current location in three dimensional space. - * OpenAL, like OpenGL, uses a right handed coordinate system, - * where in a frontal default view X (thumb) points right, - * Y points up (index finger), and Z points towards the - * viewer/camera (middle finger). - * To switch from a left handed coordinate system, flip the - * sign on the Z coordinate. - * Listener position is always in the world coordinate system. - */ -#define AL_POSITION 0x1004 - -/** Specify the current direction. */ -#define AL_DIRECTION 0x1005 - -/** Specify the current velocity in three dimensional space. */ -#define AL_VELOCITY 0x1006 - -/** - * Indicate whether source is looping. - * Type: ALboolean? - * Range: [AL_TRUE, AL_FALSE] - * Default: FALSE. - */ -#define AL_LOOPING 0x1007 - -/** - * Indicate the buffer to provide sound samples. - * Type: ALuint. - * Range: any valid Buffer id. - */ -#define AL_BUFFER 0x1009 - -/** - * Indicate the gain (volume amplification) applied. - * Type: ALfloat. - * Range: ]0.0- ] - * A value of 1.0 means un-attenuated/unchanged. - * Each division by 2 equals an attenuation of -6dB. - * Each multiplicaton with 2 equals an amplification of +6dB. - * A value of 0.0 is meaningless with respect to a logarithmic - * scale; it is interpreted as zero volume - the channel - * is effectively disabled. - */ -#define AL_GAIN 0x100A - -/* - * Indicate minimum source attenuation - * Type: ALfloat - * Range: [0.0 - 1.0] - * - * Logarthmic - */ -#define AL_MIN_GAIN 0x100D - -/** - * Indicate maximum source attenuation - * Type: ALfloat - * Range: [0.0 - 1.0] - * - * Logarthmic - */ -#define AL_MAX_GAIN 0x100E - -/** - * Indicate listener orientation. - * - * at/up - */ -#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 -#define AL_INITIAL 0x1011 -#define AL_PLAYING 0x1012 -#define AL_PAUSED 0x1013 -#define AL_STOPPED 0x1014 - -/** - * Buffer Queue params - */ -#define AL_BUFFERS_QUEUED 0x1015 -#define AL_BUFFERS_PROCESSED 0x1016 - -/** - * Source buffer position information - */ -#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 -#define AL_FORMAT_MONO16 0x1101 -#define AL_FORMAT_STEREO8 0x1102 -#define AL_FORMAT_STEREO16 0x1103 - -/** - * source specific reference distance - * Type: ALfloat - * Range: 0.0 - +inf - * - * At 0.0, no distance attenuation occurs. Default is - * 1.0. - */ -#define AL_REFERENCE_DISTANCE 0x1020 - -/** - * source specific rolloff factor - * Type: ALfloat - * Range: 0.0 - +inf - * - */ -#define AL_ROLLOFF_FACTOR 0x1021 - -/** - * Directional source, outer cone gain. - * - * Default: 0.0 - * Range: [0.0 - 1.0] - * Logarithmic - */ -#define AL_CONE_OUTER_GAIN 0x1022 - -/** - * Indicate distance above which sources are not - * attenuated using the inverse clamped distance model. - * - * Default: +inf - * Type: ALfloat - * Range: 0.0 - +inf - */ -#define AL_MAX_DISTANCE 0x1023 - -/** - * Sound samples: frequency, in units of Hertz [Hz]. - * This is the number of samples per second. Half of the - * sample frequency marks the maximum significant - * frequency component. - */ -#define AL_FREQUENCY 0x2001 -#define AL_BITS 0x2002 -#define AL_CHANNELS 0x2003 -#define AL_SIZE 0x2004 - -/** - * Buffer state. - * - * Not supported for public use (yet). - */ -#define AL_UNUSED 0x2010 -#define AL_PENDING 0x2011 -#define AL_PROCESSED 0x2012 - - -/** Errors: No Error. */ -#define AL_NO_ERROR AL_FALSE - -/** - * Invalid Name paramater passed to AL call. - */ -#define AL_INVALID_NAME 0xA001 - -/** - * Invalid parameter passed to AL call. - */ -#define AL_ILLEGAL_ENUM 0xA002 -#define AL_INVALID_ENUM 0xA002 - -/** - * Invalid enum parameter value. - */ -#define AL_INVALID_VALUE 0xA003 - -/** - * Illegal call. - */ -#define AL_ILLEGAL_COMMAND 0xA004 -#define AL_INVALID_OPERATION 0xA004 - - -/** - * No mojo. - */ -#define AL_OUT_OF_MEMORY 0xA005 - - -/** Context strings: Vendor Name. */ -#define AL_VENDOR 0xB001 -#define AL_VERSION 0xB002 -#define AL_RENDERER 0xB003 -#define AL_EXTENSIONS 0xB004 - -/** Global tweakage. */ - -/** - * Doppler scale. Default 1.0 - */ -#define AL_DOPPLER_FACTOR 0xC000 - -/** - * Tweaks speed of propagation. - */ -#define AL_DOPPLER_VELOCITY 0xC001 - -/** - * Speed of Sound in units per second - */ -#define AL_SPEED_OF_SOUND 0xC003 - -/** - * Distance models - * - * used in conjunction with DistanceModel - * - * implicit: NONE, which disances distance attenuation. - */ -#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 - - -#if !defined(AL_NO_PROTOTYPES) - -/* - * Renderer State management - */ -AL_API void AL_APIENTRY alEnable( ALenum capability ); - -AL_API void AL_APIENTRY alDisable( ALenum capability ); - -AL_API ALboolean AL_APIENTRY alIsEnabled( ALenum capability ); - - -/* - * State retrieval - */ -AL_API const ALchar* AL_APIENTRY alGetString( ALenum param ); - -AL_API void AL_APIENTRY alGetBooleanv( ALenum param, ALboolean* data ); - -AL_API void AL_APIENTRY alGetIntegerv( ALenum param, ALint* data ); - -AL_API void AL_APIENTRY alGetFloatv( ALenum param, ALfloat* data ); - -AL_API void AL_APIENTRY alGetDoublev( ALenum param, ALdouble* data ); - -AL_API ALboolean AL_APIENTRY alGetBoolean( ALenum param ); - -AL_API ALint AL_APIENTRY alGetInteger( ALenum param ); - -AL_API ALfloat AL_APIENTRY alGetFloat( ALenum param ); - -AL_API ALdouble AL_APIENTRY alGetDouble( ALenum param ); - - -/* - * Error support. - * Obtain the most recent error generated in the AL state machine. - */ -AL_API ALenum AL_APIENTRY alGetError( void ); - - -/* - * Extension support. - * Query for the presence of an extension, and obtain any appropriate - * function pointers and enum values. - */ -AL_API ALboolean AL_APIENTRY alIsExtensionPresent( const ALchar* extname ); - -AL_API void* AL_APIENTRY alGetProcAddress( const ALchar* fname ); - -AL_API ALenum AL_APIENTRY 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 - */ -AL_API void AL_APIENTRY alListenerf( ALenum param, ALfloat value ); - -AL_API void AL_APIENTRY alListener3f( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); - -AL_API void AL_APIENTRY alListenerfv( ALenum param, const ALfloat* values ); - -AL_API void AL_APIENTRY alListeneri( ALenum param, ALint value ); - -AL_API void AL_APIENTRY alListener3i( ALenum param, ALint value1, ALint value2, ALint value3 ); - -AL_API void AL_APIENTRY alListeneriv( ALenum param, const ALint* values ); - -/* - * Get Listener parameters - */ -AL_API void AL_APIENTRY alGetListenerf( ALenum param, ALfloat* value ); - -AL_API void AL_APIENTRY alGetListener3f( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 ); - -AL_API void AL_APIENTRY alGetListenerfv( ALenum param, ALfloat* values ); - -AL_API void AL_APIENTRY alGetListeneri( ALenum param, ALint* value ); - -AL_API void AL_APIENTRY alGetListener3i( ALenum param, ALint *value1, ALint *value2, ALint *value3 ); - -AL_API void AL_APIENTRY alGetListeneriv( ALenum param, ALint* values ); - - -/** - * SOURCE - * 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 */ -AL_API void AL_APIENTRY alGenSources( ALsizei n, ALuint* sources ); - -/* Delete Source objects */ -AL_API void AL_APIENTRY alDeleteSources( ALsizei n, const ALuint* sources ); - -/* Verify a handle is a valid Source */ -AL_API ALboolean AL_APIENTRY alIsSource( ALuint sid ); - -/* - * Set Source parameters - */ -AL_API void AL_APIENTRY alSourcef( ALuint sid, ALenum param, ALfloat value ); - -AL_API void AL_APIENTRY alSource3f( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); - -AL_API void AL_APIENTRY alSourcefv( ALuint sid, ALenum param, const ALfloat* values ); - -AL_API void AL_APIENTRY alSourcei( ALuint sid, ALenum param, ALint value ); - -AL_API void AL_APIENTRY alSource3i( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 ); - -AL_API void AL_APIENTRY alSourceiv( ALuint sid, ALenum param, const ALint* values ); - -/* - * Get Source parameters - */ -AL_API void AL_APIENTRY alGetSourcef( ALuint sid, ALenum param, ALfloat* value ); - -AL_API void AL_APIENTRY alGetSource3f( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3); - -AL_API void AL_APIENTRY alGetSourcefv( ALuint sid, ALenum param, ALfloat* values ); - -AL_API void AL_APIENTRY alGetSourcei( ALuint sid, ALenum param, ALint* value ); - -AL_API void AL_APIENTRY alGetSource3i( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3); - -AL_API void AL_APIENTRY alGetSourceiv( ALuint sid, ALenum param, ALint* values ); - - -/* - * Source vector based playback calls - */ - -/* Play, replay, or resume (if paused) a list of Sources */ -AL_API void AL_APIENTRY alSourcePlayv( ALsizei ns, const ALuint *sids ); - -/* Stop a list of Sources */ -AL_API void AL_APIENTRY alSourceStopv( ALsizei ns, const ALuint *sids ); - -/* Rewind a list of Sources */ -AL_API void AL_APIENTRY alSourceRewindv( ALsizei ns, const ALuint *sids ); - -/* Pause a list of Sources */ -AL_API void AL_APIENTRY alSourcePausev( ALsizei ns, const ALuint *sids ); - -/* - * Source based playback calls - */ - -/* Play, replay, or resume a Source */ -AL_API void AL_APIENTRY alSourcePlay( ALuint sid ); - -/* Stop a Source */ -AL_API void AL_APIENTRY alSourceStop( ALuint sid ); - -/* Rewind a Source (set playback postiton to beginning) */ -AL_API void AL_APIENTRY alSourceRewind( ALuint sid ); - -/* Pause a Source */ -AL_API void AL_APIENTRY alSourcePause( ALuint sid ); - -/* - * Source Queuing - */ -AL_API void AL_APIENTRY alSourceQueueBuffers( ALuint sid, ALsizei numEntries, const ALuint *bids ); - -AL_API void AL_APIENTRY alSourceUnqueueBuffers( ALuint sid, ALsizei numEntries, ALuint *bids ); - - -/** - * 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 - */ - -/* Create Buffer objects */ -AL_API void AL_APIENTRY alGenBuffers( ALsizei n, ALuint* buffers ); - -/* Delete Buffer objects */ -AL_API void AL_APIENTRY alDeleteBuffers( ALsizei n, const ALuint* buffers ); - -/* Verify a handle is a valid Buffer */ -AL_API ALboolean AL_APIENTRY alIsBuffer( ALuint bid ); - -/* Specify the data to be copied into a buffer */ -AL_API void AL_APIENTRY alBufferData( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq ); - -/* - * Set Buffer parameters - */ -AL_API void AL_APIENTRY alBufferf( ALuint bid, ALenum param, ALfloat value ); - -AL_API void AL_APIENTRY alBuffer3f( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); - -AL_API void AL_APIENTRY alBufferfv( ALuint bid, ALenum param, const ALfloat* values ); - -AL_API void AL_APIENTRY alBufferi( ALuint bid, ALenum param, ALint value ); - -AL_API void AL_APIENTRY alBuffer3i( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 ); - -AL_API void AL_APIENTRY alBufferiv( ALuint bid, ALenum param, const ALint* values ); - -/* - * Get Buffer parameters - */ -AL_API void AL_APIENTRY alGetBufferf( ALuint bid, ALenum param, ALfloat* value ); - -AL_API void AL_APIENTRY alGetBuffer3f( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3); - -AL_API void AL_APIENTRY alGetBufferfv( ALuint bid, ALenum param, ALfloat* values ); - -AL_API void AL_APIENTRY alGetBufferi( ALuint bid, ALenum param, ALint* value ); - -AL_API void AL_APIENTRY alGetBuffer3i( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3); - -AL_API void AL_APIENTRY alGetBufferiv( ALuint bid, ALenum param, ALint* values ); - - -/* - * Global Parameters - */ -AL_API void AL_APIENTRY alDopplerFactor( ALfloat value ); - -AL_API void AL_APIENTRY alDopplerVelocity( ALfloat value ); - -AL_API void AL_APIENTRY alSpeedOfSound( ALfloat value ); - -AL_API void AL_APIENTRY alDistanceModel( ALenum distanceModel ); - -#else /* AL_NO_PROTOTYPES */ - -typedef void (AL_APIENTRY *LPALENABLE)( ALenum capability ); -typedef void (AL_APIENTRY *LPALDISABLE)( ALenum capability ); -typedef ALboolean (AL_APIENTRY *LPALISENABLED)( ALenum capability ); -typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)( ALenum param ); -typedef void (AL_APIENTRY *LPALGETBOOLEANV)( ALenum param, ALboolean* data ); -typedef void (AL_APIENTRY *LPALGETINTEGERV)( ALenum param, ALint* data ); -typedef void (AL_APIENTRY *LPALGETFLOATV)( ALenum param, ALfloat* data ); -typedef void (AL_APIENTRY *LPALGETDOUBLEV)( ALenum param, ALdouble* data ); -typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)( ALenum param ); -typedef ALint (AL_APIENTRY *LPALGETINTEGER)( ALenum param ); -typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)( ALenum param ); -typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)( ALenum param ); -typedef ALenum (AL_APIENTRY *LPALGETERROR)( void ); -typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar* extname ); -typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)( const ALchar* fname ); -typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)( const ALchar* ename ); -typedef void (AL_APIENTRY *LPALLISTENERF)( ALenum param, ALfloat value ); -typedef void (AL_APIENTRY *LPALLISTENER3F)( ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); -typedef void (AL_APIENTRY *LPALLISTENERFV)( ALenum param, const ALfloat* values ); -typedef void (AL_APIENTRY *LPALLISTENERI)( ALenum param, ALint value ); -typedef void (AL_APIENTRY *LPALLISTENER3I)( ALenum param, ALint value1, ALint value2, ALint value3 ); -typedef void (AL_APIENTRY *LPALLISTENERIV)( ALenum param, const ALint* values ); -typedef void (AL_APIENTRY *LPALGETLISTENERF)( ALenum param, ALfloat* value ); -typedef void (AL_APIENTRY *LPALGETLISTENER3F)( ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3 ); -typedef void (AL_APIENTRY *LPALGETLISTENERFV)( ALenum param, ALfloat* values ); -typedef void (AL_APIENTRY *LPALGETLISTENERI)( ALenum param, ALint* value ); -typedef void (AL_APIENTRY *LPALGETLISTENER3I)( ALenum param, ALint *value1, ALint *value2, ALint *value3 ); -typedef void (AL_APIENTRY *LPALGETLISTENERIV)( ALenum param, ALint* values ); -typedef void (AL_APIENTRY *LPALGENSOURCES)( ALsizei n, ALuint* sources ); -typedef void (AL_APIENTRY *LPALDELETESOURCES)( ALsizei n, const ALuint* sources ); -typedef ALboolean (AL_APIENTRY *LPALISSOURCE)( ALuint sid ); -typedef void (AL_APIENTRY *LPALSOURCEF)( ALuint sid, ALenum param, ALfloat value); -typedef void (AL_APIENTRY *LPALSOURCE3F)( ALuint sid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); -typedef void (AL_APIENTRY *LPALSOURCEFV)( ALuint sid, ALenum param, const ALfloat* values ); -typedef void (AL_APIENTRY *LPALSOURCEI)( ALuint sid, ALenum param, ALint value); -typedef void (AL_APIENTRY *LPALSOURCE3I)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 ); -typedef void (AL_APIENTRY *LPALSOURCEIV)( ALuint sid, ALenum param, const ALint* values ); -typedef void (AL_APIENTRY *LPALGETSOURCEF)( ALuint sid, ALenum param, ALfloat* value ); -typedef void (AL_APIENTRY *LPALGETSOURCE3F)( ALuint sid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3); -typedef void (AL_APIENTRY *LPALGETSOURCEFV)( ALuint sid, ALenum param, ALfloat* values ); -typedef void (AL_APIENTRY *LPALGETSOURCEI)( ALuint sid, ALenum param, ALint* value ); -typedef void (AL_APIENTRY *LPALGETSOURCE3I)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3); -typedef void (AL_APIENTRY *LPALGETSOURCEIV)( ALuint sid, ALenum param, ALint* values ); -typedef void (AL_APIENTRY *LPALSOURCEPLAYV)( ALsizei ns, const ALuint *sids ); -typedef void (AL_APIENTRY *LPALSOURCESTOPV)( ALsizei ns, const ALuint *sids ); -typedef void (AL_APIENTRY *LPALSOURCEREWINDV)( ALsizei ns, const ALuint *sids ); -typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)( ALsizei ns, const ALuint *sids ); -typedef void (AL_APIENTRY *LPALSOURCEPLAY)( ALuint sid ); -typedef void (AL_APIENTRY *LPALSOURCESTOP)( ALuint sid ); -typedef void (AL_APIENTRY *LPALSOURCEREWIND)( ALuint sid ); -typedef void (AL_APIENTRY *LPALSOURCEPAUSE)( ALuint sid ); -typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, const ALuint *bids ); -typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint sid, ALsizei numEntries, ALuint *bids ); -typedef void (AL_APIENTRY *LPALGENBUFFERS)( ALsizei n, ALuint* buffers ); -typedef void (AL_APIENTRY *LPALDELETEBUFFERS)( ALsizei n, const ALuint* buffers ); -typedef ALboolean (AL_APIENTRY *LPALISBUFFER)( ALuint bid ); -typedef void (AL_APIENTRY *LPALBUFFERDATA)( ALuint bid, ALenum format, const ALvoid* data, ALsizei size, ALsizei freq ); -typedef void (AL_APIENTRY *LPALBUFFERF)( ALuint bid, ALenum param, ALfloat value); -typedef void (AL_APIENTRY *LPALBUFFER3F)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 ); -typedef void (AL_APIENTRY *LPALBUFFERFV)( ALuint bid, ALenum param, const ALfloat* values ); -typedef void (AL_APIENTRY *LPALBUFFERI)( ALuint bid, ALenum param, ALint value); -typedef void (AL_APIENTRY *LPALBUFFER3I)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 ); -typedef void (AL_APIENTRY *LPALBUFFERIV)( ALuint bid, ALenum param, const ALint* values ); -typedef void (AL_APIENTRY *LPALGETBUFFERF)( ALuint bid, ALenum param, ALfloat* value ); -typedef void (AL_APIENTRY *LPALGETBUFFER3F)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3); -typedef void (AL_APIENTRY *LPALGETBUFFERFV)( ALuint bid, ALenum param, ALfloat* values ); -typedef void (AL_APIENTRY *LPALGETBUFFERI)( ALuint bid, ALenum param, ALint* value ); -typedef void (AL_APIENTRY *LPALGETBUFFER3I)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3); -typedef void (AL_APIENTRY *LPALGETBUFFERIV)( ALuint bid, ALenum param, ALint* values ); -typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)( ALfloat value ); -typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)( ALfloat value ); -typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)( ALfloat value ); -typedef void (AL_APIENTRY *LPALDISTANCEMODEL)( ALenum distanceModel ); - -#endif /* AL_NO_PROTOTYPES */ - -#if TARGET_OS_MAC - #pragma export off -#endif - -#if defined(__cplusplus) -} /* extern "C" */ -#endif - -#endif /* AL_AL_H */ diff --git a/polymer/eduke32/AL/include/AL/alc.h b/polymer/eduke32/AL/include/AL/alc.h deleted file mode 100644 index d75841efa..000000000 --- a/polymer/eduke32/AL/include/AL/alc.h +++ /dev/null @@ -1,273 +0,0 @@ -#ifndef AL_ALC_H -#define AL_ALC_H - -#if defined(__cplusplus) -extern "C" { -#endif - -#if defined(_WIN32) && !defined(_XBOX) - /* _OPENAL32LIB is deprecated */ - #if defined(AL_BUILD_LIBRARY) || defined (_OPENAL32LIB) - #define ALC_API __declspec(dllexport) - #else - #define ALC_API __declspec(dllimport) - #endif -#else - #define ALC_API extern -#endif - -#if defined(_WIN32) - #define ALC_APIENTRY __cdecl -#else - #define ALC_APIENTRY -#endif - -#if TARGET_OS_MAC - #pragma export on -#endif - -/* The ALCAPI, and ALCAPIENTRY macros are deprecated, but are included for applications porting code - from AL 1.0 */ -#define ALCAPI ALC_API -#define ALCAPIENTRY ALC_APIENTRY - -#define ALC_VERSION_0_1 1 - -typedef struct ALCdevice_struct ALCdevice; -typedef struct ALCcontext_struct ALCcontext; - - -/** 8-bit boolean */ -typedef char ALCboolean; - -/** character */ -typedef char ALCchar; - -/** signed 8-bit 2's complement integer */ -typedef char ALCbyte; - -/** unsigned 8-bit integer */ -typedef unsigned char ALCubyte; - -/** signed 16-bit 2's complement integer */ -typedef short ALCshort; - -/** unsigned 16-bit integer */ -typedef unsigned short ALCushort; - -/** signed 32-bit 2's complement integer */ -typedef int ALCint; - -/** unsigned 32-bit integer */ -typedef unsigned int ALCuint; - -/** non-negative 32-bit binary integer size */ -typedef int ALCsizei; - -/** enumerated 32-bit value */ -typedef int ALCenum; - -/** 32-bit IEEE754 floating-point */ -typedef float ALCfloat; - -/** 64-bit IEEE754 floating-point */ -typedef double ALCdouble; - -/** void type (for opaque pointers only) */ -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 Hz - */ -#define ALC_FREQUENCY 0x1007 - -/** - * followed by Hz - */ -#define ALC_REFRESH 0x1008 - -/** - * followed by AL_TRUE, AL_FALSE - */ -#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 - */ - -/** - * No error - */ -#define ALC_NO_ERROR ALC_FALSE - -/** - * No device - */ -#define ALC_INVALID_DEVICE 0xA001 - -/** - * invalid context ID - */ -#define ALC_INVALID_CONTEXT 0xA002 - -/** - * bad enum - */ -#define ALC_INVALID_ENUM 0xA003 - -/** - * bad value - */ -#define ALC_INVALID_VALUE 0xA004 - -/** - * Out of memory. - */ -#define ALC_OUT_OF_MEMORY 0xA005 - - -/** - * The Specifier string for default device - */ -#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004 -#define ALC_DEVICE_SPECIFIER 0x1005 -#define ALC_EXTENSIONS 0x1006 - -#define ALC_MAJOR_VERSION 0x1000 -#define ALC_MINOR_VERSION 0x1001 - -#define ALC_ATTRIBUTES_SIZE 0x1002 -#define ALC_ALL_ATTRIBUTES 0x1003 - -/** - * Capture extension - */ -#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310 -#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311 -#define ALC_CAPTURE_SAMPLES 0x312 - - -#if !defined(ALC_NO_PROTOTYPES) - -/* - * Context Management - */ -ALC_API ALCcontext * ALC_APIENTRY alcCreateContext( ALCdevice *device, const ALCint* attrlist ); - -ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent( ALCcontext *context ); - -ALC_API void ALC_APIENTRY alcProcessContext( ALCcontext *context ); - -ALC_API void ALC_APIENTRY alcSuspendContext( ALCcontext *context ); - -ALC_API void ALC_APIENTRY alcDestroyContext( ALCcontext *context ); - -ALC_API ALCcontext * ALC_APIENTRY alcGetCurrentContext( ALCvoid ); - -ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice( ALCcontext *context ); - - -/* - * Device Management - */ -ALC_API ALCdevice * ALC_APIENTRY alcOpenDevice( const ALCchar *devicename ); - -ALC_API ALCboolean ALC_APIENTRY alcCloseDevice( ALCdevice *device ); - - -/* - * Error support. - * Obtain the most recent Context error - */ -ALC_API ALCenum ALC_APIENTRY alcGetError( ALCdevice *device ); - - -/* - * Extension support. - * Query for the presence of an extension, and obtain any appropriate - * function pointers and enum values. - */ -ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent( ALCdevice *device, const ALCchar *extname ); - -ALC_API void * ALC_APIENTRY alcGetProcAddress( ALCdevice *device, const ALCchar *funcname ); - -ALC_API ALCenum ALC_APIENTRY alcGetEnumValue( ALCdevice *device, const ALCchar *enumname ); - - -/* - * Query functions - */ -ALC_API const ALCchar * ALC_APIENTRY alcGetString( ALCdevice *device, ALCenum param ); - -ALC_API void ALC_APIENTRY alcGetIntegerv( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *data ); - - -/* - * Capture functions - */ -ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize ); - -ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice( ALCdevice *device ); - -ALC_API void ALC_APIENTRY alcCaptureStart( ALCdevice *device ); - -ALC_API void ALC_APIENTRY alcCaptureStop( ALCdevice *device ); - -ALC_API void ALC_APIENTRY alcCaptureSamples( ALCdevice *device, ALCvoid *buffer, ALCsizei samples ); - -#else /* ALC_NO_PROTOTYPES */ - -typedef ALCcontext * (ALC_APIENTRY *LPALCCREATECONTEXT) (ALCdevice *device, const ALCint *attrlist); -typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)( ALCcontext *context ); -typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)( ALCcontext *context ); -typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)( ALCcontext *context ); -typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)( ALCcontext *context ); -typedef ALCcontext * (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)( ALCvoid ); -typedef ALCdevice * (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)( ALCcontext *context ); -typedef ALCdevice * (ALC_APIENTRY *LPALCOPENDEVICE)( const ALCchar *devicename ); -typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)( ALCdevice *device ); -typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)( ALCdevice *device ); -typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)( ALCdevice *device, const ALCchar *extname ); -typedef void * (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname ); -typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname ); -typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)( ALCdevice *device, ALCenum param ); -typedef void (ALC_APIENTRY *LPALCGETINTEGERV)( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *dest ); -typedef ALCdevice * (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize ); -typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)( ALCdevice *device ); -typedef void (ALC_APIENTRY *LPALCCAPTURESTART)( ALCdevice *device ); -typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)( ALCdevice *device ); -typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)( ALCdevice *device, ALCvoid *buffer, ALCsizei samples ); - -#endif /* ALC_NO_PROTOTYPES */ - -#if TARGET_OS_MAC - #pragma export off -#endif - -#if defined(__cplusplus) -} -#endif - -#endif /* AL_ALC_H */ diff --git a/polymer/eduke32/AL/include/AL/alctypes.h b/polymer/eduke32/AL/include/AL/alctypes.h deleted file mode 100644 index c04eb4469..000000000 --- a/polymer/eduke32/AL/include/AL/alctypes.h +++ /dev/null @@ -1,125 +0,0 @@ -#ifndef _ALCTYPES_H_ -#define _ALCTYPES_H_ - -/** - * OpenAL cross platform audio library - * Copyright (C) 1999-2000 by authors. - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * Or go to http://www.gnu.org/copyleft/lgpl.html - */ - - -#ifdef __cplusplus -extern "C" { -#endif - -/** ALC boolean type. */ -typedef char ALCboolean; - -/** ALC 8bit signed byte. */ -typedef char ALCbyte; - -/** ALC 8bit unsigned byte. */ -typedef unsigned char ALCubyte; - -/** 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 unsigned int ALCsizei; - -/** ALC void type */ -typedef void ALCvoid; - -/** ALC enumerations. */ -typedef int ALCenum; - -/* Bad value. */ -#define ALC_INVALID (-1) - -/* Boolean False. */ -#define ALC_FALSE 0 - -/* Boolean True. */ -#define ALC_TRUE 1 - -/** Errors: No Error. */ -#define ALC_NO_ERROR ALC_FALSE - -#define ALC_MAJOR_VERSION 0x1000 -#define ALC_MINOR_VERSION 0x1001 -#define ALC_ATTRIBUTES_SIZE 0x1002 -#define ALC_ALL_ATTRIBUTES 0x1003 - -#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004 -#define ALC_DEVICE_SPECIFIER 0x1005 -#define ALC_EXTENSIONS 0x1006 - -#define ALC_FREQUENCY 0x1007 -#define ALC_REFRESH 0x1008 -#define ALC_SYNC 0x1009 - -/** - * The device argument does not name a valid dvice. - */ -#define ALC_INVALID_DEVICE 0xA001 - -/** - * The context argument does not name a valid context. - */ -#define ALC_INVALID_CONTEXT 0xA002 - -/** - * A function was called at inappropriate time, - * or in an inappropriate way, causing an illegal state. - * This can be an incompatible ALenum, object ID, - * and/or function. - */ -#define ALC_INVALID_ENUM 0xA003 - -/** - * Illegal value passed as an argument to an AL call. - * Applies to parameter values, but not to enumerations. - */ -#define ALC_INVALID_VALUE 0xA004 - -/** - * A function could not be completed, - * because there is not enough memory available. - */ -#define ALC_OUT_OF_MEMORY 0xA005 - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/polymer/eduke32/AL/include/AL/altypes.h b/polymer/eduke32/AL/include/AL/altypes.h deleted file mode 100644 index 9cb02e234..000000000 --- a/polymer/eduke32/AL/include/AL/altypes.h +++ /dev/null @@ -1,332 +0,0 @@ -#ifndef _ALTYPES_H_ -#define _ALTYPES_H_ - -/** - * OpenAL cross platform audio library - * Copyright (C) 1999-2000 by authors. - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * Or go to http://www.gnu.org/copyleft/lgpl.html - */ - - -#ifdef __cplusplus -extern "C" { -#endif - -/** OpenAL boolean type. */ -typedef char ALboolean; - -/** OpenAL 8bit signed byte. */ -typedef char ALbyte; - -/** OpenAL 8bit unsigned byte. */ -typedef unsigned char ALubyte; - -/** OpenAL 16bit signed short integer type. */ -typedef short ALshort; - -/** OpenAL 16bit unsigned short integer type. */ -typedef unsigned short ALushort; - -/** OpenAL 32bit unsigned integer type. */ -typedef unsigned ALuint; - -/** OpenAL 32bit signed integer type. */ -typedef int ALint; - -/** OpenAL 32bit floating point type. */ -typedef float ALfloat; - -/** OpenAL 64bit double point type. */ -typedef double ALdouble; - -/** OpenAL 32bit type. */ -typedef unsigned int ALsizei; - -/** OpenAL void type */ -typedef void ALvoid; - -/** OpenAL enumerations. */ -typedef int ALenum; - -/* Bad value. */ -#define AL_INVALID (-1) - -/* Disable value. */ -#define AL_NONE 0 - -/* Boolean False. */ -#define AL_FALSE 0 - -/* Boolean True. */ -#define AL_TRUE 1 - -/** - * Indicate the type of AL_SOURCE. - * Sources can be spatialized - */ -#define AL_SOURCE_TYPE 0x200 - -/** Indicate source has absolute coordinates. */ -#define AL_SOURCE_ABSOLUTE 0x201 - -/** Indicate Source has listener relative coordinates. */ -#define AL_SOURCE_RELATIVE 0x202 - -/** - * Directional source, inner cone angle, in degrees. - * Range: [0-360] - * Default: 360 - */ -#define AL_CONE_INNER_ANGLE 0x1001 - -/** - * Directional source, outer cone angle, in degrees. - * Range: [0-360] - * Default: 360 - */ -#define AL_CONE_OUTER_ANGLE 0x1002 - -/** - * Specify the pitch to be applied, either at source, - * or on mixer results, at listener. - * Range: [0.5-2.0] - * Default: 1.0 - */ -#define AL_PITCH 0x1003 - -/** - * Specify the current location in three dimensional space. - * OpenAL, like OpenGL, uses a right handed coordinate system, - * where in a frontal default view X (thumb) points right, - * Y points up (index finger), and Z points towards the - * viewer/camera (middle finger). - * To switch from a left handed coordinate system, flip the - * sign on the Z coordinate. - * Listener position is always in the world coordinate system. - */ -#define AL_POSITION 0x1004 - -/** Specify the current direction as forward vector. */ -#define AL_DIRECTION 0x1005 - -/** Specify the current velocity in three dimensional space. */ -#define AL_VELOCITY 0x1006 - -/** - * Indicate whether source has to loop infinite. - * Type: ALboolean - * Range: [AL_TRUE, AL_FALSE] - * Default: AL_FALSE - */ -#define AL_LOOPING 0x1007 - -/** - * Indicate the buffer to provide sound samples. - * Type: ALuint. - * Range: any valid Buffer id. - */ -#define AL_BUFFER 0x1009 - -/** - * Indicate the gain (volume amplification) applied. - * Type: ALfloat. - * Range: ]0.0- ] - * A value of 1.0 means un-attenuated/unchanged. - * Each division by 2 equals an attenuation of -6dB. - * Each multiplicaton with 2 equals an amplification of +6dB. - * A value of 0.0 is meaningless with respect to a logarithmic - * scale; it is interpreted as zero volume - the channel - * is effectively disabled. - */ -#define AL_GAIN 0x100A - -/** - * Indicate minimum source attenuation. - * Type: ALfloat - * Range: [0.0 - 1.0] - */ -#define AL_MIN_GAIN 0x100D - -/** - * Indicate maximum source attenuation. - * Type: ALfloat - * Range: [0.0 - 1.0] - */ -#define AL_MAX_GAIN 0x100E - -/** - * Specify the current orientation. - * Type: ALfv6 (at/up) - * Range: N/A - */ -#define AL_ORIENTATION 0x100F - -/* byte offset into source (in canon format). -1 if source - * is not playing. Don't set this, get this. - * - * Type: ALfloat - * Range: [0.0 - ] - * Default: 1.0 - */ -#define AL_REFERENCE_DISTANCE 0x1020 - - /** - * Indicate the rolloff factor for the source. - * Type: ALfloat - * Range: [0.0 - ] - * Default: 1.0 - */ -#define AL_ROLLOFF_FACTOR 0x1021 - -/** - * Indicate the gain (volume amplification) applied. - * Type: ALfloat. - * Range: ]0.0- ] - * A value of 1.0 means un-attenuated/unchanged. - * Each division by 2 equals an attenuation of -6dB. - * Each multiplicaton with 2 equals an amplification of +6dB. - * A value of 0.0 is meaningless with respect to a logarithmic - * scale; it is interpreted as zero volume - the channel - * is effectively disabled. - */ -#define AL_CONE_OUTER_GAIN 0x1022 - -/** - * Specify the maximum distance. - * Type: ALfloat - * Range: [0.0 - ] - */ -#define AL_MAX_DISTANCE 0x1023 - -/** - * Specify the channel mask. (Creative) - * Type: ALuint - * Range: [0 - 255] - */ -#define AL_CHANNEL_MASK 0x3000 - -/** - * Source state information - */ -#define AL_SOURCE_STATE 0x1010 -#define AL_INITIAL 0x1011 -#define AL_PLAYING 0x1012 -#define AL_PAUSED 0x1013 -#define AL_STOPPED 0x1014 - -/** - * Buffer Queue params - */ -#define AL_BUFFERS_QUEUED 0x1015 -#define AL_BUFFERS_PROCESSED 0x1016 - -/** Sound buffers: format specifier. */ -#define AL_FORMAT_MONO8 0x1100 -#define AL_FORMAT_MONO16 0x1101 -#define AL_FORMAT_STEREO8 0x1102 -#define AL_FORMAT_STEREO16 0x1103 - -/** - * Sound buffers: frequency, in units of Hertz [Hz]. - * This is the number of samples per second. Half of the - * sample frequency marks the maximum significant - * frequency component. - */ -#define AL_FREQUENCY 0x2001 -#define AL_BITS 0x2002 -#define AL_CHANNELS 0x2003 -#define AL_SIZE 0x2004 -#define AL_DATA 0x2005 - -/** - * Buffer state. - * - * Not supported for public use (yet). - */ -#define AL_UNUSED 0x2010 -#define AL_PENDING 0x2011 -#define AL_PROCESSED 0x2012 - -/** Errors: No Error. */ -#define AL_NO_ERROR AL_FALSE - -/** - * Illegal name passed as an argument to an AL call. - */ -#define AL_INVALID_NAME 0xA001 - -/** - * Illegal enum passed as an argument to an AL call. - */ -#define AL_INVALID_ENUM 0xA002 -/** - * Illegal value passed as an argument to an AL call. - * Applies to parameter values, but not to enumerations. - */ -#define AL_INVALID_VALUE 0xA003 - -/** - * A function was called at inappropriate time, - * or in an inappropriate way, causing an illegal state. - * This can be an incompatible ALenum, object ID, - * and/or function. - */ -#define AL_INVALID_OPERATION 0xA004 - -/** - * A function could not be completed, - * because there is not enough memory available. - */ -#define AL_OUT_OF_MEMORY 0xA005 - -/** Context strings: Vendor Name. */ -#define AL_VENDOR 0xB001 -#define AL_VERSION 0xB002 -#define AL_RENDERER 0xB003 -#define AL_EXTENSIONS 0xB004 - -/** Global tweakage. */ - -/** - * Doppler scale. Default 1.0 - */ -#define AL_DOPPLER_FACTOR 0xC000 - -/** - * Doppler velocity. Default 1.0 - */ -#define AL_DOPPLER_VELOCITY 0xC001 - -/** - * Distance model. Default AL_INVERSE_DISTANCE_CLAMPED - */ -#define AL_DISTANCE_MODEL 0xD000 - -/** Distance models. */ - -#define AL_INVERSE_DISTANCE 0xD001 -#define AL_INVERSE_DISTANCE_CLAMPED 0xD002 - - /** - * enables - */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/polymer/eduke32/AL/include/ogg/ogg.h b/polymer/eduke32/AL/include/ogg/ogg.h deleted file mode 100644 index 1adc85b53..000000000 --- a/polymer/eduke32/AL/include/ogg/ogg.h +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: toplevel libogg include - last mod: $Id: ogg.h,v 1.18 2002/07/13 10:28:33 giles Exp $ - - ********************************************************************/ -#ifndef _OGG_H -#define _OGG_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct { - long endbyte; - int endbit; - - unsigned char *buffer; - unsigned char *ptr; - long storage; -} oggpack_buffer; - -/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/ - -typedef struct { - unsigned char *header; - long header_len; - unsigned char *body; - long body_len; -} ogg_page; - -/* ogg_stream_state contains the current encode/decode state of a logical - Ogg bitstream **********************************************************/ - -typedef struct { - unsigned char *body_data; /* bytes from packet bodies */ - long body_storage; /* storage elements allocated */ - long body_fill; /* elements stored; fill mark */ - long body_returned; /* elements of fill returned */ - - - int *lacing_vals; /* The values that will go to the segment table */ - ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact - this way, but it is simple coupled to the - lacing fifo */ - long lacing_storage; - long lacing_fill; - long lacing_packet; - long lacing_returned; - - unsigned char header[282]; /* working space for header encode */ - int header_fill; - - int e_o_s; /* set when we have buffered the last packet in the - logical bitstream */ - int b_o_s; /* set after we've written the initial page - of a logical bitstream */ - long serialno; - long pageno; - ogg_int64_t packetno; /* sequence number for decode; the framing - knows where there's a hole in the data, - but we need coupling so that the codec - (which is in a seperate abstraction - layer) also knows about the gap */ - ogg_int64_t granulepos; - -} ogg_stream_state; - -/* ogg_packet is used to encapsulate the data and metadata belonging - to a single raw Ogg/Vorbis packet *************************************/ - -typedef struct { - unsigned char *packet; - long bytes; - long b_o_s; - long e_o_s; - - ogg_int64_t granulepos; - - ogg_int64_t packetno; /* sequence number for decode; the framing - knows where there's a hole in the data, - but we need coupling so that the codec - (which is in a seperate abstraction - layer) also knows about the gap */ -} ogg_packet; - -typedef struct { - unsigned char *data; - int storage; - int fill; - int returned; - - int unsynced; - int headerbytes; - int bodybytes; -} ogg_sync_state; - -/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ - -extern void oggpack_writeinit(oggpack_buffer *b); -extern void oggpack_writetrunc(oggpack_buffer *b,long bits); -extern void oggpack_writealign(oggpack_buffer *b); -extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); -extern void oggpack_reset(oggpack_buffer *b); -extern void oggpack_writeclear(oggpack_buffer *b); -extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); -extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); -extern long oggpack_look(oggpack_buffer *b,int bits); -extern long oggpack_look1(oggpack_buffer *b); -extern void oggpack_adv(oggpack_buffer *b,int bits); -extern void oggpack_adv1(oggpack_buffer *b); -extern long oggpack_read(oggpack_buffer *b,int bits); -extern long oggpack_read1(oggpack_buffer *b); -extern long oggpack_bytes(oggpack_buffer *b); -extern long oggpack_bits(oggpack_buffer *b); -extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); - -/* Ogg BITSTREAM PRIMITIVES: encoding **************************/ - -extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); -extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); - -/* Ogg BITSTREAM PRIMITIVES: decoding **************************/ - -extern int ogg_sync_init(ogg_sync_state *oy); -extern int ogg_sync_clear(ogg_sync_state *oy); -extern int ogg_sync_reset(ogg_sync_state *oy); -extern int ogg_sync_destroy(ogg_sync_state *oy); - -extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); -extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); -extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); -extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); -extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); -extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); - -/* Ogg BITSTREAM PRIMITIVES: general ***************************/ - -extern int ogg_stream_init(ogg_stream_state *os,int serialno); -extern int ogg_stream_clear(ogg_stream_state *os); -extern int ogg_stream_reset(ogg_stream_state *os); -extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); -extern int ogg_stream_destroy(ogg_stream_state *os); -extern int ogg_stream_eos(ogg_stream_state *os); - -extern void ogg_page_checksum_set(ogg_page *og); - -extern int ogg_page_version(ogg_page *og); -extern int ogg_page_continued(ogg_page *og); -extern int ogg_page_bos(ogg_page *og); -extern int ogg_page_eos(ogg_page *og); -extern ogg_int64_t ogg_page_granulepos(ogg_page *og); -extern int ogg_page_serialno(ogg_page *og); -extern long ogg_page_pageno(ogg_page *og); -extern int ogg_page_packets(ogg_page *og); - -extern void ogg_packet_clear(ogg_packet *op); - - -#ifdef __cplusplus -} -#endif - -#endif /* _OGG_H */ - - - - - - diff --git a/polymer/eduke32/AL/include/ogg/os_types.h b/polymer/eduke32/AL/include/ogg/os_types.h deleted file mode 100644 index 78da858f7..000000000 --- a/polymer/eduke32/AL/include/ogg/os_types.h +++ /dev/null @@ -1,89 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os_types.h,v 1.11 2002/07/19 08:25:51 msmith Exp $ - - ********************************************************************/ -#ifndef _OS_TYPES_H -#define _OS_TYPES_H - -/* make it easy on the folks that want to compile the libs with a - different malloc than stdlib */ -#define _ogg_malloc malloc -#define _ogg_calloc calloc -#define _ogg_realloc realloc -#define _ogg_free free - -#ifdef _WIN32 - -# ifndef __GNUC__ - /* MSVC/Borland */ - typedef __int64 ogg_int64_t; - typedef __int32 ogg_int32_t; - typedef unsigned __int32 ogg_uint32_t; - typedef __int16 ogg_int16_t; -# else - /* Cygwin */ -/* #include <_G_config.h> - typedef _G_int64_t ogg_int64_t; - typedef _G_int32_t ogg_int32_t; - typedef _G_uint32_t ogg_uint32_t; - typedef _G_int16_t ogg_int16_t;*/ - typedef long long ogg_int64_t; -/* typedef signed int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef signed short ogg_int16_t;*/ - -# endif - -#elif defined(__MACOS__) - -# include - typedef SInt16 ogg_int16_t; - typedef SInt32 ogg_int32_t; - typedef UInt32 ogg_uint32_t; - typedef SInt64 ogg_int64_t; - -#elif defined(__MACOSX__) /* MacOS X Framework build */ - -# include - typedef int16_t ogg_int16_t; - typedef int32_t ogg_int32_t; - typedef u_int32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - -#elif defined(__BEOS__) - - /* Be */ -# include - typedef int16_t ogg_int16_t; - typedef int32_t ogg_int32_t; - typedef u_int32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - -#elif defined (__EMX__) - - /* OS/2 GCC */ - typedef short ogg_int16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - -#else - -# include -# include - -#endif - -#endif /* _OS_TYPES_H */ diff --git a/polymer/eduke32/AL/include/vorbis/codec.h b/polymer/eduke32/AL/include/vorbis/codec.h deleted file mode 100644 index fcffbb3b3..000000000 --- a/polymer/eduke32/AL/include/vorbis/codec.h +++ /dev/null @@ -1,233 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - - ******************************************************************** - - function: libvorbis codec headers - last mod: $Id: codec.h,v 1.40 2002/02/28 04:12:47 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _vorbis_codec_h_ -#define _vorbis_codec_h_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include - -typedef struct vorbis_info{ - int version; - int channels; - long rate; - - /* The below bitrate declarations are *hints*. - Combinations of the three values carry the following implications: - - all three set to the same value: - implies a fixed rate bitstream - only nominal set: - implies a VBR stream that averages the nominal bitrate. No hard - upper/lower limit - upper and or lower set: - implies a VBR bitstream that obeys the bitrate limits. nominal - may also be set to give a nominal rate. - none set: - the coder does not care to speculate. - */ - - long bitrate_upper; - long bitrate_nominal; - long bitrate_lower; - long bitrate_window; - - void *codec_setup; -} vorbis_info; - -/* vorbis_dsp_state buffers the current vorbis audio - analysis/synthesis state. The DSP state belongs to a specific - logical bitstream ****************************************************/ -typedef struct vorbis_dsp_state{ - int analysisp; - vorbis_info *vi; - - float **pcm; - float **pcmret; - int pcm_storage; - int pcm_current; - int pcm_returned; - - int preextrapolate; - int eofflag; - - long lW; - long W; - long nW; - long centerW; - - ogg_int64_t granulepos; - ogg_int64_t sequence; - - ogg_int64_t glue_bits; - ogg_int64_t time_bits; - ogg_int64_t floor_bits; - ogg_int64_t res_bits; - - void *backend_state; -} vorbis_dsp_state; - -typedef struct vorbis_block{ - /* necessary stream state for linking to the framing abstraction */ - float **pcm; /* this is a pointer into local storage */ - oggpack_buffer opb; - - long lW; - long W; - long nW; - int pcmend; - int mode; - - int eofflag; - ogg_int64_t granulepos; - ogg_int64_t sequence; - vorbis_dsp_state *vd; /* For read-only access of configuration */ - - /* local storage to avoid remallocing; it's up to the mapping to - structure it */ - void *localstore; - long localtop; - long localalloc; - long totaluse; - struct alloc_chain *reap; - - /* bitmetrics for the frame */ - long glue_bits; - long time_bits; - long floor_bits; - long res_bits; - - void *internal; - -} vorbis_block; - -/* vorbis_block is a single block of data to be processed as part of -the analysis/synthesis stream; it belongs to a specific logical -bitstream, but is independant from other vorbis_blocks belonging to -that logical bitstream. *************************************************/ - -struct alloc_chain{ - void *ptr; - struct alloc_chain *next; -}; - -/* vorbis_info contains all the setup information specific to the - specific compression/decompression mode in progress (eg, - psychoacoustic settings, channel setup, options, codebook - etc). vorbis_info and substructures are in backends.h. -*********************************************************************/ - -/* the comments are not part of vorbis_info so that vorbis_info can be - static storage */ -typedef struct vorbis_comment{ - /* unlimited user comment fields. libvorbis writes 'libvorbis' - whatever vendor is set to in encode */ - char **user_comments; - int *comment_lengths; - int comments; - char *vendor; - -} vorbis_comment; - - -/* libvorbis encodes in two abstraction layers; first we perform DSP - and produce a packet (see docs/analysis.txt). The packet is then - coded into a framed OggSquish bitstream by the second layer (see - docs/framing.txt). Decode is the reverse process; we sync/frame - the bitstream and extract individual packets, then decode the - packet back into PCM audio. - - The extra framing/packetizing is used in streaming formats, such as - files. Over the net (such as with UDP), the framing and - packetization aren't necessary as they're provided by the transport - and the streaming layer is not used */ - -/* Vorbis PRIMITIVES: general ***************************************/ - -extern void vorbis_info_init(vorbis_info *vi); -extern void vorbis_info_clear(vorbis_info *vi); -extern int vorbis_info_blocksize(vorbis_info *vi,int zo); -extern void vorbis_comment_init(vorbis_comment *vc); -extern void vorbis_comment_add(vorbis_comment *vc, char *comment); -extern void vorbis_comment_add_tag(vorbis_comment *vc, - char *tag, char *contents); -extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count); -extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag); -extern void vorbis_comment_clear(vorbis_comment *vc); - -extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); -extern int vorbis_block_clear(vorbis_block *vb); -extern void vorbis_dsp_clear(vorbis_dsp_state *v); - -/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/ - -extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op); -extern int vorbis_analysis_headerout(vorbis_dsp_state *v, - vorbis_comment *vc, - ogg_packet *op, - ogg_packet *op_comm, - ogg_packet *op_code); -extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op); - -extern int vorbis_bitrate_addblock(vorbis_block *vb); -extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, - ogg_packet *op); - -/* Vorbis PRIMITIVES: synthesis layer *******************************/ -extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, - ogg_packet *op); - -extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); -extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op); -extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm); -extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); -extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); - -/* Vorbis ERRORS and return codes ***********************************/ - -#define OV_FALSE -1 -#define OV_EOF -2 -#define OV_HOLE -3 - -#define OV_EREAD -128 -#define OV_EFAULT -129 -#define OV_EIMPL -130 -#define OV_EINVAL -131 -#define OV_ENOTVORBIS -132 -#define OV_EBADHEADER -133 -#define OV_EVERSION -134 -#define OV_ENOTAUDIO -135 -#define OV_EBADPACKET -136 -#define OV_EBADLINK -137 -#define OV_ENOSEEK -138 - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - diff --git a/polymer/eduke32/AL/include/vorbis/vorbisenc.h b/polymer/eduke32/AL/include/vorbis/vorbisenc.h deleted file mode 100644 index e22852283..000000000 --- a/polymer/eduke32/AL/include/vorbis/vorbisenc.h +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: vorbis encode-engine setup - last mod: $Id: vorbisenc.h,v 1.10 2002/07/01 11:20:10 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _OV_ENC_H_ -#define _OV_ENC_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include "codec.h" - -extern int vorbis_encode_init(vorbis_info *vi, - long channels, - long rate, - - long max_bitrate, - long nominal_bitrate, - long min_bitrate); - -extern int vorbis_encode_setup_managed(vorbis_info *vi, - long channels, - long rate, - - long max_bitrate, - long nominal_bitrate, - long min_bitrate); - -extern int vorbis_encode_setup_vbr(vorbis_info *vi, - long channels, - long rate, - - float /* quality level from 0. (lo) to 1. (hi) */ - ); - -extern int vorbis_encode_init_vbr(vorbis_info *vi, - long channels, - long rate, - - float base_quality /* quality level from 0. (lo) to 1. (hi) */ - ); - -extern int vorbis_encode_setup_init(vorbis_info *vi); - -extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg); - -#define OV_ECTL_RATEMANAGE_GET 0x10 - -#define OV_ECTL_RATEMANAGE_SET 0x11 -#define OV_ECTL_RATEMANAGE_AVG 0x12 -#define OV_ECTL_RATEMANAGE_HARD 0x13 - -#define OV_ECTL_LOWPASS_GET 0x20 -#define OV_ECTL_LOWPASS_SET 0x21 - -#define OV_ECTL_IBLOCK_GET 0x30 -#define OV_ECTL_IBLOCK_SET 0x31 - -struct ovectl_ratemanage_arg { - int management_active; - - long bitrate_hard_min; - long bitrate_hard_max; - double bitrate_hard_window; - - long bitrate_av_lo; - long bitrate_av_hi; - double bitrate_av_window; - double bitrate_av_window_center; -}; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - - diff --git a/polymer/eduke32/AL/include/vorbis/vorbisfile.h b/polymer/eduke32/AL/include/vorbis/vorbisfile.h deleted file mode 100644 index c5e211842..000000000 --- a/polymer/eduke32/AL/include/vorbis/vorbisfile.h +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: stdio-based convenience library for opening/seeking/decoding - last mod: $Id: vorbisfile.h,v 1.17 2002/03/07 03:41:03 xiphmont Exp $ - - ********************************************************************/ - -#ifndef _OV_FILE_H_ -#define _OV_FILE_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include "codec.h" - -/* The function prototypes for the callbacks are basically the same as for - * the stdio functions fread, fseek, fclose, ftell. - * The one difference is that the FILE * arguments have been replaced with - * a void * - this is to be used as a pointer to whatever internal data these - * functions might need. In the stdio case, it's just a FILE * cast to a void * - * - * If you use other functions, check the docs for these functions and return - * the right values. For seek_func(), you *MUST* return -1 if the stream is - * unseekable - */ -typedef struct { - size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); - int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); - int (*close_func) (void *datasource); - long (*tell_func) (void *datasource); -} ov_callbacks; - -#define NOTOPEN 0 -#define PARTOPEN 1 -#define OPENED 2 -#define STREAMSET 3 -#define INITSET 4 - -typedef struct OggVorbis_File { - void *datasource; /* Pointer to a FILE *, etc. */ - int seekable; - ogg_int64_t offset; - ogg_int64_t end; - ogg_sync_state oy; - - /* If the FILE handle isn't seekable (eg, a pipe), only the current - stream appears */ - int links; - ogg_int64_t *offsets; - ogg_int64_t *dataoffsets; - long *serialnos; - ogg_int64_t *pcmlengths; /* overloaded to maintain binary - compatability; x2 size, stores both - beginning and end values */ - vorbis_info *vi; - vorbis_comment *vc; - - /* Decoding working state local storage */ - ogg_int64_t pcm_offset; - int ready_state; - long current_serialno; - int current_link; - - double bittrack; - double samptrack; - - ogg_stream_state os; /* take physical pages, weld into a logical - stream of packets */ - vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ - vorbis_block vb; /* local working space for packet->PCM decode */ - - ov_callbacks callbacks; - -} OggVorbis_File; - -extern int ov_clear(OggVorbis_File *vf); -extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); -extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, - char *initial, long ibytes, ov_callbacks callbacks); - -extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes); -extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, - char *initial, long ibytes, ov_callbacks callbacks); -extern int ov_test_open(OggVorbis_File *vf); - -extern long ov_bitrate(OggVorbis_File *vf,int i); -extern long ov_bitrate_instant(OggVorbis_File *vf); -extern long ov_streams(OggVorbis_File *vf); -extern long ov_seekable(OggVorbis_File *vf); -extern long ov_serialnumber(OggVorbis_File *vf,int i); - -extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); -extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); -extern double ov_time_total(OggVorbis_File *vf,int i); - -extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_time_seek(OggVorbis_File *vf,double pos); -extern int ov_time_seek_page(OggVorbis_File *vf,double pos); - -extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); -extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); -extern double ov_time_tell(OggVorbis_File *vf); - -extern vorbis_info *ov_info(OggVorbis_File *vf,int link); -extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); - -extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, - int *bitstream); -extern long ov_read(OggVorbis_File *vf,char *buffer,int length, - int bigendianp,int word,int sgned,int *bitstream); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - - diff --git a/polymer/eduke32/AL/lib/libOpenAL32.a b/polymer/eduke32/AL/lib/libOpenAL32.a deleted file mode 100644 index 86de42002459c4b3e4f37d9bfd092afa9f491dbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16866 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 diff --git a/polymer/eduke32/AL/lib/libogg.a b/polymer/eduke32/AL/lib/libogg.a deleted file mode 100644 index 7ee49415348770a0a06320a0d22a5ba7625c822f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14064 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 XL@540@xwnPWU>VQTOs{JqTl}j{ywGS diff --git a/polymer/eduke32/AL/lib/libvorbis.a b/polymer/eduke32/AL/lib/libvorbis.a deleted file mode 100644 index c410f89ccb97c284289e9e6d6569613331adc288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185728 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୔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 diff --git a/polymer/eduke32/AL/lib/libvorbisfile.a b/polymer/eduke32/AL/lib/libvorbisfile.a deleted file mode 100644 index 9ee4469242489ebc94ea8aed9e2987c7545eb968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27172 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 diff --git a/polymer/eduke32/Makefile b/polymer/eduke32/Makefile index 02d32f199..d3f32ae5a 100644 --- a/polymer/eduke32/Makefile +++ b/polymer/eduke32/Makefile @@ -26,7 +26,6 @@ RANCID_NETWORKING = 1 RELEASE?=1 DEBUGANYWAY?=0 NOSOUND?=0 -USE_OPENAL?=1 OPTLEVEL?=2 PROFILER?=0 @@ -52,6 +51,9 @@ ifneq (0,$(DEBUGANYWAY)) debug+=-ggdb endif +JAUDIOLIBDIR=$(SRC)/jaudiolib +JAUDIOLIB=libjfaudiolib.a + CC=gcc CXX=g++ AS=nasm @@ -72,7 +74,7 @@ endif OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \ -funsigned-char -fno-strict-aliasing -DNO_GCC_BUILTINS \ - -I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(SRC)/jaudiolib -D_FORTIFY_SOURCE=2 \ + -I$(INC) -I$(EINC) -I$(SRC)/jmact -I$(JAUDIOLIBDIR)/include -D_FORTIFY_SOURCE=2 \ -fjump-tables -fno-stack-protector # -march=pentium3 -mtune=generic -mmmx -m3dnow -msse -mfpmath=sse OURCXXFLAGS=-fno-exceptions -fno-rtti @@ -103,42 +105,6 @@ JMACTOBJ=$(OBJ)/util_lib.$o \ $(OBJ)/scriplib.$o \ $(OBJ)/animlib.$o -AUDIOLIB_FX_STUB=$(OBJ)/audiolib_fxstub.$o -AUDIOLIB_MUSIC_STUB=$(OBJ)/audiolib_musicstub.$o - -AUDIOLIB_FX_SDL=$(OBJ)/ll_man.$o \ - $(OBJ)/fx_man.$o \ - $(OBJ)/dsl.$o \ - $(OBJ)/pitch.$o \ - $(OBJ)/multivoc.$o - -AUDIOLIB_MUSIC_SDL=$(OBJ)/sdlmusic.$o - -AUDIOLIB_FX=$(OBJ)/pitch.$o \ - $(OBJ)/multivoc.$o \ - $(OBJ)/ll_man.$o \ - $(OBJ)/fx_man.$o \ - $(OBJ)/dsoundout.$o - -ifeq ($(USE_OPENAL),1) - AUDIOLIB_FX += $(OBJ)/openal.$o -endif - -AUDIOLIB_MUSIC=$(OBJ)/midi.$o \ - $(OBJ)/mpu401.$o \ - $(OBJ)/music.$o - -ifeq (0,$(NOASM)) - # Assembly sound mixing code - AUDIOLIB_FX_SDL += $(OBJ)/mv_mix.$o $(OBJ)/mv_mix16.$o $(OBJ)/mvreverb.$o - AUDIOLIB_FX += $(OBJ)/mv_mix.$o $(OBJ)/mv_mix16.$o $(OBJ)/mvreverb.$o -else - # C fallbacks for sound mixing code - AUDIOLIB_FX_SDL += $(OBJ)/mv_mix-c.$o $(OBJ)/mvreverb-c.$o - AUDIOLIB_FX += $(OBJ)/mv_mix-c.$o $(OBJ)/mvreverb-c.$o -endif - - GAMEOBJS=$(OBJ)/game.$o \ $(OBJ)/actors.$o \ $(OBJ)/anim.$o \ @@ -157,6 +123,8 @@ GAMEOBJS=$(OBJ)/game.$o \ $(OBJ)/osdfuncs.$o \ $(OBJ)/osdcmds.$o \ $(OBJ)/grpscan.$o \ + $(OBJ)/sounds.$o \ + $(OBJ)/audiolib_musicstub.$o \ $(JMACTOBJ) EDITOROBJS=$(OBJ)/astub.$o \ @@ -168,7 +136,6 @@ ifeq ($(PLATFORM),LINUX) OURCFLAGS += -fno-pic NASMFLAGS += -f elf LIBS += -lvorbisfile -lvorbis -logg - USE_OPENAL = 0 endif ifeq ($(PLATFORM),DARWIN) @@ -197,9 +164,10 @@ endif ifeq ($(PLATFORM),WINDOWS) OURCFLAGS += -fno-pic -DUNDERSCORES -I$(DXROOT)/include -I$(ALROOT)/include # -I$(ENETROOT)/include NASMFLAGS+= -DUNDERSCORES -f win32 - LIBS += -L$(ALROOT)/lib -lvorbisfile -lvorbis -logg -lwsock32 -lws2_32 -lwinmm #-L$(ENETROOT) + LIBS += -L$(JAUDIOLIBDIR)/third-party/mingw32/lib -lvorbisfile -lvorbis -logg -lwsock32 -lws2_32 -lwinmm -ldsound GAMEOBJS+= $(OBJ)/gameres.$o $(OBJ)/winbits.$o $(OBJ)/startwin.game.$o EDITOROBJS+= $(OBJ)/buildres.$o + JAUDIOLIB=libjfaudiolib_win32.a endif ifeq ($(RENDERTYPE),SDL) @@ -209,17 +177,6 @@ ifeq ($(RENDERTYPE),SDL) OURCFLAGS += -DSDL_FRAMEWORK endif - ifneq ($(PLATFORM),WINDOWS) - AUDIOLIBOBJ=$(AUDIOLIB_MUSIC_SDL) $(AUDIOLIB_FX_SDL) $(OBJ)/sounds.$o - AUDIOLIBOBJ_M32=$(AUDIOLIB_FX_SDL) $(OBJ)/sounds_mapster32.$o - ifeq (0,$(SDL_FRAMEWORK)) - LIBS+= -lSDL_mixer - endif - else - AUDIOLIBOBJ=$(AUDIOLIB_MUSIC_STUB) $(AUDIOLIB_FX_STUB) $(OBJ)/sounds.$o - AUDIOLIBOBJ_M32=$(AUDIOLIB_FX_STUB) $(OBJ)/sounds_mapster32.$o - endif - ifeq (1,$(HAVE_GTK2)) OURCFLAGS+= -DHAVE_GTK2 $(shell pkg-config --cflags gtk+-2.0) GAMEOBJS+= $(OBJ)/game_banner.$o $(OBJ)/startgtk.game.$o @@ -230,29 +187,14 @@ ifeq ($(RENDERTYPE),SDL) EDITOROBJS+= $(OBJ)/build_icon.$o endif -ifeq ($(RENDERTYPE),WIN) - AUDIOLIBOBJ=$(AUDIOLIB_MUSIC) $(AUDIOLIB_FX) $(OBJ)/sounds.$o - AUDIOLIBOBJ_M32=$(AUDIOLIB_FX) $(OBJ)/sounds_mapster32.$o -endif - -ifeq ($(NOSOUND),1) - AUDIOLIBOBJ=$(AUDIOLIB_MUSIC_STUB) $(AUDIOLIB_FX_STUB) $(OBJ)/sounds.$o - AUDIOLIBOBJ_M32=$(AUDIOLIB_FX_STUB) $(OBJ)/sounds_mapster32.$o -endif - -GAMEOBJS+= $(AUDIOLIBOBJ) -EDITOROBJS+= $(AUDIOLIBOBJ_M32) +EDITOROBJS+= $(OBJ)/sounds_mapster32.$o OURCFLAGS+= $(BUILDCFLAGS) OURCXXFLAGS+= $(BUILDCFLAGS) -ifeq ($(USE_OPENAL),1) - OURCFLAGS+= -DUSE_OPENAL -endif - ifeq ($(PRETTY_OUTPUT),1) .SILENT: endif -.PHONY: clean all engine $(EOBJ)/$(ENGINELIB) $(EOBJ)/$(EDITORLIB) +.PHONY: clean all engine $(EOBJ)/$(ENGINELIB) $(EOBJ)/$(EDITORLIB) $(JAUDIOLIBDIR)/$(JAUDIOLIB) # TARGETS @@ -266,7 +208,7 @@ all: notice: $(BUILD_STARTED) -eduke32$(EXESUFFIX): $(GAMEOBJS) $(EOBJ)/$(ENGINELIB) +eduke32$(EXESUFFIX): $(GAMEOBJS) $(EOBJ)/$(ENGINELIB) $(JAUDIOLIBDIR)/$(JAUDIOLIB) $(LINK_STATUS) if $(CC) -o $@ $^ $(LIBS) $(STDCPPLIB); then $(LINK_OK); else $(LINK_FAILED); fi ifeq (1,$(RELEASE)) @@ -275,7 +217,7 @@ ifeq (1,$(RELEASE)) endif endif -mapster32$(EXESUFFIX): $(EDITOROBJS) $(EOBJ)/$(EDITORLIB) $(EOBJ)/$(ENGINELIB) +mapster32$(EXESUFFIX): $(EDITOROBJS) $(EOBJ)/$(EDITORLIB) $(EOBJ)/$(ENGINELIB) $(JAUDIOLIBDIR)/$(JAUDIOLIB) $(LINK_STATUS) if $(CC) $(CFLAGS) $(OURCFLAGS) -o $@ $^ $(LIBS) $(STDCPPLIB); then $(LINK_OK); else $(LINK_FAILED); fi ifeq (1,$(RELEASE)) @@ -317,14 +259,19 @@ endif $(EOBJ)/$(ENGINELIB): enginelib $(EOBJ)/$(EDITORLIB): editorlib +$(JAUDIOLIBDIR)/$(JAUDIOLIB): +ifeq ($(PRETTY_OUTPUT),1) + printf "\033[K\033[0;35mChanging dir to \033[1;35m$(CURDIR)/$(JAUDIOLIBDIR)\033[0;35m \033[0m\n" +endif + $(MAKE) -C $(JAUDIOLIBDIR) PRETTY_OUTPUT=$(PRETTY_OUTPUT) EROOT=$(EROOT) +ifeq ($(PRETTY_OUTPUT),1) + printf "\033[K\033[0;35mChanging dir to \033[1;35m$(CURDIR)\033[0;35m \033[0m\n" +endif # RULES $(OBJ)/%.$o: $(SRC)/%.nasm $(COMPILE_STATUS) $(AS) $(NASMFLAGS) $< -o $@ -$(OBJ)/%.$o: $(SRC)/jaudiolib/%.nasm - $(COMPILE_STATUS) - $(AS) $(NASMFLAGS) $< -o $@ $(OBJ)/%.$o: $(SRC)/%.c $(COMPILE_STATUS) @@ -337,9 +284,6 @@ $(OBJ)/%.$o: $(SRC)/%.cpp $(OBJ)/%.$o: $(SRC)/jmact/%.c $(COMPILE_STATUS) if $(CC) $(CFLAGS) $(OURCFLAGS) -c $< -o $@; then $(COMPILE_OK); else $(COMPILE_FAILED); fi -$(OBJ)/%.$o: $(SRC)/jaudiolib/%.c - $(COMPILE_STATUS) - if $(CC) $(CFLAGS) $(OURCFLAGS) -c $< -o $@; then $(COMPILE_OK); else $(COMPILE_FAILED); fi $(OBJ)/%.$o: $(SRC)/misc/%.rc $(COMPILE_STATUS) diff --git a/polymer/eduke32/Makefile.deps b/polymer/eduke32/Makefile.deps index a7b49e7f5..9bbd8554b 100644 --- a/polymer/eduke32/Makefile.deps +++ b/polymer/eduke32/Makefile.deps @@ -1,4 +1,4 @@ -duke3d_h=$(EINC)/build.h $(EINC)/polymer.h $(EINC)/pragmas.h $(EINC)/compat.h $(EINC)/cache1d.h $(EINC)/baselayer.h $(SRC)/jmact/file_lib.h $(SRC)/jmact/util_lib.h $(SRC)/jmact/keyboard.h $(SRC)/jmact/control.h $(INC)/gamedefs.h $(INC)/function.h $(INC)/config.h $(INC)/sounds.h $(INC)/rts.h $(INC)/_rts.h $(INC)/soundefs.h $(SRC)/jaudiolib/fx_man.h $(SRC)/jaudiolib/music.h $(INC)/namesdyn.h $(INC)/funct.h $(INC)/duke3d.h +duke3d_h=$(EINC)/build.h $(EINC)/polymer.h $(EINC)/pragmas.h $(EINC)/compat.h $(EINC)/cache1d.h $(EINC)/baselayer.h $(SRC)/jmact/file_lib.h $(SRC)/jmact/util_lib.h $(SRC)/jmact/keyboard.h $(SRC)/jmact/control.h $(INC)/gamedefs.h $(INC)/function.h $(INC)/config.h $(INC)/sounds.h $(INC)/rts.h $(INC)/_rts.h $(INC)/soundefs.h $(JAUDIOLIBDIR)/include/fx_man.h $(JAUDIOLIBDIR)/include/music.h $(INC)/namesdyn.h $(INC)/funct.h $(INC)/duke3d.h gamedef_h=$(SRC)/gamedef.h $(OBJ)/game.$o: $(SRC)/game.c $(SRC)/sync.c $(SRC)/jmact/scriplib.h $(duke3d_h) $(INC)/osdfuncs.h $(INC)/osdcmds.h $(INC)/grpscan.h @@ -47,7 +47,7 @@ $(OBJ)/scriplib.$o: $(SRC)/jmact/scriplib.c $(SRC)/jmact/scriplib.h $(SRC)/jmact # jAudioLib objects $(OBJ)/audiolib_fxstub.$o: $(SRC)/jaudiolib/audiolib_fxstub.c $(SRC)/jaudiolib/fx_man.h -$(OBJ)/audiolib_musicstub.$o: $(SRC)/jaudiolib/audiolib_musicstub.c $(SRC)/jaudiolib/music.h +$(OBJ)/audiolib_musicstub.$o: $(SRC)/audiolib_musicstub.c $(JAUDIOLIBDIR)/include/music.h $(OBJ)/mv_mix.$o: $(SRC)/jaudiolib/mv_mix.nasm $(OBJ)/mv_mix16.$o: $(SRC)/jaudiolib/mv_mix16.nasm diff --git a/polymer/eduke32/Makefile.msvc b/polymer/eduke32/Makefile.msvc index 191b14652..e1cd29362 100644 --- a/polymer/eduke32/Makefile.msvc +++ b/polymer/eduke32/Makefile.msvc @@ -27,7 +27,7 @@ DXROOT="U:\SDKs\Microsoft DirectX SDK (April 2007) MSSDKROOT="N:\Program Files\Microsoft Visual Studio 9.0\VC PLATFORMSDK="N:\Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK -ENGINEOPTS=/DSUPERBUILD /DPOLYMOST /DUSE_OPENGL /DUSE_OPENAL /DRANCID_NETWORKING /DPOLYMER +ENGINEOPTS=/DSUPERBUILD /DPOLYMOST /DUSE_OPENGL /DRANCID_NETWORKING /DPOLYMER CC=cl AS=ml diff --git a/polymer/eduke32/eduke32.vcproj b/polymer/eduke32/eduke32.vcproj index d0b87c9f5..28727292f 100644 --- a/polymer/eduke32/eduke32.vcproj +++ b/polymer/eduke32/eduke32.vcproj @@ -573,79 +573,55 @@ Name="Header Files" > - - - - - - - - - - - - @@ -653,63 +629,47 @@ Name="Source Files" > - - - - - - - -