1#ifndef AL_AL_H
2#define AL_AL_H
3
4#if defined(__cplusplus)
5extern "C" {
6#endif
7
8#ifndef AL_API
9 #if defined(AL_LIBTYPE_STATIC)
10 #define AL_API
11 #elif defined(_WIN32)
12 #define AL_API __declspec(dllimport)
13 #else
14 #define AL_API extern
15 #endif
16#endif
17
18#if defined(_WIN32)
19 #define AL_APIENTRY __cdecl
20#else
21 #define AL_APIENTRY
22#endif
23
24
25/** Deprecated macro. */
26#define OPENAL
27#define ALAPI AL_API
28#define ALAPIENTRY AL_APIENTRY
29#define AL_INVALID (-1)
30#define AL_ILLEGAL_ENUM AL_INVALID_ENUM
31#define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION
32
33/** Supported AL version. */
34#define AL_VERSION_1_0
35#define AL_VERSION_1_1
36
37/** 8-bit boolean */
38typedef char ALboolean;
39
40/** character */
41typedef char ALchar;
42
43/** signed 8-bit 2's complement integer */
44typedef signed char ALbyte;
45
46/** unsigned 8-bit integer */
47typedef unsigned char ALubyte;
48
49/** signed 16-bit 2's complement integer */
50typedef short ALshort;
51
52/** unsigned 16-bit integer */
53typedef unsigned short ALushort;
54
55/** signed 32-bit 2's complement integer */
56typedef int ALint;
57
58/** unsigned 32-bit integer */
59typedef unsigned int ALuint;
60
61/** non-negative 32-bit binary integer size */
62typedef int ALsizei;
63
64/** enumerated 32-bit value */
65typedef int ALenum;
66
67/** 32-bit IEEE754 floating-point */
68typedef float ALfloat;
69
70/** 64-bit IEEE754 floating-point */
71typedef double ALdouble;
72
73/** void type (for opaque pointers only) */
74typedef void ALvoid;
75
76
77/* Enumerant values begin at column 50. No tabs. */
78
79/** "no distance model" or "no buffer" */
80#define AL_NONE 0
81
82/** Boolean False. */
83#define AL_FALSE 0
84
85/** Boolean True. */
86#define AL_TRUE 1
87
88
89/**
90 * Relative source.
91 * Type: ALboolean
92 * Range: [AL_TRUE, AL_FALSE]
93 * Default: AL_FALSE
94 *
95 * Specifies if the Source has relative coordinates.
96 */
97#define AL_SOURCE_RELATIVE 0x202
98
99
100/**
101 * Inner cone angle, in degrees.
102 * Type: ALint, ALfloat
103 * Range: [0 - 360]
104 * Default: 360
105 *
106 * The angle covered by the inner cone, where the source will not attenuate.
107 */
108#define AL_CONE_INNER_ANGLE 0x1001
109
110/**
111 * Outer cone angle, in degrees.
112 * Range: [0 - 360]
113 * Default: 360
114 *
115 * The angle covered by the outer cone, where the source will be fully
116 * attenuated.
117 */
118#define AL_CONE_OUTER_ANGLE 0x1002
119
120/**
121 * Source pitch.
122 * Type: ALfloat
123 * Range: [0.5 - 2.0]
124 * Default: 1.0
125 *
126 * A multiplier for the frequency (sample rate) of the source's buffer.
127 */
128#define AL_PITCH 0x1003
129
130/**
131 * Source or listener position.
132 * Type: ALfloat[3], ALint[3]
133 * Default: {0, 0, 0}
134 *
135 * The source or listener location in three dimensional space.
136 *
137 * OpenAL, like OpenGL, uses a right handed coordinate system, where in a
138 * frontal default view X (thumb) points right, Y points up (index finger), and
139 * Z points towards the viewer/camera (middle finger).
140 *
141 * To switch from a left handed coordinate system, flip the sign on the Z
142 * coordinate.
143 */
144#define AL_POSITION 0x1004
145
146/**
147 * Source direction.
148 * Type: ALfloat[3], ALint[3]
149 * Default: {0, 0, 0}
150 *
151 * Specifies the current direction in local space.
152 * A zero-length vector specifies an omni-directional source (cone is ignored).
153 */
154#define AL_DIRECTION 0x1005
155
156/**
157 * Source or listener velocity.
158 * Type: ALfloat[3], ALint[3]
159 * Default: {0, 0, 0}
160 *
161 * Specifies the current velocity in local space.
162 */
163#define AL_VELOCITY 0x1006
164
165/**
166 * Source looping.
167 * Type: ALboolean
168 * Range: [AL_TRUE, AL_FALSE]
169 * Default: AL_FALSE
170 *
171 * Specifies whether source is looping.
172 */
173#define AL_LOOPING 0x1007
174
175/**
176 * Source buffer.
177 * Type: ALuint
178 * Range: any valid Buffer.
179 *
180 * Specifies the buffer to provide sound samples.
181 */
182#define AL_BUFFER 0x1009
183
184/**
185 * Source or listener gain.
186 * Type: ALfloat
187 * Range: [0.0 - ]
188 *
189 * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
190 * of about -6dB. Each multiplicaton by 2 equals an amplification of about
191 * +6dB.
192 *
193 * A value of 0.0 is meaningless with respect to a logarithmic scale; it is
194 * silent.
195 */
196#define AL_GAIN 0x100A
197
198/**
199 * Minimum source gain.
200 * Type: ALfloat
201 * Range: [0.0 - 1.0]
202 *
203 * The minimum gain allowed for a source, after distance and cone attenation is
204 * applied (if applicable).
205 */
206#define AL_MIN_GAIN 0x100D
207
208/**
209 * Maximum source gain.
210 * Type: ALfloat
211 * Range: [0.0 - 1.0]
212 *
213 * The maximum gain allowed for a source, after distance and cone attenation is
214 * applied (if applicable).
215 */
216#define AL_MAX_GAIN 0x100E
217
218/**
219 * Listener orientation.
220 * Type: ALfloat[6]
221 * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
222 *
223 * Effectively two three dimensional vectors. The first vector is the front (or
224 * "at") and the second is the top (or "up").
225 *
226 * Both vectors are in local space.
227 */
228#define AL_ORIENTATION 0x100F
229
230/**
231 * Source state (query only).
232 * Type: ALint
233 * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]
234 */
235#define AL_SOURCE_STATE 0x1010
236
237/** Source state value. */
238#define AL_INITIAL 0x1011
239#define AL_PLAYING 0x1012
240#define AL_PAUSED 0x1013
241#define AL_STOPPED 0x1014
242
243/**
244 * Source Buffer Queue size (query only).
245 * Type: ALint
246 *
247 * The number of buffers queued using alSourceQueueBuffers, minus the buffers
248 * removed with alSourceUnqueueBuffers.
249 */
250#define AL_BUFFERS_QUEUED 0x1015
251
252/**
253 * Source Buffer Queue processed count (query only).
254 * Type: ALint
255 *
256 * The number of queued buffers that have been fully processed, and can be
257 * removed with alSourceUnqueueBuffers.
258 *
259 * Looping sources will never fully process buffers because they will be set to
260 * play again for when the source loops.
261 */
262#define AL_BUFFERS_PROCESSED 0x1016
263
264/**
265 * Source reference distance.
266 * Type: ALfloat
267 * Range: [0.0 - ]
268 * Default: 1.0
269 *
270 * The distance in units that no attenuation occurs.
271 *
272 * At 0.0, no distance attenuation ever occurs on non-linear attenuation models.
273 */
274#define AL_REFERENCE_DISTANCE 0x1020
275
276/**
277 * Source rolloff factor.
278 * Type: ALfloat
279 * Range: [0.0 - ]
280 * Default: 1.0
281 *
282 * Multiplier to exaggerate or diminish distance attenuation.
283 *
284 * At 0.0, no distance attenuation ever occurs.
285 */
286#define AL_ROLLOFF_FACTOR 0x1021
287
288/**
289 * Outer cone gain.
290 * Type: ALfloat
291 * Range: [0.0 - 1.0]
292 * Default: 0.0
293 *
294 * The gain attenuation applied when the listener is outside of the source's
295 * outer cone.
296 */
297#define AL_CONE_OUTER_GAIN 0x1022
298
299/**
300 * Source maximum distance.
301 * Type: ALfloat
302 * Range: [0.0 - ]
303 * Default: +inf
304 *
305 * The distance above which the source is not attenuated any further with a
306 * clamped distance model, or where attenuation reaches 0.0 gain for linear
307 * distance models with a default rolloff factor.
308 */
309#define AL_MAX_DISTANCE 0x1023
310
311/** Source buffer position, in seconds */
312#define AL_SEC_OFFSET 0x1024
313/** Source buffer position, in sample frames */
314#define AL_SAMPLE_OFFSET 0x1025
315/** Source buffer position, in bytes */
316#define AL_BYTE_OFFSET 0x1026
317
318/**
319 * Source type (query only).
320 * Type: ALint
321 * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]
322 *
323 * A Source is Static if a Buffer has been attached using AL_BUFFER.
324 *
325 * A Source is Streaming if one or more Buffers have been attached using
326 * alSourceQueueBuffers.
327 *
328 * A Source is Undetermined when it has the NULL buffer attached using
329 * AL_BUFFER.
330 */
331#define AL_SOURCE_TYPE 0x1027
332
333/** Source type value. */
334#define AL_STATIC 0x1028
335#define AL_STREAMING 0x1029
336#define AL_UNDETERMINED 0x1030
337
338/** Buffer format specifier. */
339#define AL_FORMAT_MONO8 0x1100
340#define AL_FORMAT_MONO16 0x1101
341#define AL_FORMAT_STEREO8 0x1102
342#define AL_FORMAT_STEREO16 0x1103
343
344/** Buffer frequency (query only). */
345#define AL_FREQUENCY 0x2001
346/** Buffer bits per sample (query only). */
347#define AL_BITS 0x2002
348/** Buffer channel count (query only). */
349#define AL_CHANNELS 0x2003
350/** Buffer data size (query only). */
351#define AL_SIZE 0x2004
352
353/**
354 * Buffer state.
355 *
356 * Not for public use.
357 */
358#define AL_UNUSED 0x2010
359#define AL_PENDING 0x2011
360#define AL_PROCESSED 0x2012
361
362
363/** No error. */
364#define AL_NO_ERROR 0
365
366/** Invalid name paramater passed to AL call. */
367#define AL_INVALID_NAME 0xA001
368
369/** Invalid enum parameter passed to AL call. */
370#define AL_INVALID_ENUM 0xA002
371
372/** Invalid value parameter passed to AL call. */
373#define AL_INVALID_VALUE 0xA003
374
375/** Illegal AL call. */
376#define AL_INVALID_OPERATION 0xA004
377
378/** Not enough memory. */
379#define AL_OUT_OF_MEMORY 0xA005
380
381
382/** Context string: Vendor ID. */
383#define AL_VENDOR 0xB001
384/** Context string: Version. */
385#define AL_VERSION 0xB002
386/** Context string: Renderer ID. */
387#define AL_RENDERER 0xB003
388/** Context string: Space-separated extension list. */
389#define AL_EXTENSIONS 0xB004
390
391
392/**
393 * Doppler scale.
394 * Type: ALfloat
395 * Range: [0.0 - ]
396 * Default: 1.0
397 *
398 * Scale for source and listener velocities.
399 */
400#define AL_DOPPLER_FACTOR 0xC000
401AL_API void AL_APIENTRY alDopplerFactor(ALfloat value);
402
403/**
404 * Doppler velocity (deprecated).
405 *
406 * A multiplier applied to the Speed of Sound.
407 */
408#define AL_DOPPLER_VELOCITY 0xC001
409AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value);
410
411/**
412 * Speed of Sound, in units per second.
413 * Type: ALfloat
414 * Range: [0.0001 - ]
415 * Default: 343.3
416 *
417 * The speed at which sound waves are assumed to travel, when calculating the
418 * doppler effect.
419 */
420#define AL_SPEED_OF_SOUND 0xC003
421AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value);
422
423/**
424 * Distance attenuation model.
425 * Type: ALint
426 * Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
427 * AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
428 * AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
429 * Default: AL_INVERSE_DISTANCE_CLAMPED
430 *
431 * The model by which sources attenuate with distance.
432 *
433 * None - No distance attenuation.
434 * Inverse - Doubling the distance halves the source gain.
435 * Linear - Linear gain scaling between the reference and max distances.
436 * Exponent - Exponential gain dropoff.
437 *
438 * Clamped variations work like the non-clamped counterparts, except the
439 * distance calculated is clamped between the reference and max distances.
440 */
441#define AL_DISTANCE_MODEL 0xD000
442AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel);
443
444/** Distance model value. */
445#define AL_INVERSE_DISTANCE 0xD001
446#define AL_INVERSE_DISTANCE_CLAMPED 0xD002
447#define AL_LINEAR_DISTANCE 0xD003
448#define AL_LINEAR_DISTANCE_CLAMPED 0xD004
449#define AL_EXPONENT_DISTANCE 0xD005
450#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006
451
452/** Renderer State management. */
453AL_API void AL_APIENTRY alEnable(ALenum capability);
454AL_API void AL_APIENTRY alDisable(ALenum capability);
455AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability);
456
457/** State retrieval. */
458AL_API const ALchar* AL_APIENTRY alGetString(ALenum param);
459AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values);
460AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values);
461AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values);
462AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values);
463AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param);
464AL_API ALint AL_APIENTRY alGetInteger(ALenum param);
465AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param);
466AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param);
467
468/**
469 * Error retrieval.
470 *
471 * Obtain the first error generated in the AL context since the last check.
472 */
473AL_API ALenum AL_APIENTRY alGetError(void);
474
475/**
476 * Extension support.
477 *
478 * Query for the presence of an extension, and obtain any appropriate function
479 * pointers and enum values.
480 */
481AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname);
482AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname);
483AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename);
484
485
486/** Set Listener parameters */
487AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value);
488AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
489AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values);
490AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value);
491AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);
492AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values);
493
494/** Get Listener parameters */
495AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value);
496AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
497AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values);
498AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value);
499AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);
500AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values);
501
502
503/** Create Source objects. */
504AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources);
505/** Delete Source objects. */
506AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources);
507/** Verify a handle is a valid Source. */
508AL_API ALboolean AL_APIENTRY alIsSource(ALuint source);
509
510/** Set Source parameters. */
511AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value);
512AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
513AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values);
514AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value);
515AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
516AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values);
517
518/** Get Source parameters. */
519AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value);
520AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
521AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
522AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value);
523AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
524AL_API void AL_APIENTRY alGetSourceiv(ALuint source, ALenum param, ALint *values);
525
526
527/** Play, replay, or resume (if paused) a list of Sources */
528AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources);
529/** Stop a list of Sources */
530AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources);
531/** Rewind a list of Sources */
532AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources);
533/** Pause a list of Sources */
534AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources);
535
536/** Play, replay, or resume a Source */
537AL_API void AL_APIENTRY alSourcePlay(ALuint source);
538/** Stop a Source */
539AL_API void AL_APIENTRY alSourceStop(ALuint source);
540/** Rewind a Source (set playback postiton to beginning) */
541AL_API void AL_APIENTRY alSourceRewind(ALuint source);
542/** Pause a Source */
543AL_API void AL_APIENTRY alSourcePause(ALuint source);
544
545/** Queue buffers onto a source */
546AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);
547/** Unqueue processed buffers from a source */
548AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);
549
550
551/** Create Buffer objects */
552AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers);
553/** Delete Buffer objects */
554AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers);
555/** Verify a handle is a valid Buffer */
556AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer);
557
558/** Specifies the data to be copied into a buffer */
559AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
560
561/** Set Buffer parameters, */
562AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value);
563AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
564AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);
565AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value);
566AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
567AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values);
568
569/** Get Buffer parameters. */
570AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
571AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
572AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
573AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value);
574AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
575AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
576
577/** Pointer-to-function type, useful for dynamically getting AL entry points. */
578typedef void (AL_APIENTRY *LPALENABLE)(ALenum capability);
579typedef void (AL_APIENTRY *LPALDISABLE)(ALenum capability);
580typedef ALboolean (AL_APIENTRY *LPALISENABLED)(ALenum capability);
581typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param);
582typedef void (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values);
583typedef void (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values);
584typedef void (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values);
585typedef void (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values);
586typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param);
587typedef ALint (AL_APIENTRY *LPALGETINTEGER)(ALenum param);
588typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)(ALenum param);
589typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)(ALenum param);
590typedef ALenum (AL_APIENTRY *LPALGETERROR)(void);
591typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname);
592typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname);
593typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename);
594typedef void (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value);
595typedef void (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
596typedef void (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values);
597typedef void (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value);
598typedef void (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3);
599typedef void (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values);
600typedef void (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value);
601typedef void (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
602typedef void (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values);
603typedef void (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value);
604typedef void (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3);
605typedef void (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values);
606typedef void (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources);
607typedef void (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources);
608typedef ALboolean (AL_APIENTRY *LPALISSOURCE)(ALuint source);
609typedef void (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value);
610typedef void (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
611typedef void (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values);
612typedef void (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value);
613typedef void (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
614typedef void (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values);
615typedef void (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value);
616typedef void (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
617typedef void (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values);
618typedef void (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value);
619typedef void (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
620typedef void (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values);
621typedef void (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources);
622typedef void (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources);
623typedef void (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources);
624typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources);
625typedef void (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source);
626typedef void (AL_APIENTRY *LPALSOURCESTOP)(ALuint source);
627typedef void (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source);
628typedef void (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source);
629typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers);
630typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers);
631typedef void (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers);
632typedef void (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers);
633typedef ALboolean (AL_APIENTRY *LPALISBUFFER)(ALuint buffer);
634typedef void (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
635typedef void (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value);
636typedef void (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
637typedef void (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values);
638typedef void (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value);
639typedef void (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
640typedef void (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values);
641typedef void (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value);
642typedef void (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
643typedef void (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values);
644typedef void (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value);
645typedef void (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
646typedef void (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values);
647typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value);
648typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value);
649typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value);
650typedef void (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel);
651
652#if defined(__cplusplus)
653} /* extern "C" */
654#endif
655
656#endif /* AL_AL_H */
657