rlm@0: #ifndef AL_ALC_H rlm@0: #define AL_ALC_H rlm@0: rlm@0: #if defined(__cplusplus) rlm@0: extern "C" { rlm@0: #endif rlm@0: rlm@0: #ifndef ALC_API rlm@0: #if defined(AL_LIBTYPE_STATIC) rlm@0: #define ALC_API rlm@0: #elif defined(_WIN32) rlm@0: #define ALC_API __declspec(dllimport) rlm@0: #else rlm@0: #define ALC_API extern rlm@0: #endif rlm@0: #endif rlm@0: rlm@0: #if defined(_WIN32) rlm@0: #define ALC_APIENTRY __cdecl rlm@0: #else rlm@0: #define ALC_APIENTRY rlm@0: #endif rlm@0: rlm@0: #if defined(TARGET_OS_MAC) && TARGET_OS_MAC rlm@0: #pragma export on rlm@0: #endif rlm@0: rlm@0: /* rlm@0: * The ALCAPI, ALCAPIENTRY, and ALC_INVALID macros are deprecated, but are rlm@0: * included for applications porting code from AL 1.0 rlm@0: */ rlm@0: #define ALCAPI ALC_API rlm@0: #define ALCAPIENTRY ALC_APIENTRY rlm@0: #define ALC_INVALID 0 rlm@0: rlm@0: rlm@0: #define ALC_VERSION_0_1 1 rlm@0: rlm@0: typedef struct ALCdevice_struct ALCdevice; rlm@0: typedef struct ALCcontext_struct ALCcontext; rlm@0: rlm@0: rlm@0: /** 8-bit boolean */ rlm@0: typedef char ALCboolean; rlm@0: rlm@0: /** character */ rlm@0: typedef char ALCchar; rlm@0: rlm@0: /** signed 8-bit 2's complement integer */ rlm@0: typedef signed char ALCbyte; rlm@0: rlm@0: /** unsigned 8-bit integer */ rlm@0: typedef unsigned char ALCubyte; rlm@0: rlm@0: /** signed 16-bit 2's complement integer */ rlm@0: typedef short ALCshort; rlm@0: rlm@0: /** unsigned 16-bit integer */ rlm@0: typedef unsigned short ALCushort; rlm@0: rlm@0: /** signed 32-bit 2's complement integer */ rlm@0: typedef int ALCint; rlm@0: rlm@0: /** unsigned 32-bit integer */ rlm@0: typedef unsigned int ALCuint; rlm@0: rlm@0: /** non-negative 32-bit binary integer size */ rlm@0: typedef int ALCsizei; rlm@0: rlm@0: /** enumerated 32-bit value */ rlm@0: typedef int ALCenum; rlm@0: rlm@0: /** 32-bit IEEE754 floating-point */ rlm@0: typedef float ALCfloat; rlm@0: rlm@0: /** 64-bit IEEE754 floating-point */ rlm@0: typedef double ALCdouble; rlm@0: rlm@0: /** void type (for opaque pointers only) */ rlm@0: typedef void ALCvoid; rlm@0: rlm@0: rlm@0: /* Enumerant values begin at column 50. No tabs. */ rlm@0: rlm@0: /* Boolean False. */ rlm@0: #define ALC_FALSE 0 rlm@0: rlm@0: /* Boolean True. */ rlm@0: #define ALC_TRUE 1 rlm@0: rlm@0: /** rlm@0: * followed by Hz rlm@0: */ rlm@0: #define ALC_FREQUENCY 0x1007 rlm@0: rlm@0: /** rlm@0: * followed by Hz rlm@0: */ rlm@0: #define ALC_REFRESH 0x1008 rlm@0: rlm@0: /** rlm@0: * followed by AL_TRUE, AL_FALSE rlm@0: */ rlm@0: #define ALC_SYNC 0x1009 rlm@0: rlm@0: /** rlm@0: * followed by Num of requested Mono (3D) Sources rlm@0: */ rlm@0: #define ALC_MONO_SOURCES 0x1010 rlm@0: rlm@0: /** rlm@0: * followed by Num of requested Stereo Sources rlm@0: */ rlm@0: #define ALC_STEREO_SOURCES 0x1011 rlm@0: rlm@0: /** rlm@0: * errors rlm@0: */ rlm@0: rlm@0: /** rlm@0: * No error rlm@0: */ rlm@0: #define ALC_NO_ERROR ALC_FALSE rlm@0: rlm@0: /** rlm@0: * No device rlm@0: */ rlm@0: #define ALC_INVALID_DEVICE 0xA001 rlm@0: rlm@0: /** rlm@0: * invalid context ID rlm@0: */ rlm@0: #define ALC_INVALID_CONTEXT 0xA002 rlm@0: rlm@0: /** rlm@0: * bad enum rlm@0: */ rlm@0: #define ALC_INVALID_ENUM 0xA003 rlm@0: rlm@0: /** rlm@0: * bad value rlm@0: */ rlm@0: #define ALC_INVALID_VALUE 0xA004 rlm@0: rlm@0: /** rlm@0: * Out of memory. rlm@0: */ rlm@0: #define ALC_OUT_OF_MEMORY 0xA005 rlm@0: rlm@0: rlm@0: /** rlm@0: * The Specifier string for default device rlm@0: */ rlm@0: #define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004 rlm@0: #define ALC_DEVICE_SPECIFIER 0x1005 rlm@0: #define ALC_EXTENSIONS 0x1006 rlm@0: rlm@0: #define ALC_MAJOR_VERSION 0x1000 rlm@0: #define ALC_MINOR_VERSION 0x1001 rlm@0: rlm@0: #define ALC_ATTRIBUTES_SIZE 0x1002 rlm@0: #define ALC_ALL_ATTRIBUTES 0x1003 rlm@0: rlm@0: rlm@0: /** rlm@0: * Capture extension rlm@0: */ rlm@0: #define ALC_EXT_CAPTURE 1 rlm@0: #define ALC_CAPTURE_DEVICE_SPECIFIER 0x310 rlm@0: #define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311 rlm@0: #define ALC_CAPTURE_SAMPLES 0x312 rlm@0: rlm@0: rlm@0: /** rlm@0: * ALC_ENUMERATE_ALL_EXT enums rlm@0: */ rlm@0: #define ALC_ENUMERATE_ALL_EXT 1 rlm@0: #define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012 rlm@0: #define ALC_ALL_DEVICES_SPECIFIER 0x1013 rlm@0: rlm@0: rlm@0: /* rlm@0: * Context Management rlm@0: */ rlm@0: ALC_API ALCcontext * ALC_APIENTRY alcCreateContext( ALCdevice *device, const ALCint* attrlist ); rlm@0: rlm@0: ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent( ALCcontext *context ); rlm@0: rlm@0: ALC_API void ALC_APIENTRY alcProcessContext( ALCcontext *context ); rlm@0: rlm@0: ALC_API void ALC_APIENTRY alcSuspendContext( ALCcontext *context ); rlm@0: rlm@0: ALC_API void ALC_APIENTRY alcDestroyContext( ALCcontext *context ); rlm@0: rlm@0: ALC_API ALCcontext * ALC_APIENTRY alcGetCurrentContext( void ); rlm@0: rlm@0: ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice( ALCcontext *context ); rlm@0: rlm@0: rlm@0: /* rlm@0: * Device Management rlm@0: */ rlm@0: ALC_API ALCdevice * ALC_APIENTRY alcOpenDevice( const ALCchar *devicename ); rlm@0: rlm@0: ALC_API ALCboolean ALC_APIENTRY alcCloseDevice( ALCdevice *device ); rlm@0: rlm@0: rlm@0: /* rlm@0: * Error support. rlm@0: * Obtain the most recent Context error rlm@0: */ rlm@0: ALC_API ALCenum ALC_APIENTRY alcGetError( ALCdevice *device ); rlm@0: rlm@0: rlm@0: /* rlm@0: * Extension support. rlm@0: * Query for the presence of an extension, and obtain any appropriate rlm@0: * function pointers and enum values. rlm@0: */ rlm@0: ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent( ALCdevice *device, const ALCchar *extname ); rlm@0: rlm@0: ALC_API void * ALC_APIENTRY alcGetProcAddress( ALCdevice *device, const ALCchar *funcname ); rlm@0: rlm@0: ALC_API ALCenum ALC_APIENTRY alcGetEnumValue( ALCdevice *device, const ALCchar *enumname ); rlm@0: rlm@0: rlm@0: /* rlm@0: * Query functions rlm@0: */ rlm@0: ALC_API const ALCchar * ALC_APIENTRY alcGetString( ALCdevice *device, ALCenum param ); rlm@0: rlm@0: ALC_API void ALC_APIENTRY alcGetIntegerv( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *data ); rlm@0: rlm@0: rlm@0: /* rlm@0: * Capture functions rlm@0: */ rlm@0: ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize ); rlm@0: rlm@0: ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice( ALCdevice *device ); rlm@0: rlm@0: ALC_API void ALC_APIENTRY alcCaptureStart( ALCdevice *device ); rlm@0: rlm@0: ALC_API void ALC_APIENTRY alcCaptureStop( ALCdevice *device ); rlm@0: rlm@0: ALC_API void ALC_APIENTRY alcCaptureSamples( ALCdevice *device, ALCvoid *buffer, ALCsizei samples ); rlm@0: rlm@0: /* rlm@0: * Pointer-to-function types, useful for dynamically getting ALC entry points. rlm@0: */ rlm@0: typedef ALCcontext * (ALC_APIENTRY *LPALCCREATECONTEXT) (ALCdevice *device, const ALCint *attrlist); rlm@0: typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)( ALCcontext *context ); rlm@0: typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)( ALCcontext *context ); rlm@0: typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)( ALCcontext *context ); rlm@0: typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)( ALCcontext *context ); rlm@0: typedef ALCcontext * (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)( void ); rlm@0: typedef ALCdevice * (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)( ALCcontext *context ); rlm@0: typedef ALCdevice * (ALC_APIENTRY *LPALCOPENDEVICE)( const ALCchar *devicename ); rlm@0: typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)( ALCdevice *device ); rlm@0: typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)( ALCdevice *device ); rlm@0: typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)( ALCdevice *device, const ALCchar *extname ); rlm@0: typedef void * (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname ); rlm@0: typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname ); rlm@0: typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)( ALCdevice *device, ALCenum param ); rlm@0: typedef void (ALC_APIENTRY *LPALCGETINTEGERV)( ALCdevice *device, ALCenum param, ALCsizei size, ALCint *dest ); rlm@0: typedef ALCdevice * (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize ); rlm@0: typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)( ALCdevice *device ); rlm@0: typedef void (ALC_APIENTRY *LPALCCAPTURESTART)( ALCdevice *device ); rlm@0: typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)( ALCdevice *device ); rlm@0: typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)( ALCdevice *device, ALCvoid *buffer, ALCsizei samples ); rlm@0: rlm@0: #if defined(TARGET_OS_MAC) && TARGET_OS_MAC rlm@0: #pragma export off rlm@0: #endif rlm@0: rlm@0: #if defined(__cplusplus) rlm@0: } rlm@0: #endif rlm@0: rlm@0: #endif /* AL_ALC_H */