1 #ifndef AL_AL_H
2 #define AL_AL_H
3 
4 #if defined(__cplusplus)
5 extern "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 macros. */
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 versions. */
34 #define AL_VERSION_1_0
35 #define AL_VERSION_1_1
36 
37 /** 8-bit boolean */
38 typedef char ALboolean;
39 
40 /** character */
41 typedef char ALchar;
42 
43 /** signed 8-bit 2's complement integer */
44 typedef signed char ALbyte;
45 
46 /** unsigned 8-bit integer */
47 typedef unsigned char ALubyte;
48 
49 /** signed 16-bit 2's complement integer */
50 typedef short ALshort;
51 
52 /** unsigned 16-bit integer */
53 typedef unsigned short ALushort;
54 
55 /** signed 32-bit 2's complement integer */
56 typedef int ALint;
57 
58 /** unsigned 32-bit integer */
59 typedef unsigned int ALuint;
60 
61 /** non-negative 32-bit binary integer size */
62 typedef int ALsizei;
63 
64 /** enumerated 32-bit value */
65 typedef int ALenum;
66 
67 /** 32-bit IEEE754 floating-point */
68 typedef float ALfloat;
69 
70 /** 64-bit IEEE754 floating-point */
71 typedef double ALdouble;
72 
73 /** void type (for opaque pointers only) */
74 typedef 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 values. */
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: FLT_MAX
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 values. */
334 #define AL_STATIC                                0x1028
335 #define AL_STREAMING                             0x1029
336 #define AL_UNDETERMINED                          0x1030
337 
338 /** Unsigned 8-bit mono buffer format. */
339 #define AL_FORMAT_MONO8                          0x1100
340 /** Signed 16-bit mono buffer format. */
341 #define AL_FORMAT_MONO16                         0x1101
342 /** Unsigned 8-bit stereo buffer format. */
343 #define AL_FORMAT_STEREO8                        0x1102
344 /** Signed 16-bit stereo buffer format. */
345 #define AL_FORMAT_STEREO16                       0x1103
346 
347 /** Buffer frequency (query only). */
348 #define AL_FREQUENCY                             0x2001
349 /** Buffer bits per sample (query only). */
350 #define AL_BITS                                  0x2002
351 /** Buffer channel count (query only). */
352 #define AL_CHANNELS                              0x2003
353 /** Buffer data size (query only). */
354 #define AL_SIZE                                  0x2004
355 
356 /* Buffer state. Not for public use. */
357 #define AL_UNUSED                                0x2010
358 #define AL_PENDING                               0x2011
359 #define AL_PROCESSED                             0x2012
360 
361 
362 /** No error. */
363 #define AL_NO_ERROR                              0
364 
365 /** Invalid name paramater passed to AL call. */
366 #define AL_INVALID_NAME                          0xA001
367 
368 /** Invalid enum parameter passed to AL call. */
369 #define AL_INVALID_ENUM                          0xA002
370 
371 /** Invalid value parameter passed to AL call. */
372 #define AL_INVALID_VALUE                         0xA003
373 
374 /** Illegal AL call. */
375 #define AL_INVALID_OPERATION                     0xA004
376 
377 /** Not enough memory. */
378 #define AL_OUT_OF_MEMORY                         0xA005
379 
380 
381 /** Context string: Vendor ID. */
382 #define AL_VENDOR                                0xB001
383 /** Context string: Version. */
384 #define AL_VERSION                               0xB002
385 /** Context string: Renderer ID. */
386 #define AL_RENDERER                              0xB003
387 /** Context string: Space-separated extension list. */
388 #define AL_EXTENSIONS                            0xB004
389 
390 
391 /**
392  * Doppler scale.
393  * Type:    ALfloat
394  * Range:   [0.0 - ]
395  * Default: 1.0
396  *
397  * Scale for source and listener velocities.
398  */
399 #define AL_DOPPLER_FACTOR                        0xC000
400 AL_API void AL_APIENTRY alDopplerFactor(ALfloat value);
401 
402 /**
403  * Doppler velocity (deprecated).
404  *
405  * A multiplier applied to the Speed of Sound.
406  */
407 #define AL_DOPPLER_VELOCITY                      0xC001
408 AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value);
409 
410 /**
411  * Speed of Sound, in units per second.
412  * Type:    ALfloat
413  * Range:   [0.0001 - ]
414  * Default: 343.3
415  *
416  * The speed at which sound waves are assumed to travel, when calculating the
417  * doppler effect.
418  */
419 #define AL_SPEED_OF_SOUND                        0xC003
420 AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value);
421 
422 /**
423  * Distance attenuation model.
424  * Type:    ALint
425  * Range:   [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
426  *           AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
427  *           AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
428  * Default: AL_INVERSE_DISTANCE_CLAMPED
429  *
430  * The model by which sources attenuate with distance.
431  *
432  * None     - No distance attenuation.
433  * Inverse  - Doubling the distance halves the source gain.
434  * Linear   - Linear gain scaling between the reference and max distances.
435  * Exponent - Exponential gain dropoff.
436  *
437  * Clamped variations work like the non-clamped counterparts, except the
438  * distance calculated is clamped between the reference and max distances.
439  */
440 #define AL_DISTANCE_MODEL                        0xD000
441 AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel);
442 
443 /* Distance model values. */
444 #define AL_INVERSE_DISTANCE                      0xD001
445 #define AL_INVERSE_DISTANCE_CLAMPED              0xD002
446 #define AL_LINEAR_DISTANCE                       0xD003
447 #define AL_LINEAR_DISTANCE_CLAMPED               0xD004
448 #define AL_EXPONENT_DISTANCE                     0xD005
449 #define AL_EXPONENT_DISTANCE_CLAMPED             0xD006
450 
451 /* Renderer State management. */
452 AL_API void AL_APIENTRY alEnable(ALenum capability);
453 AL_API void AL_APIENTRY alDisable(ALenum capability);
454 AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability);
455 
456 /* State retrieval. */
457 AL_API const ALchar* AL_APIENTRY alGetString(ALenum param);
458 AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values);
459 AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values);
460 AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values);
461 AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values);
462 AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param);
463 AL_API ALint AL_APIENTRY alGetInteger(ALenum param);
464 AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param);
465 AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param);
466 
467 /* Error retrieval. */
468 
469 /** Obtain the first error generated in the AL context since the last check. */
470 AL_API ALenum AL_APIENTRY alGetError(void);
471 
472 /** Query for the presence of an extension on the AL context. */
473 AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname);
474 /**
475  * Retrieve the address of a function. The returned function may be context-
476  * specific.
477  */
478 AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname);
479 /**
480  * Retrieve the value of an enum. The returned value may be context-specific.
481  */
482 AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename);
483 
484 
485 /* Set Listener parameters */
486 AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value);
487 AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
488 AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values);
489 AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value);
490 AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);
491 AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values);
492 
493 /* Get Listener parameters */
494 AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value);
495 AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
496 AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values);
497 AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value);
498 AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);
499 AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values);
500 
501 
502 /** Create Source objects. */
503 AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources);
504 /** Delete Source objects. */
505 AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources);
506 /** Verify a handle is a valid Source. */
507 AL_API ALboolean AL_APIENTRY alIsSource(ALuint source);
508 
509 /* Set Source parameters. */
510 AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value);
511 AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
512 AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values);
513 AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value);
514 AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
515 AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values);
516 
517 /* Get Source parameters. */
518 AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value);
519 AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
520 AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
521 AL_API void AL_APIENTRY alGetSourcei(ALuint source,  ALenum param, ALint *value);
522 AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
523 AL_API void AL_APIENTRY alGetSourceiv(ALuint source,  ALenum param, ALint *values);
524 
525 
526 /** Play, replay, or resume (if paused) a list of Sources */
527 AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources);
528 /** Stop a list of Sources */
529 AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources);
530 /** Rewind a list of Sources */
531 AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources);
532 /** Pause a list of Sources */
533 AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources);
534 
535 /** Play, replay, or resume a Source */
536 AL_API void AL_APIENTRY alSourcePlay(ALuint source);
537 /** Stop a Source */
538 AL_API void AL_APIENTRY alSourceStop(ALuint source);
539 /** Rewind a Source (set playback postiton to beginning) */
540 AL_API void AL_APIENTRY alSourceRewind(ALuint source);
541 /** Pause a Source */
542 AL_API void AL_APIENTRY alSourcePause(ALuint source);
543 
544 /** Queue buffers onto a source */
545 AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);
546 /** Unqueue processed buffers from a source */
547 AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);
548 
549 
550 /** Create Buffer objects */
551 AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers);
552 /** Delete Buffer objects */
553 AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers);
554 /** Verify a handle is a valid Buffer */
555 AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer);
556 
557 /** Specifies the data to be copied into a buffer */
558 AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
559 
560 /* Set Buffer parameters, */
561 AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value);
562 AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
563 AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);
564 AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value);
565 AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
566 AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values);
567 
568 /* Get Buffer parameters. */
569 AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
570 AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
571 AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
572 AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value);
573 AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
574 AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
575 
576 /* Pointer-to-function type, useful for dynamically getting AL entry points. */
577 typedef void          (AL_APIENTRY *LPALENABLE)(ALenum capability);
578 typedef void          (AL_APIENTRY *LPALDISABLE)(ALenum capability);
579 typedef ALboolean     (AL_APIENTRY *LPALISENABLED)(ALenum capability);
580 typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param);
581 typedef void          (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values);
582 typedef void          (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values);
583 typedef void          (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values);
584 typedef void          (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values);
585 typedef ALboolean     (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param);
586 typedef ALint         (AL_APIENTRY *LPALGETINTEGER)(ALenum param);
587 typedef ALfloat       (AL_APIENTRY *LPALGETFLOAT)(ALenum param);
588 typedef ALdouble      (AL_APIENTRY *LPALGETDOUBLE)(ALenum param);
589 typedef ALenum        (AL_APIENTRY *LPALGETERROR)(void);
590 typedef ALboolean     (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname);
591 typedef void*         (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname);
592 typedef ALenum        (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename);
593 typedef void          (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value);
594 typedef void          (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
595 typedef void          (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values);
596 typedef void          (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value);
597 typedef void          (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3);
598 typedef void          (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values);
599 typedef void          (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value);
600 typedef void          (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
601 typedef void          (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values);
602 typedef void          (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value);
603 typedef void          (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3);
604 typedef void          (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values);
605 typedef void          (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources);
606 typedef void          (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources);
607 typedef ALboolean     (AL_APIENTRY *LPALISSOURCE)(ALuint source);
608 typedef void          (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value);
609 typedef void          (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
610 typedef void          (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values);
611 typedef void          (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value);
612 typedef void          (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
613 typedef void          (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values);
614 typedef void          (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value);
615 typedef void          (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
616 typedef void          (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values);
617 typedef void          (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value);
618 typedef void          (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
619 typedef void          (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values);
620 typedef void          (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources);
621 typedef void          (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources);
622 typedef void          (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources);
623 typedef void          (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources);
624 typedef void          (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source);
625 typedef void          (AL_APIENTRY *LPALSOURCESTOP)(ALuint source);
626 typedef void          (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source);
627 typedef void          (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source);
628 typedef void          (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers);
629 typedef void          (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers);
630 typedef void          (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers);
631 typedef void          (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers);
632 typedef ALboolean     (AL_APIENTRY *LPALISBUFFER)(ALuint buffer);
633 typedef void          (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
634 typedef void          (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value);
635 typedef void          (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
636 typedef void          (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values);
637 typedef void          (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value);
638 typedef void          (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
639 typedef void          (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values);
640 typedef void          (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value);
641 typedef void          (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
642 typedef void          (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values);
643 typedef void          (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value);
644 typedef void          (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
645 typedef void          (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values);
646 typedef void          (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value);
647 typedef void          (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value);
648 typedef void          (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value);
649 typedef void          (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel);
650 
651 #if defined(__cplusplus)
652 }  /* extern "C" */
653 #endif
654 
655 #endif /* AL_AL_H */
656