Files
openal-soft/Router/OpenAL32.h
T
Chris Robinson ae5f4e9a74 Initial import
2007-11-13 18:02:18 -08:00

342 lines
16 KiB
C

/**
* 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
*/
#ifndef _OPENAL32_H_
#define _OPENAL32_H_
#ifdef __cplusplus
extern "C" {
#endif
#define AL_BUILD_LIBRARY
#include "al\al.h"
// ALAPI
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_ENABLE)(ALenum capability);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DISABLE)(ALenum capability);
typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_ENABLED)(ALenum capability);
typedef ALAPI const ALchar* (ALAPIENTRY *ALAPI_GET_STRING)(ALenum param);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BOOLEANV)(ALenum param, ALboolean* data);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_INTEGERV)(ALenum param, ALint* data);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_FLOATV)(ALenum param, ALfloat* data);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_DOUBLEV)(ALenum param, ALdouble* data);
typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_GET_BOOLEAN)(ALenum param);
typedef ALAPI ALint (ALAPIENTRY *ALAPI_GET_INTEGER)(ALenum param);
typedef ALAPI ALfloat (ALAPIENTRY *ALAPI_GET_FLOAT)(ALenum param);
typedef ALAPI ALdouble (ALAPIENTRY *ALAPI_GET_DOUBLE)(ALenum param);
typedef ALAPI ALenum (ALAPIENTRY *ALAPI_GET_ERROR)(ALvoid);
typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_EXTENSION_PRESENT)(const ALchar* ename);
typedef ALAPI ALvoid* (ALAPIENTRY *ALAPI_GET_PROC_ADDRESS)(const ALchar* fname);
typedef ALAPI ALenum (ALAPIENTRY *ALAPI_GET_ENUM_VALUE)(const ALchar* ename);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERF)(ALenum param, ALfloat value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENER3F)(ALenum param, ALfloat v1, ALfloat v2, ALfloat v3);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERFV)(ALenum param, const ALfloat* values);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERI)(ALenum param, ALint value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENER3I)( ALenum param, ALint value1, ALint value2, ALint value3 );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERIV)( ALenum param, const ALint* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERF)(ALenum param, ALfloat* value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENER3F)(ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERFV)(ALenum param, ALfloat* values);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERI)(ALenum param, ALint* value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENER3I)( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERIV)( ALenum param, ALint* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GEN_SOURCES)(ALsizei n, ALuint* sourceNames);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DELETE_SOURCES)(ALsizei n, const ALuint* sourceNames);
typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_SOURCE)(ALuint id);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEF)(ALuint sourceName, ALenum param, ALfloat value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE3F)(ALuint sourceName, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEFV)(ALuint sourceName, ALenum param, const ALfloat* values);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEI)(ALuint sourceName, ALenum param, ALint value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE3I)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEIV)( ALuint sid, ALenum param, const ALint* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEF)(ALuint sourceName, ALenum param, ALfloat* value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCE3F)(ALuint sourceName, ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEFV)(ALuint sourceName, ALenum param, const ALfloat* values);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEI)(ALuint sourceName, ALenum param, ALint* value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCE3I)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEIV)( ALuint sid, ALenum param, ALint* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PLAYV)(ALsizei n, const ALuint* sources);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_STOPV)(ALsizei n, const ALuint* sources);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_REWINDV)(ALsizei n, const ALuint* sources);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PAUSEV)(ALsizei n, const ALuint* sources);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PLAY)(ALuint sourceName);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_STOP)(ALuint sourceName);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_REWIND)(ALuint sourceName);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PAUSE)(ALuint sourceName);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_QUEUE_BUFFERS)(ALuint sourceName, ALsizei n, const ALuint* bufferNames);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_UNQUEUE_BUFFERS)(ALuint sourceName, ALsizei n, ALuint* bufferNames);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GEN_BUFFERS)(ALsizei n, ALuint* bufferNames);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DELETE_BUFFERS)(ALsizei n, const ALuint* bufferNames);
typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_BUFFER)(ALuint bufferName);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFER_DATA)(ALuint bufferName, ALenum format, const ALvoid* data, ALsizei size, ALuint freq);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERF)( ALuint bid, ALenum param, ALfloat value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFER3F)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERFV)( ALuint bid, ALenum param, const ALfloat* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERI)( ALuint bid, ALenum param, ALint value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFER3I)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERIV)( ALuint bid, ALenum param, const ALint* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERF)( ALuint bid, ALenum param, ALfloat* value );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFER3F)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERFV)( ALuint bid, ALenum param, ALfloat* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERI)( ALuint bid, ALenum param, ALint* value );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFER3I)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERIV)( ALuint bid, ALenum param, ALint* values );
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DOPPLER_FACTOR)(ALfloat value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DOPPLER_VELOCITY)(ALfloat value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SPEED_OF_SOUND)(ALfloat value);
typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DISTANCE_MODEL)(ALenum value);
typedef struct ALAPI_FXN_TABLE_STRUCT
{
ALAPI_ENABLE alEnable;
ALAPI_DISABLE alDisable;
ALAPI_IS_ENABLED alIsEnabled;
ALAPI_GET_STRING alGetString;
ALAPI_GET_BOOLEANV alGetBooleanv;
ALAPI_GET_INTEGERV alGetIntegerv;
ALAPI_GET_FLOATV alGetFloatv;
ALAPI_GET_DOUBLEV alGetDoublev;
ALAPI_GET_BOOLEAN alGetBoolean;
ALAPI_GET_INTEGER alGetInteger;
ALAPI_GET_FLOAT alGetFloat;
ALAPI_GET_DOUBLE alGetDouble;
ALAPI_GET_ERROR alGetError;
ALAPI_IS_EXTENSION_PRESENT alIsExtensionPresent;
ALAPI_GET_PROC_ADDRESS alGetProcAddress;
ALAPI_GET_ENUM_VALUE alGetEnumValue;
ALAPI_LISTENERF alListenerf;
ALAPI_LISTENER3F alListener3f;
ALAPI_LISTENERFV alListenerfv;
ALAPI_LISTENERI alListeneri;
ALAPI_LISTENER3I alListener3i;
ALAPI_LISTENERIV alListeneriv;
ALAPI_GET_LISTENERF alGetListenerf;
ALAPI_GET_LISTENER3F alGetListener3f;
ALAPI_GET_LISTENERFV alGetListenerfv;
ALAPI_GET_LISTENERI alGetListeneri;
ALAPI_GET_LISTENER3I alGetListener3i;
ALAPI_GET_LISTENERIV alGetListeneriv;
ALAPI_GEN_SOURCES alGenSources;
ALAPI_DELETE_SOURCES alDeleteSources;
ALAPI_IS_SOURCE alIsSource;
ALAPI_SOURCEF alSourcef;
ALAPI_SOURCE3F alSource3f;
ALAPI_SOURCEFV alSourcefv;
ALAPI_SOURCEI alSourcei;
ALAPI_SOURCE3I alSource3i;
ALAPI_SOURCEIV alSourceiv;
ALAPI_GET_SOURCEF alGetSourcef;
ALAPI_GET_SOURCE3F alGetSource3f;
ALAPI_GET_SOURCEFV alGetSourcefv;
ALAPI_GET_SOURCEI alGetSourcei;
ALAPI_GET_SOURCE3I alGetSource3i;
ALAPI_GET_SOURCEIV alGetSourceiv;
ALAPI_SOURCE_PLAYV alSourcePlayv;
ALAPI_SOURCE_STOPV alSourceStopv;
ALAPI_SOURCE_REWINDV alSourceRewindv;
ALAPI_SOURCE_PAUSEV alSourcePausev;
ALAPI_SOURCE_PLAY alSourcePlay;
ALAPI_SOURCE_STOP alSourceStop;
ALAPI_SOURCE_REWIND alSourceRewind;
ALAPI_SOURCE_PAUSE alSourcePause;
ALAPI_SOURCE_QUEUE_BUFFERS alSourceQueueBuffers;
ALAPI_SOURCE_UNQUEUE_BUFFERS alSourceUnqueueBuffers;
ALAPI_GEN_BUFFERS alGenBuffers;
ALAPI_DELETE_BUFFERS alDeleteBuffers;
ALAPI_IS_BUFFER alIsBuffer;
ALAPI_BUFFER_DATA alBufferData;
ALAPI_BUFFERF alBufferf;
ALAPI_BUFFER3F alBuffer3f;
ALAPI_BUFFERFV alBufferfv;
ALAPI_BUFFERI alBufferi;
ALAPI_BUFFER3I alBuffer3i;
ALAPI_BUFFERIV alBufferiv;
ALAPI_GET_BUFFERF alGetBufferf;
ALAPI_GET_BUFFER3F alGetBuffer3f;
ALAPI_GET_BUFFERFV alGetBufferfv;
ALAPI_GET_BUFFERI alGetBufferi;
ALAPI_GET_BUFFER3I alGetBuffer3i;
ALAPI_GET_BUFFERIV alGetBufferiv;
ALAPI_DOPPLER_FACTOR alDopplerFactor;
ALAPI_DOPPLER_VELOCITY alDopplerVelocity;
ALAPI_SPEED_OF_SOUND alSpeedOfSound;
ALAPI_DISTANCE_MODEL alDistanceModel;
} ALAPI_FXN_TABLE;
#include "al\alc.h"
// ALCAPI
typedef struct ALCdevice_struct ALCdevice;
typedef struct ALCcontext_struct ALCcontext;
typedef ALCAPI ALCcontext* (ALCAPIENTRY *ALCAPI_CREATE_CONTEXT)(ALCdevice* device, const ALint* attrList);
typedef ALCAPI ALboolean (ALCAPIENTRY *ALCAPI_MAKE_CONTEXT_CURRENT)(ALCcontext* context);
typedef ALCAPI ALvoid (ALCAPIENTRY *ALCAPI_PROCESS_CONTEXT)(ALCcontext* context);
typedef ALCAPI ALCvoid (ALCAPIENTRY *ALCAPI_SUSPEND_CONTEXT)(ALCcontext* context);
typedef ALCAPI ALvoid (ALCAPIENTRY *ALCAPI_DESTROY_CONTEXT)(ALCcontext* context);
typedef ALCAPI ALCcontext* (ALCAPIENTRY *ALCAPI_GET_CURRENT_CONTEXT)(ALvoid);
typedef ALCAPI ALCdevice* (ALCAPIENTRY *ALCAPI_GET_CONTEXTS_DEVICE)(ALCcontext* context);
typedef ALCAPI ALCdevice* (ALCAPIENTRY *ALCAPI_OPEN_DEVICE)(const ALCchar* deviceName);
typedef ALCAPI ALCboolean (ALCAPIENTRY *ALCAPI_CLOSE_DEVICE)(ALCdevice* device);
typedef ALCAPI ALenum (ALCAPIENTRY *ALCAPI_GET_ERROR)(ALCdevice* device);
typedef ALCAPI ALboolean (ALCAPIENTRY *ALCAPI_IS_EXTENSION_PRESENT)(ALCdevice* device, const ALCchar* eName);
typedef ALCAPI ALvoid* (ALCAPIENTRY *ALCAPI_GET_PROC_ADDRESS)(ALCdevice* device, const ALCchar* fName);
typedef ALCAPI ALenum (ALCAPIENTRY *ALCAPI_GET_ENUM_VALUE)(ALCdevice* device, const ALCchar* eName);
typedef ALCAPI const ALCchar* (ALCAPIENTRY *ALCAPI_GET_STRING)(ALCdevice* device, ALenum param);
typedef ALCAPI ALvoid (ALCAPIENTRY *ALCAPI_GET_INTEGERV)(ALCdevice* device, ALenum param, ALsizei size, ALint* data);
typedef ALCAPI ALCdevice * (ALCAPIENTRY *ALCAPI_CAPTURE_OPEN_DEVICE)( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize );
typedef ALCAPI ALCboolean (ALCAPIENTRY *ALCAPI_CAPTURE_CLOSE_DEVICE)( ALCdevice *device );
typedef ALCAPI void (ALCAPIENTRY *ALCAPI_CAPTURE_START)( ALCdevice *device );
typedef ALCAPI void (ALCAPIENTRY *ALCAPI_CAPTURE_STOP)( ALCdevice *device );
typedef ALCAPI void (ALCAPIENTRY *ALCAPI_CAPTURE_SAMPLES)( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
typedef struct ALCAPI_FXN_TABLE_STRUCT
{
ALCAPI_CREATE_CONTEXT alcCreateContext;
ALCAPI_MAKE_CONTEXT_CURRENT alcMakeContextCurrent;
ALCAPI_PROCESS_CONTEXT alcProcessContext;
ALCAPI_SUSPEND_CONTEXT alcSuspendContext;
ALCAPI_DESTROY_CONTEXT alcDestroyContext;
ALCAPI_GET_CURRENT_CONTEXT alcGetCurrentContext;
ALCAPI_GET_CONTEXTS_DEVICE alcGetContextsDevice;
ALCAPI_OPEN_DEVICE alcOpenDevice;
ALCAPI_CLOSE_DEVICE alcCloseDevice;
ALCAPI_GET_ERROR alcGetError;
ALCAPI_IS_EXTENSION_PRESENT alcIsExtensionPresent;
ALCAPI_GET_PROC_ADDRESS alcGetProcAddress;
ALCAPI_GET_ENUM_VALUE alcGetEnumValue;
ALCAPI_GET_STRING alcGetString;
ALCAPI_GET_INTEGERV alcGetIntegerv;
ALCAPI_CAPTURE_OPEN_DEVICE alcCaptureOpenDevice;
ALCAPI_CAPTURE_CLOSE_DEVICE alcCaptureCloseDevice;
ALCAPI_CAPTURE_START alcCaptureStart;
ALCAPI_CAPTURE_STOP alcCaptureStop;
ALCAPI_CAPTURE_SAMPLES alcCaptureSamples;
} ALCAPI_FXN_TABLE;
#include "windows.h"
#include "alList.h"
//*****************************************************************************
// Additional Defines
//*****************************************************************************
typedef struct ALCdevice_struct
{
//
// These variables must always be initialized.
//
ALenum LastError;
ALint InUse;
//
// Support for 3rd party OpenAL implementations.
//
HINSTANCE Dll;
ALCAPI_FXN_TABLE AlcApi;
// Capture Device
ALCdevice* CaptureDevice;
struct ALCdevice_struct* DllDevice;
} ALCdevice;
typedef struct ALCcontext_struct
{
//
// These variables are always initialized.
//
ALlistEntry ListEntry;
ALboolean Suspended;
ALenum LastError;
ALCdevice* Device;
ALAPI_FXN_TABLE AlApi;
CRITICAL_SECTION Lock;
struct ALCcontext_struct* DllContext;
} ALCcontext;
extern ALlist* alContextList;
extern ALCcontext* alCurrentContext;
// Device Enumeration structures, strings and variables
typedef struct _ALDEVICE
{
ALchar *pszDeviceName;
TCHAR *pszHostDLLFilename;
struct _ALDEVICE *pNextDevice;
} ALDEVICE;
extern ALchar *pszDefaultDeviceSpecifier;
extern ALchar *pszDeviceSpecifierList;
extern ALchar *pszDefaultCaptureDeviceSpecifier;
extern ALchar *pszCaptureDeviceSpecifierList;
extern ALchar *pszDefaultAllDevicesSpecifier;
extern ALchar *pszAllDevicesSpecifierList;
extern ALDEVICE *g_pDeviceList;
extern ALDEVICE *g_pCaptureDeviceList;
extern ALDEVICE *g_pAllDevicesList;
#ifdef __cplusplus
}
#endif
#endif