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