1 /**
2  * OpenAL cross platform audio library
3  * Copyright (C) 2008 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.
8  *
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.
13  *
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.,
17  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  * Or go to http://www.gnu.org/copyleft/lgpl.html
19  */
20 
21 #ifndef AL_ALEXT_H
22 #define AL_ALEXT_H
23 
24 #include <stddef.h>
25 /* Define int64 and uint64 types */
26 #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) ||             \
27     (defined(__cplusplus) && __cplusplus >= 201103L)
28 #include <stdint.h>
29 typedef int64_t _alsoft_int64_t;
30 typedef uint64_t _alsoft_uint64_t;
31 #elif defined(_WIN32)
32 typedef __int64 _alsoft_int64_t;
33 typedef unsigned __int64 _alsoft_uint64_t;
34 #else
35 /* Fallback if nothing above works */
36 #include <stdint.h>
37 typedef int64_t _alsoft_int64_t;
38 typedef uint64_t _alsoft_uint64_t;
39 #endif
40 
41 #include "alc.h"
42 #include "al.h"
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 #ifndef AL_LOKI_IMA_ADPCM_format
49 #define AL_LOKI_IMA_ADPCM_format 1
50 #define AL_FORMAT_IMA_ADPCM_MONO16_EXT           0x10000
51 #define AL_FORMAT_IMA_ADPCM_STEREO16_EXT         0x10001
52 #endif
53 
54 #ifndef AL_LOKI_WAVE_format
55 #define AL_LOKI_WAVE_format 1
56 #define AL_FORMAT_WAVE_EXT                       0x10002
57 #endif
58 
59 #ifndef AL_EXT_vorbis
60 #define AL_EXT_vorbis 1
61 #define AL_FORMAT_VORBIS_EXT                     0x10003
62 #endif
63 
64 #ifndef AL_LOKI_quadriphonic
65 #define AL_LOKI_quadriphonic 1
66 #define AL_FORMAT_QUAD8_LOKI                     0x10004
67 #define AL_FORMAT_QUAD16_LOKI                    0x10005
68 #endif
69 
70 #ifndef AL_EXT_float32
71 #define AL_EXT_float32 1
72 #define AL_FORMAT_MONO_FLOAT32                   0x10010
73 #define AL_FORMAT_STEREO_FLOAT32                 0x10011
74 #endif
75 
76 #ifndef AL_EXT_double
77 #define AL_EXT_double 1
78 #define AL_FORMAT_MONO_DOUBLE_EXT                0x10012
79 #define AL_FORMAT_STEREO_DOUBLE_EXT              0x10013
80 #endif
81 
82 #ifndef AL_EXT_MULAW
83 #define AL_EXT_MULAW 1
84 #define AL_FORMAT_MONO_MULAW_EXT                 0x10014
85 #define AL_FORMAT_STEREO_MULAW_EXT               0x10015
86 #endif
87 
88 #ifndef AL_EXT_ALAW
89 #define AL_EXT_ALAW 1
90 #define AL_FORMAT_MONO_ALAW_EXT                  0x10016
91 #define AL_FORMAT_STEREO_ALAW_EXT                0x10017
92 #endif
93 
94 #ifndef ALC_LOKI_audio_channel
95 #define ALC_LOKI_audio_channel 1
96 #define ALC_CHAN_MAIN_LOKI                       0x500001
97 #define ALC_CHAN_PCM_LOKI                        0x500002
98 #define ALC_CHAN_CD_LOKI                         0x500003
99 #endif
100 
101 #ifndef AL_EXT_MCFORMATS
102 #define AL_EXT_MCFORMATS 1
103 /* Provides support for surround sound buffer formats with 8, 16, and 32-bit
104  * samples.
105  *
106  * QUAD8: Unsigned 8-bit, Quadraphonic (Front Left, Front Right, Rear Left,
107  *        Rear Right).
108  * QUAD16: Signed 16-bit, Quadraphonic.
109  * QUAD32: 32-bit float, Quadraphonic.
110  * REAR8: Unsigned 8-bit, Rear Stereo (Rear Left, Rear Right).
111  * REAR16: Signed 16-bit, Rear Stereo.
112  * REAR32: 32-bit float, Rear Stereo.
113  * 51CHN8: Unsigned 8-bit, 5.1 Surround (Front Left, Front Right, Front Center,
114  *         LFE, Side Left, Side Right). Note that some audio systems may label
115  *         5.1's Side channels as Rear or Surround; they are equivalent for the
116  *         purposes of this extension.
117  * 51CHN16: Signed 16-bit, 5.1 Surround.
118  * 51CHN32: 32-bit float, 5.1 Surround.
119  * 61CHN8: Unsigned 8-bit, 6.1 Surround (Front Left, Front Right, Front Center,
120  *         LFE, Rear Center, Side Left, Side Right).
121  * 61CHN16: Signed 16-bit, 6.1 Surround.
122  * 61CHN32: 32-bit float, 6.1 Surround.
123  * 71CHN8: Unsigned 8-bit, 7.1 Surround (Front Left, Front Right, Front Center,
124  *         LFE, Rear Left, Rear Right, Side Left, Side Right).
125  * 71CHN16: Signed 16-bit, 7.1 Surround.
126  * 71CHN32: 32-bit float, 7.1 Surround.
127  */
128 #define AL_FORMAT_QUAD8                          0x1204
129 #define AL_FORMAT_QUAD16                         0x1205
130 #define AL_FORMAT_QUAD32                         0x1206
131 #define AL_FORMAT_REAR8                          0x1207
132 #define AL_FORMAT_REAR16                         0x1208
133 #define AL_FORMAT_REAR32                         0x1209
134 #define AL_FORMAT_51CHN8                         0x120A
135 #define AL_FORMAT_51CHN16                        0x120B
136 #define AL_FORMAT_51CHN32                        0x120C
137 #define AL_FORMAT_61CHN8                         0x120D
138 #define AL_FORMAT_61CHN16                        0x120E
139 #define AL_FORMAT_61CHN32                        0x120F
140 #define AL_FORMAT_71CHN8                         0x1210
141 #define AL_FORMAT_71CHN16                        0x1211
142 #define AL_FORMAT_71CHN32                        0x1212
143 #endif
144 
145 #ifndef AL_EXT_MULAW_MCFORMATS
146 #define AL_EXT_MULAW_MCFORMATS 1
147 #define AL_FORMAT_MONO_MULAW                     0x10014
148 #define AL_FORMAT_STEREO_MULAW                   0x10015
149 #define AL_FORMAT_QUAD_MULAW                     0x10021
150 #define AL_FORMAT_REAR_MULAW                     0x10022
151 #define AL_FORMAT_51CHN_MULAW                    0x10023
152 #define AL_FORMAT_61CHN_MULAW                    0x10024
153 #define AL_FORMAT_71CHN_MULAW                    0x10025
154 #endif
155 
156 #ifndef AL_EXT_IMA4
157 #define AL_EXT_IMA4 1
158 #define AL_FORMAT_MONO_IMA4                      0x1300
159 #define AL_FORMAT_STEREO_IMA4                    0x1301
160 #endif
161 
162 #ifndef AL_EXT_STATIC_BUFFER
163 #define AL_EXT_STATIC_BUFFER 1
164 typedef void (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
165 #ifdef AL_ALEXT_PROTOTYPES
166 AL_API void AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
167 #endif
168 #endif
169 
170 #ifndef ALC_EXT_EFX
171 #define ALC_EXT_EFX 1
172 #include "efx.h"
173 #endif
174 
175 #ifndef ALC_EXT_disconnect
176 #define ALC_EXT_disconnect 1
177 #define ALC_CONNECTED                            0x313
178 #endif
179 
180 #ifndef ALC_EXT_thread_local_context
181 #define ALC_EXT_thread_local_context 1
182 typedef ALCboolean  (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context);
183 typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void);
184 #ifdef AL_ALEXT_PROTOTYPES
185 ALC_API ALCboolean  ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
186 ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
187 #endif
188 #endif
189 
190 #ifndef AL_EXT_source_distance_model
191 #define AL_EXT_source_distance_model 1
192 #define AL_SOURCE_DISTANCE_MODEL                 0x200
193 #endif
194 
195 #ifndef AL_SOFT_buffer_sub_data
196 #define AL_SOFT_buffer_sub_data 1
197 #define AL_BYTE_RW_OFFSETS_SOFT                  0x1031
198 #define AL_SAMPLE_RW_OFFSETS_SOFT                0x1032
199 typedef void (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
200 #ifdef AL_ALEXT_PROTOTYPES
201 AL_API void AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
202 #endif
203 #endif
204 
205 #ifndef AL_SOFT_loop_points
206 #define AL_SOFT_loop_points 1
207 #define AL_LOOP_POINTS_SOFT                      0x2015
208 #endif
209 
210 #ifndef AL_EXT_FOLDBACK
211 #define AL_EXT_FOLDBACK 1
212 #define AL_EXT_FOLDBACK_NAME                     "AL_EXT_FOLDBACK"
213 #define AL_FOLDBACK_EVENT_BLOCK                  0x4112
214 #define AL_FOLDBACK_EVENT_START                  0x4111
215 #define AL_FOLDBACK_EVENT_STOP                   0x4113
216 #define AL_FOLDBACK_MODE_MONO                    0x4101
217 #define AL_FOLDBACK_MODE_STEREO                  0x4102
218 typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
219 typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
220 typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
221 #ifdef AL_ALEXT_PROTOTYPES
222 AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
223 AL_API void AL_APIENTRY alRequestFoldbackStop(void);
224 #endif
225 #endif
226 
227 #ifndef ALC_EXT_DEDICATED
228 #define ALC_EXT_DEDICATED 1
229 #define AL_DEDICATED_GAIN                        0x0001
230 #define AL_EFFECT_DEDICATED_DIALOGUE             0x9001
231 #define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
232 #endif
233 
234 #ifndef AL_SOFT_buffer_samples
235 #define AL_SOFT_buffer_samples 1
236 /* Channel configurations */
237 #define AL_MONO_SOFT                             0x1500
238 #define AL_STEREO_SOFT                           0x1501
239 #define AL_REAR_SOFT                             0x1502
240 #define AL_QUAD_SOFT                             0x1503
241 #define AL_5POINT1_SOFT                          0x1504
242 #define AL_6POINT1_SOFT                          0x1505
243 #define AL_7POINT1_SOFT                          0x1506
244 
245 /* Sample types */
246 #define AL_BYTE_SOFT                             0x1400
247 #define AL_UNSIGNED_BYTE_SOFT                    0x1401
248 #define AL_SHORT_SOFT                            0x1402
249 #define AL_UNSIGNED_SHORT_SOFT                   0x1403
250 #define AL_INT_SOFT                              0x1404
251 #define AL_UNSIGNED_INT_SOFT                     0x1405
252 #define AL_FLOAT_SOFT                            0x1406
253 #define AL_DOUBLE_SOFT                           0x1407
254 #define AL_BYTE3_SOFT                            0x1408
255 #define AL_UNSIGNED_BYTE3_SOFT                   0x1409
256 
257 /* Storage formats */
258 #define AL_MONO8_SOFT                            0x1100
259 #define AL_MONO16_SOFT                           0x1101
260 #define AL_MONO32F_SOFT                          0x10010
261 #define AL_STEREO8_SOFT                          0x1102
262 #define AL_STEREO16_SOFT                         0x1103
263 #define AL_STEREO32F_SOFT                        0x10011
264 #define AL_QUAD8_SOFT                            0x1204
265 #define AL_QUAD16_SOFT                           0x1205
266 #define AL_QUAD32F_SOFT                          0x1206
267 #define AL_REAR8_SOFT                            0x1207
268 #define AL_REAR16_SOFT                           0x1208
269 #define AL_REAR32F_SOFT                          0x1209
270 #define AL_5POINT1_8_SOFT                        0x120A
271 #define AL_5POINT1_16_SOFT                       0x120B
272 #define AL_5POINT1_32F_SOFT                      0x120C
273 #define AL_6POINT1_8_SOFT                        0x120D
274 #define AL_6POINT1_16_SOFT                       0x120E
275 #define AL_6POINT1_32F_SOFT                      0x120F
276 #define AL_7POINT1_8_SOFT                        0x1210
277 #define AL_7POINT1_16_SOFT                       0x1211
278 #define AL_7POINT1_32F_SOFT                      0x1212
279 
280 /* Buffer attributes */
281 #define AL_INTERNAL_FORMAT_SOFT                  0x2008
282 #define AL_BYTE_LENGTH_SOFT                      0x2009
283 #define AL_SAMPLE_LENGTH_SOFT                    0x200A
284 #define AL_SEC_LENGTH_SOFT                       0x200B
285 
286 typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
287 typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
288 typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
289 typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
290 #ifdef AL_ALEXT_PROTOTYPES
291 AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
292 AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
293 AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
294 AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
295 #endif
296 #endif
297 
298 #ifndef AL_SOFT_direct_channels
299 #define AL_SOFT_direct_channels 1
300 #define AL_DIRECT_CHANNELS_SOFT                  0x1033
301 #endif
302 
303 #ifndef ALC_SOFT_loopback
304 #define ALC_SOFT_loopback 1
305 #define ALC_FORMAT_CHANNELS_SOFT                 0x1990
306 #define ALC_FORMAT_TYPE_SOFT                     0x1991
307 
308 /* Sample types */
309 #define ALC_BYTE_SOFT                            0x1400
310 #define ALC_UNSIGNED_BYTE_SOFT                   0x1401
311 #define ALC_SHORT_SOFT                           0x1402
312 #define ALC_UNSIGNED_SHORT_SOFT                  0x1403
313 #define ALC_INT_SOFT                             0x1404
314 #define ALC_UNSIGNED_INT_SOFT                    0x1405
315 #define ALC_FLOAT_SOFT                           0x1406
316 
317 /* Channel configurations */
318 #define ALC_MONO_SOFT                            0x1500
319 #define ALC_STEREO_SOFT                          0x1501
320 #define ALC_QUAD_SOFT                            0x1503
321 #define ALC_5POINT1_SOFT                         0x1504
322 #define ALC_6POINT1_SOFT                         0x1505
323 #define ALC_7POINT1_SOFT                         0x1506
324 
325 typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
326 typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
327 typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
328 #ifdef AL_ALEXT_PROTOTYPES
329 ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
330 ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
331 ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
332 #endif
333 #endif
334 
335 #ifndef AL_EXT_STEREO_ANGLES
336 #define AL_EXT_STEREO_ANGLES 1
337 #define AL_STEREO_ANGLES                         0x1030
338 #endif
339 
340 #ifndef AL_EXT_SOURCE_RADIUS
341 #define AL_EXT_SOURCE_RADIUS 1
342 #define AL_SOURCE_RADIUS                         0x1031
343 #endif
344 
345 #ifndef AL_SOFT_source_latency
346 #define AL_SOFT_source_latency 1
347 #define AL_SAMPLE_OFFSET_LATENCY_SOFT            0x1200
348 #define AL_SEC_OFFSET_LATENCY_SOFT               0x1201
349 typedef _alsoft_int64_t ALint64SOFT;
350 typedef _alsoft_uint64_t ALuint64SOFT;
351 typedef void (AL_APIENTRY*LPALSOURCEDSOFT)(ALuint,ALenum,ALdouble);
352 typedef void (AL_APIENTRY*LPALSOURCE3DSOFT)(ALuint,ALenum,ALdouble,ALdouble,ALdouble);
353 typedef void (AL_APIENTRY*LPALSOURCEDVSOFT)(ALuint,ALenum,const ALdouble*);
354 typedef void (AL_APIENTRY*LPALGETSOURCEDSOFT)(ALuint,ALenum,ALdouble*);
355 typedef void (AL_APIENTRY*LPALGETSOURCE3DSOFT)(ALuint,ALenum,ALdouble*,ALdouble*,ALdouble*);
356 typedef void (AL_APIENTRY*LPALGETSOURCEDVSOFT)(ALuint,ALenum,ALdouble*);
357 typedef void (AL_APIENTRY*LPALSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT);
358 typedef void (AL_APIENTRY*LPALSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT,ALint64SOFT,ALint64SOFT);
359 typedef void (AL_APIENTRY*LPALSOURCEI64VSOFT)(ALuint,ALenum,const ALint64SOFT*);
360 typedef void (AL_APIENTRY*LPALGETSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT*);
361 typedef void (AL_APIENTRY*LPALGETSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT*,ALint64SOFT*,ALint64SOFT*);
362 typedef void (AL_APIENTRY*LPALGETSOURCEI64VSOFT)(ALuint,ALenum,ALint64SOFT*);
363 #ifdef AL_ALEXT_PROTOTYPES
364 AL_API void AL_APIENTRY alSourcedSOFT(ALuint source, ALenum param, ALdouble value);
365 AL_API void AL_APIENTRY alSource3dSOFT(ALuint source, ALenum param, ALdouble value1, ALdouble value2, ALdouble value3);
366 AL_API void AL_APIENTRY alSourcedvSOFT(ALuint source, ALenum param, const ALdouble *values);
367 AL_API void AL_APIENTRY alGetSourcedSOFT(ALuint source, ALenum param, ALdouble *value);
368 AL_API void AL_APIENTRY alGetSource3dSOFT(ALuint source, ALenum param, ALdouble *value1, ALdouble *value2, ALdouble *value3);
369 AL_API void AL_APIENTRY alGetSourcedvSOFT(ALuint source, ALenum param, ALdouble *values);
370 AL_API void AL_APIENTRY alSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT value);
371 AL_API void AL_APIENTRY alSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT value1, ALint64SOFT value2, ALint64SOFT value3);
372 AL_API void AL_APIENTRY alSourcei64vSOFT(ALuint source, ALenum param, const ALint64SOFT *values);
373 AL_API void AL_APIENTRY alGetSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT *value);
374 AL_API void AL_APIENTRY alGetSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT *value1, ALint64SOFT *value2, ALint64SOFT *value3);
375 AL_API void AL_APIENTRY alGetSourcei64vSOFT(ALuint source, ALenum param, ALint64SOFT *values);
376 #endif
377 #endif
378 
379 #ifndef ALC_EXT_DEFAULT_FILTER_ORDER
380 #define ALC_EXT_DEFAULT_FILTER_ORDER 1
381 #define ALC_DEFAULT_FILTER_ORDER                 0x1100
382 #endif
383 
384 #ifndef AL_SOFT_deferred_updates
385 #define AL_SOFT_deferred_updates 1
386 #define AL_DEFERRED_UPDATES_SOFT                 0xC002
387 typedef void (AL_APIENTRY*LPALDEFERUPDATESSOFT)(void);
388 typedef void (AL_APIENTRY*LPALPROCESSUPDATESSOFT)(void);
389 #ifdef AL_ALEXT_PROTOTYPES
390 AL_API void AL_APIENTRY alDeferUpdatesSOFT(void);
391 AL_API void AL_APIENTRY alProcessUpdatesSOFT(void);
392 #endif
393 #endif
394 
395 #ifndef AL_SOFT_block_alignment
396 #define AL_SOFT_block_alignment 1
397 #define AL_UNPACK_BLOCK_ALIGNMENT_SOFT           0x200C
398 #define AL_PACK_BLOCK_ALIGNMENT_SOFT             0x200D
399 #endif
400 
401 #ifndef AL_SOFT_MSADPCM
402 #define AL_SOFT_MSADPCM 1
403 #define AL_FORMAT_MONO_MSADPCM_SOFT              0x1302
404 #define AL_FORMAT_STEREO_MSADPCM_SOFT            0x1303
405 #endif
406 
407 #ifndef AL_SOFT_source_length
408 #define AL_SOFT_source_length 1
409 /*#define AL_BYTE_LENGTH_SOFT                      0x2009*/
410 /*#define AL_SAMPLE_LENGTH_SOFT                    0x200A*/
411 /*#define AL_SEC_LENGTH_SOFT                       0x200B*/
412 #endif
413 
414 #ifndef ALC_SOFT_pause_device
415 #define ALC_SOFT_pause_device 1
416 typedef void (ALC_APIENTRY*LPALCDEVICEPAUSESOFT)(ALCdevice *device);
417 typedef void (ALC_APIENTRY*LPALCDEVICERESUMESOFT)(ALCdevice *device);
418 #ifdef AL_ALEXT_PROTOTYPES
419 ALC_API void ALC_APIENTRY alcDevicePauseSOFT(ALCdevice *device);
420 ALC_API void ALC_APIENTRY alcDeviceResumeSOFT(ALCdevice *device);
421 #endif
422 #endif
423 
424 #ifndef AL_EXT_BFORMAT
425 #define AL_EXT_BFORMAT 1
426 /* Provides support for B-Format ambisonic buffers (first-order, FuMa scaling
427  * and layout).
428  *
429  * BFORMAT2D_8: Unsigned 8-bit, 3-channel non-periphonic (WXY).
430  * BFORMAT2D_16: Signed 16-bit, 3-channel non-periphonic (WXY).
431  * BFORMAT2D_FLOAT32: 32-bit float, 3-channel non-periphonic (WXY).
432  * BFORMAT3D_8: Unsigned 8-bit, 4-channel periphonic (WXYZ).
433  * BFORMAT3D_16: Signed 16-bit, 4-channel periphonic (WXYZ).
434  * BFORMAT3D_FLOAT32: 32-bit float, 4-channel periphonic (WXYZ).
435  */
436 #define AL_FORMAT_BFORMAT2D_8                    0x20021
437 #define AL_FORMAT_BFORMAT2D_16                   0x20022
438 #define AL_FORMAT_BFORMAT2D_FLOAT32              0x20023
439 #define AL_FORMAT_BFORMAT3D_8                    0x20031
440 #define AL_FORMAT_BFORMAT3D_16                   0x20032
441 #define AL_FORMAT_BFORMAT3D_FLOAT32              0x20033
442 #endif
443 
444 #ifndef AL_EXT_MULAW_BFORMAT
445 #define AL_EXT_MULAW_BFORMAT 1
446 #define AL_FORMAT_BFORMAT2D_MULAW                0x10031
447 #define AL_FORMAT_BFORMAT3D_MULAW                0x10032
448 #endif
449 
450 #ifndef ALC_SOFT_HRTF
451 #define ALC_SOFT_HRTF 1
452 #define ALC_HRTF_SOFT                            0x1992
453 #define ALC_DONT_CARE_SOFT                       0x0002
454 #define ALC_HRTF_STATUS_SOFT                     0x1993
455 #define ALC_HRTF_DISABLED_SOFT                   0x0000
456 #define ALC_HRTF_ENABLED_SOFT                    0x0001
457 #define ALC_HRTF_DENIED_SOFT                     0x0002
458 #define ALC_HRTF_REQUIRED_SOFT                   0x0003
459 #define ALC_HRTF_HEADPHONES_DETECTED_SOFT        0x0004
460 #define ALC_HRTF_UNSUPPORTED_FORMAT_SOFT         0x0005
461 #define ALC_NUM_HRTF_SPECIFIERS_SOFT             0x1994
462 #define ALC_HRTF_SPECIFIER_SOFT                  0x1995
463 #define ALC_HRTF_ID_SOFT                         0x1996
464 typedef const ALCchar* (ALC_APIENTRY*LPALCGETSTRINGISOFT)(ALCdevice *device, ALCenum paramName, ALCsizei index);
465 typedef ALCboolean (ALC_APIENTRY*LPALCRESETDEVICESOFT)(ALCdevice *device, const ALCint *attribs);
466 #ifdef AL_ALEXT_PROTOTYPES
467 ALC_API const ALCchar* ALC_APIENTRY alcGetStringiSOFT(ALCdevice *device, ALCenum paramName, ALCsizei index);
468 ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCint *attribs);
469 #endif
470 #endif
471 
472 #ifndef AL_SOFT_gain_clamp_ex
473 #define AL_SOFT_gain_clamp_ex 1
474 #define AL_GAIN_LIMIT_SOFT                       0x200E
475 #endif
476 
477 #ifndef AL_SOFT_source_resampler
478 #define AL_SOFT_source_resampler
479 #define AL_NUM_RESAMPLERS_SOFT                   0x1210
480 #define AL_DEFAULT_RESAMPLER_SOFT                0x1211
481 #define AL_SOURCE_RESAMPLER_SOFT                 0x1212
482 #define AL_RESAMPLER_NAME_SOFT                   0x1213
483 typedef const ALchar* (AL_APIENTRY*LPALGETSTRINGISOFT)(ALenum pname, ALsizei index);
484 #ifdef AL_ALEXT_PROTOTYPES
485 AL_API const ALchar* AL_APIENTRY alGetStringiSOFT(ALenum pname, ALsizei index);
486 #endif
487 #endif
488 
489 #ifndef AL_SOFT_source_spatialize
490 #define AL_SOFT_source_spatialize
491 #define AL_SOURCE_SPATIALIZE_SOFT                0x1214
492 #define AL_AUTO_SOFT                             0x0002
493 #endif
494 
495 #ifndef ALC_SOFT_output_limiter
496 #define ALC_SOFT_output_limiter
497 #define ALC_OUTPUT_LIMITER_SOFT                  0x199A
498 #endif
499 
500 #ifndef ALC_SOFT_device_clock
501 #define ALC_SOFT_device_clock 1
502 typedef _alsoft_int64_t ALCint64SOFT;
503 typedef _alsoft_uint64_t ALCuint64SOFT;
504 #define ALC_DEVICE_CLOCK_SOFT                    0x1600
505 #define ALC_DEVICE_LATENCY_SOFT                  0x1601
506 #define ALC_DEVICE_CLOCK_LATENCY_SOFT            0x1602
507 #define AL_SAMPLE_OFFSET_CLOCK_SOFT              0x1202
508 #define AL_SEC_OFFSET_CLOCK_SOFT                 0x1203
509 typedef void (ALC_APIENTRY*LPALCGETINTEGER64VSOFT)(ALCdevice *device, ALCenum pname, ALsizei size, ALCint64SOFT *values);
510 #ifdef AL_ALEXT_PROTOTYPES
511 ALC_API void ALC_APIENTRY alcGetInteger64vSOFT(ALCdevice *device, ALCenum pname, ALsizei size, ALCint64SOFT *values);
512 #endif
513 #endif
514 
515 #ifndef AL_SOFT_direct_channels_remix
516 #define AL_SOFT_direct_channels_remix 1
517 #define AL_DROP_UNMATCHED_SOFT                   0x0001
518 #define AL_REMIX_UNMATCHED_SOFT                  0x0002
519 #endif
520 
521 #ifndef AL_SOFT_bformat_ex
522 #define AL_SOFT_bformat_ex 1
523 #define AL_AMBISONIC_LAYOUT_SOFT                 0x1997
524 #define AL_AMBISONIC_SCALING_SOFT                0x1998
525 
526 /* Ambisonic layouts */
527 #define AL_FUMA_SOFT                             0x0000
528 #define AL_ACN_SOFT                              0x0001
529 
530 /* Ambisonic scalings (normalization) */
531 /*#define AL_FUMA_SOFT*/
532 #define AL_SN3D_SOFT                             0x0001
533 #define AL_N3D_SOFT                              0x0002
534 #endif
535 
536 #ifndef ALC_SOFT_loopback_bformat
537 #define ALC_SOFT_loopback_bformat 1
538 #define ALC_AMBISONIC_LAYOUT_SOFT                0x1997
539 #define ALC_AMBISONIC_SCALING_SOFT               0x1998
540 #define ALC_AMBISONIC_ORDER_SOFT                 0x1999
541 #define ALC_MAX_AMBISONIC_ORDER_SOFT             0x199B
542 
543 #define ALC_BFORMAT3D_SOFT                       0x1507
544 
545 /* Ambisonic layouts */
546 #define ALC_FUMA_SOFT                            0x0000
547 #define ALC_ACN_SOFT                             0x0001
548 
549 /* Ambisonic scalings (normalization) */
550 /*#define ALC_FUMA_SOFT*/
551 #define ALC_SN3D_SOFT                            0x0001
552 #define ALC_N3D_SOFT                             0x0002
553 #endif
554 
555 #ifndef AL_SOFT_effect_target
556 #define AL_SOFT_effect_target
557 #define AL_EFFECTSLOT_TARGET_SOFT                0x199C
558 #endif
559 
560 #ifndef AL_SOFT_events
561 #define AL_SOFT_events 1
562 #define AL_EVENT_CALLBACK_FUNCTION_SOFT          0x19A2
563 #define AL_EVENT_CALLBACK_USER_PARAM_SOFT        0x19A3
564 #define AL_EVENT_TYPE_BUFFER_COMPLETED_SOFT      0x19A4
565 #define AL_EVENT_TYPE_SOURCE_STATE_CHANGED_SOFT  0x19A5
566 #define AL_EVENT_TYPE_DISCONNECTED_SOFT          0x19A6
567 typedef void (AL_APIENTRY*ALEVENTPROCSOFT)(ALenum eventType, ALuint object, ALuint param,
568                                            ALsizei length, const ALchar *message,
569                                            void *userParam);
570 typedef void (AL_APIENTRY*LPALEVENTCONTROLSOFT)(ALsizei count, const ALenum *types, ALboolean enable);
571 typedef void (AL_APIENTRY*LPALEVENTCALLBACKSOFT)(ALEVENTPROCSOFT callback, void *userParam);
572 typedef void* (AL_APIENTRY*LPALGETPOINTERSOFT)(ALenum pname);
573 typedef void (AL_APIENTRY*LPALGETPOINTERVSOFT)(ALenum pname, void **values);
574 #ifdef AL_ALEXT_PROTOTYPES
575 AL_API void AL_APIENTRY alEventControlSOFT(ALsizei count, const ALenum *types, ALboolean enable);
576 AL_API void AL_APIENTRY alEventCallbackSOFT(ALEVENTPROCSOFT callback, void *userParam);
577 AL_API void* AL_APIENTRY alGetPointerSOFT(ALenum pname);
578 AL_API void AL_APIENTRY alGetPointervSOFT(ALenum pname, void **values);
579 #endif
580 #endif
581 
582 #ifdef __cplusplus
583 }
584 #endif
585 
586 #endif
587