Add _DEBUG/NDEBUG defines when DEBUG/NODEBUG options are used, respectively
[openal-soft.git] / Router / OpenAL32.h
bloba291a5a8479232d01f18394e708042839a0ee107
1 /**
2 * OpenAL cross platform audio library
3 * Copyright (C) 1999-2000 by authors.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 * Or go to http://www.gnu.org/copyleft/lgpl.html
24 #ifndef _OPENAL32_H_
25 #define _OPENAL32_H_
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
31 #define AL_BUILD_LIBRARY
33 #include "al\al.h"
35 // ALAPI
36 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_ENABLE)(ALenum capability);
37 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DISABLE)(ALenum capability);
38 typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_ENABLED)(ALenum capability);
40 typedef ALAPI const ALchar* (ALAPIENTRY *ALAPI_GET_STRING)(ALenum param);
41 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BOOLEANV)(ALenum param, ALboolean* data);
42 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_INTEGERV)(ALenum param, ALint* data);
43 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_FLOATV)(ALenum param, ALfloat* data);
44 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_DOUBLEV)(ALenum param, ALdouble* data);
45 typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_GET_BOOLEAN)(ALenum param);
46 typedef ALAPI ALint (ALAPIENTRY *ALAPI_GET_INTEGER)(ALenum param);
47 typedef ALAPI ALfloat (ALAPIENTRY *ALAPI_GET_FLOAT)(ALenum param);
48 typedef ALAPI ALdouble (ALAPIENTRY *ALAPI_GET_DOUBLE)(ALenum param);
50 typedef ALAPI ALenum (ALAPIENTRY *ALAPI_GET_ERROR)(ALvoid);
52 typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_EXTENSION_PRESENT)(const ALchar* ename);
53 typedef ALAPI ALvoid* (ALAPIENTRY *ALAPI_GET_PROC_ADDRESS)(const ALchar* fname);
54 typedef ALAPI ALenum (ALAPIENTRY *ALAPI_GET_ENUM_VALUE)(const ALchar* ename);
56 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERF)(ALenum param, ALfloat value);
57 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENER3F)(ALenum param, ALfloat v1, ALfloat v2, ALfloat v3);
58 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERFV)(ALenum param, const ALfloat* values);
59 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERI)(ALenum param, ALint value);
60 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENER3I)( ALenum param, ALint value1, ALint value2, ALint value3 );
61 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_LISTENERIV)( ALenum param, const ALint* values );
62 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERF)(ALenum param, ALfloat* value);
63 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENER3F)(ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3);
64 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERFV)(ALenum param, ALfloat* values);
65 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERI)(ALenum param, ALint* value);
66 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENER3I)( ALenum param, ALint *value1, ALint *value2, ALint *value3 );
67 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_LISTENERIV)( ALenum param, ALint* values );
69 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GEN_SOURCES)(ALsizei n, ALuint* sourceNames);
70 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DELETE_SOURCES)(ALsizei n, const ALuint* sourceNames);
71 typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_SOURCE)(ALuint id);
72 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEF)(ALuint sourceName, ALenum param, ALfloat value);
73 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE3F)(ALuint sourceName, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3);
74 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEFV)(ALuint sourceName, ALenum param, const ALfloat* values);
75 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEI)(ALuint sourceName, ALenum param, ALint value);
76 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE3I)( ALuint sid, ALenum param, ALint value1, ALint value2, ALint value3 );
77 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCEIV)( ALuint sid, ALenum param, const ALint* values );
78 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEF)(ALuint sourceName, ALenum param, ALfloat* value);
79 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCE3F)(ALuint sourceName, ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3);
80 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEFV)(ALuint sourceName, ALenum param, const ALfloat* values);
81 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEI)(ALuint sourceName, ALenum param, ALint* value);
82 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCE3I)( ALuint sid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
83 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_SOURCEIV)( ALuint sid, ALenum param, ALint* values );
84 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PLAYV)(ALsizei n, const ALuint* sources);
85 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_STOPV)(ALsizei n, const ALuint* sources);
86 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_REWINDV)(ALsizei n, const ALuint* sources);
87 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PAUSEV)(ALsizei n, const ALuint* sources);
88 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PLAY)(ALuint sourceName);
89 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_STOP)(ALuint sourceName);
90 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_REWIND)(ALuint sourceName);
91 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_PAUSE)(ALuint sourceName);
93 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_QUEUE_BUFFERS)(ALuint sourceName, ALsizei n, const ALuint* bufferNames);
94 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SOURCE_UNQUEUE_BUFFERS)(ALuint sourceName, ALsizei n, ALuint* bufferNames);
96 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GEN_BUFFERS)(ALsizei n, ALuint* bufferNames);
97 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DELETE_BUFFERS)(ALsizei n, const ALuint* bufferNames);
98 typedef ALAPI ALboolean (ALAPIENTRY *ALAPI_IS_BUFFER)(ALuint bufferName);
99 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFER_DATA)(ALuint bufferName, ALenum format, const ALvoid* data, ALsizei size, ALuint freq);
101 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERF)( ALuint bid, ALenum param, ALfloat value);
102 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFER3F)( ALuint bid, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3 );
103 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERFV)( ALuint bid, ALenum param, const ALfloat* values );
104 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERI)( ALuint bid, ALenum param, ALint value);
105 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFER3I)( ALuint bid, ALenum param, ALint value1, ALint value2, ALint value3 );
106 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_BUFFERIV)( ALuint bid, ALenum param, const ALint* values );
108 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERF)( ALuint bid, ALenum param, ALfloat* value );
109 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFER3F)( ALuint bid, ALenum param, ALfloat* value1, ALfloat* value2, ALfloat* value3);
110 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERFV)( ALuint bid, ALenum param, ALfloat* values );
111 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERI)( ALuint bid, ALenum param, ALint* value );
112 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFER3I)( ALuint bid, ALenum param, ALint* value1, ALint* value2, ALint* value3);
113 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_GET_BUFFERIV)( ALuint bid, ALenum param, ALint* values );
115 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DOPPLER_FACTOR)(ALfloat value);
116 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DOPPLER_VELOCITY)(ALfloat value);
117 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_SPEED_OF_SOUND)(ALfloat value);
118 typedef ALAPI ALvoid (ALAPIENTRY *ALAPI_DISTANCE_MODEL)(ALenum value);
120 typedef struct ALAPI_FXN_TABLE_STRUCT
122 ALAPI_ENABLE alEnable;
123 ALAPI_DISABLE alDisable;
124 ALAPI_IS_ENABLED alIsEnabled;
126 ALAPI_GET_STRING alGetString;
127 ALAPI_GET_BOOLEANV alGetBooleanv;
128 ALAPI_GET_INTEGERV alGetIntegerv;
129 ALAPI_GET_FLOATV alGetFloatv;
130 ALAPI_GET_DOUBLEV alGetDoublev;
131 ALAPI_GET_BOOLEAN alGetBoolean;
132 ALAPI_GET_INTEGER alGetInteger;
133 ALAPI_GET_FLOAT alGetFloat;
134 ALAPI_GET_DOUBLE alGetDouble;
136 ALAPI_GET_ERROR alGetError;
138 ALAPI_IS_EXTENSION_PRESENT alIsExtensionPresent;
139 ALAPI_GET_PROC_ADDRESS alGetProcAddress;
140 ALAPI_GET_ENUM_VALUE alGetEnumValue;
142 ALAPI_LISTENERF alListenerf;
143 ALAPI_LISTENER3F alListener3f;
144 ALAPI_LISTENERFV alListenerfv;
145 ALAPI_LISTENERI alListeneri;
146 ALAPI_LISTENER3I alListener3i;
147 ALAPI_LISTENERIV alListeneriv;
149 ALAPI_GET_LISTENERF alGetListenerf;
150 ALAPI_GET_LISTENER3F alGetListener3f;
151 ALAPI_GET_LISTENERFV alGetListenerfv;
152 ALAPI_GET_LISTENERI alGetListeneri;
153 ALAPI_GET_LISTENER3I alGetListener3i;
154 ALAPI_GET_LISTENERIV alGetListeneriv;
156 ALAPI_GEN_SOURCES alGenSources;
157 ALAPI_DELETE_SOURCES alDeleteSources;
158 ALAPI_IS_SOURCE alIsSource;
159 ALAPI_SOURCEF alSourcef;
160 ALAPI_SOURCE3F alSource3f;
161 ALAPI_SOURCEFV alSourcefv;
162 ALAPI_SOURCEI alSourcei;
163 ALAPI_SOURCE3I alSource3i;
164 ALAPI_SOURCEIV alSourceiv;
165 ALAPI_GET_SOURCEF alGetSourcef;
166 ALAPI_GET_SOURCE3F alGetSource3f;
167 ALAPI_GET_SOURCEFV alGetSourcefv;
168 ALAPI_GET_SOURCEI alGetSourcei;
169 ALAPI_GET_SOURCE3I alGetSource3i;
170 ALAPI_GET_SOURCEIV alGetSourceiv;
171 ALAPI_SOURCE_PLAYV alSourcePlayv;
172 ALAPI_SOURCE_STOPV alSourceStopv;
173 ALAPI_SOURCE_REWINDV alSourceRewindv;
174 ALAPI_SOURCE_PAUSEV alSourcePausev;
175 ALAPI_SOURCE_PLAY alSourcePlay;
176 ALAPI_SOURCE_STOP alSourceStop;
177 ALAPI_SOURCE_REWIND alSourceRewind;
178 ALAPI_SOURCE_PAUSE alSourcePause;
180 ALAPI_SOURCE_QUEUE_BUFFERS alSourceQueueBuffers;
181 ALAPI_SOURCE_UNQUEUE_BUFFERS alSourceUnqueueBuffers;
183 ALAPI_GEN_BUFFERS alGenBuffers;
184 ALAPI_DELETE_BUFFERS alDeleteBuffers;
185 ALAPI_IS_BUFFER alIsBuffer;
186 ALAPI_BUFFER_DATA alBufferData;
187 ALAPI_BUFFERF alBufferf;
188 ALAPI_BUFFER3F alBuffer3f;
189 ALAPI_BUFFERFV alBufferfv;
190 ALAPI_BUFFERI alBufferi;
191 ALAPI_BUFFER3I alBuffer3i;
192 ALAPI_BUFFERIV alBufferiv;
193 ALAPI_GET_BUFFERF alGetBufferf;
194 ALAPI_GET_BUFFER3F alGetBuffer3f;
195 ALAPI_GET_BUFFERFV alGetBufferfv;
196 ALAPI_GET_BUFFERI alGetBufferi;
197 ALAPI_GET_BUFFER3I alGetBuffer3i;
198 ALAPI_GET_BUFFERIV alGetBufferiv;
200 ALAPI_DOPPLER_FACTOR alDopplerFactor;
201 ALAPI_DOPPLER_VELOCITY alDopplerVelocity;
202 ALAPI_SPEED_OF_SOUND alSpeedOfSound;
203 ALAPI_DISTANCE_MODEL alDistanceModel;
205 } ALAPI_FXN_TABLE;
207 #include "al\alc.h"
209 // ALCAPI
210 typedef struct ALCdevice_struct ALCdevice;
211 typedef struct ALCcontext_struct ALCcontext;
213 typedef ALCAPI ALCcontext* (ALCAPIENTRY *ALCAPI_CREATE_CONTEXT)(ALCdevice* device, const ALint* attrList);
214 typedef ALCAPI ALboolean (ALCAPIENTRY *ALCAPI_MAKE_CONTEXT_CURRENT)(ALCcontext* context);
215 typedef ALCAPI ALvoid (ALCAPIENTRY *ALCAPI_PROCESS_CONTEXT)(ALCcontext* context);
216 typedef ALCAPI ALCvoid (ALCAPIENTRY *ALCAPI_SUSPEND_CONTEXT)(ALCcontext* context);
217 typedef ALCAPI ALvoid (ALCAPIENTRY *ALCAPI_DESTROY_CONTEXT)(ALCcontext* context);
218 typedef ALCAPI ALCcontext* (ALCAPIENTRY *ALCAPI_GET_CURRENT_CONTEXT)(ALvoid);
219 typedef ALCAPI ALCdevice* (ALCAPIENTRY *ALCAPI_GET_CONTEXTS_DEVICE)(ALCcontext* context);
221 typedef ALCAPI ALCdevice* (ALCAPIENTRY *ALCAPI_OPEN_DEVICE)(const ALCchar* deviceName);
222 typedef ALCAPI ALCboolean (ALCAPIENTRY *ALCAPI_CLOSE_DEVICE)(ALCdevice* device);
224 typedef ALCAPI ALenum (ALCAPIENTRY *ALCAPI_GET_ERROR)(ALCdevice* device);
226 typedef ALCAPI ALboolean (ALCAPIENTRY *ALCAPI_IS_EXTENSION_PRESENT)(ALCdevice* device, const ALCchar* eName);
227 typedef ALCAPI ALvoid* (ALCAPIENTRY *ALCAPI_GET_PROC_ADDRESS)(ALCdevice* device, const ALCchar* fName);
228 typedef ALCAPI ALenum (ALCAPIENTRY *ALCAPI_GET_ENUM_VALUE)(ALCdevice* device, const ALCchar* eName);
230 typedef ALCAPI const ALCchar* (ALCAPIENTRY *ALCAPI_GET_STRING)(ALCdevice* device, ALenum param);
231 typedef ALCAPI ALvoid (ALCAPIENTRY *ALCAPI_GET_INTEGERV)(ALCdevice* device, ALenum param, ALsizei size, ALint* data);
233 typedef ALCAPI ALCdevice * (ALCAPIENTRY *ALCAPI_CAPTURE_OPEN_DEVICE)( const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize );
234 typedef ALCAPI ALCboolean (ALCAPIENTRY *ALCAPI_CAPTURE_CLOSE_DEVICE)( ALCdevice *device );
235 typedef ALCAPI void (ALCAPIENTRY *ALCAPI_CAPTURE_START)( ALCdevice *device );
236 typedef ALCAPI void (ALCAPIENTRY *ALCAPI_CAPTURE_STOP)( ALCdevice *device );
237 typedef ALCAPI void (ALCAPIENTRY *ALCAPI_CAPTURE_SAMPLES)( ALCdevice *device, ALCvoid *buffer, ALCsizei samples );
239 typedef struct ALCAPI_FXN_TABLE_STRUCT
241 ALCAPI_CREATE_CONTEXT alcCreateContext;
242 ALCAPI_MAKE_CONTEXT_CURRENT alcMakeContextCurrent;
243 ALCAPI_PROCESS_CONTEXT alcProcessContext;
244 ALCAPI_SUSPEND_CONTEXT alcSuspendContext;
245 ALCAPI_DESTROY_CONTEXT alcDestroyContext;
246 ALCAPI_GET_CURRENT_CONTEXT alcGetCurrentContext;
247 ALCAPI_GET_CONTEXTS_DEVICE alcGetContextsDevice;
249 ALCAPI_OPEN_DEVICE alcOpenDevice;
250 ALCAPI_CLOSE_DEVICE alcCloseDevice;
252 ALCAPI_GET_ERROR alcGetError;
254 ALCAPI_IS_EXTENSION_PRESENT alcIsExtensionPresent;
255 ALCAPI_GET_PROC_ADDRESS alcGetProcAddress;
256 ALCAPI_GET_ENUM_VALUE alcGetEnumValue;
258 ALCAPI_GET_STRING alcGetString;
259 ALCAPI_GET_INTEGERV alcGetIntegerv;
261 ALCAPI_CAPTURE_OPEN_DEVICE alcCaptureOpenDevice;
262 ALCAPI_CAPTURE_CLOSE_DEVICE alcCaptureCloseDevice;
263 ALCAPI_CAPTURE_START alcCaptureStart;
264 ALCAPI_CAPTURE_STOP alcCaptureStop;
265 ALCAPI_CAPTURE_SAMPLES alcCaptureSamples;
267 } ALCAPI_FXN_TABLE;
269 #include "windows.h"
270 #include "alList.h"
273 //*****************************************************************************
274 // Additional Defines
275 //*****************************************************************************
277 typedef struct ALCdevice_struct
280 // These variables must always be initialized.
282 ALenum LastError;
283 ALint InUse;
286 // Support for 3rd party OpenAL implementations.
288 HINSTANCE Dll;
289 ALCAPI_FXN_TABLE AlcApi;
291 // Capture Device
292 ALCdevice* CaptureDevice;
294 struct ALCdevice_struct* DllDevice;
296 } ALCdevice;
298 typedef struct ALCcontext_struct
301 // These variables are always initialized.
303 ALlistEntry ListEntry;
304 ALboolean Suspended;
305 ALenum LastError;
306 ALCdevice* Device;
307 ALAPI_FXN_TABLE AlApi;
308 CRITICAL_SECTION Lock;
309 struct ALCcontext_struct* DllContext;
311 } ALCcontext;
314 extern ALlist* alContextList;
315 extern ALCcontext* alCurrentContext;
317 // Device Enumeration structures, strings and variables
318 typedef struct _ALDEVICE
320 ALchar *pszDeviceName;
321 TCHAR *pszHostDLLFilename;
322 struct _ALDEVICE *pNextDevice;
323 } ALDEVICE;
325 extern ALchar *pszDefaultDeviceSpecifier;
326 extern ALchar *pszDeviceSpecifierList;
327 extern ALchar *pszDefaultCaptureDeviceSpecifier;
328 extern ALchar *pszCaptureDeviceSpecifierList;
329 extern ALchar *pszDefaultAllDevicesSpecifier;
330 extern ALchar *pszAllDevicesSpecifierList;
332 extern ALDEVICE *g_pDeviceList;
333 extern ALDEVICE *g_pCaptureDeviceList;
334 extern ALDEVICE *g_pAllDevicesList;
336 #ifdef __cplusplus
338 #endif
340 #endif