Add example HRTF definition files for makehrtf
[openal-soft/openal-hmr.git] / include / AL / alext.h
blob924db16898f7622809e53bea2d3a995d965d194a
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.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 * Or go to http://www.gnu.org/copyleft/lgpl.html
21 #ifndef AL_ALEXT_H
22 #define AL_ALEXT_H
24 #include <stddef.h>
26 #include "alc.h"
27 #include "al.h"
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
33 #ifndef AL_LOKI_IMA_ADPCM_format
34 #define AL_LOKI_IMA_ADPCM_format 1
35 #define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000
36 #define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001
37 #endif
39 #ifndef AL_LOKI_WAVE_format
40 #define AL_LOKI_WAVE_format 1
41 #define AL_FORMAT_WAVE_EXT 0x10002
42 #endif
44 #ifndef AL_EXT_vorbis
45 #define AL_EXT_vorbis 1
46 #define AL_FORMAT_VORBIS_EXT 0x10003
47 #endif
49 #ifndef AL_LOKI_quadriphonic
50 #define AL_LOKI_quadriphonic 1
51 #define AL_FORMAT_QUAD8_LOKI 0x10004
52 #define AL_FORMAT_QUAD16_LOKI 0x10005
53 #endif
55 #ifndef AL_EXT_float32
56 #define AL_EXT_float32 1
57 #define AL_FORMAT_MONO_FLOAT32 0x10010
58 #define AL_FORMAT_STEREO_FLOAT32 0x10011
59 #endif
61 #ifndef AL_EXT_double
62 #define AL_EXT_double 1
63 #define AL_FORMAT_MONO_DOUBLE_EXT 0x10012
64 #define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013
65 #endif
67 #ifndef AL_EXT_MULAW
68 #define AL_EXT_MULAW 1
69 #define AL_FORMAT_MONO_MULAW_EXT 0x10014
70 #define AL_FORMAT_STEREO_MULAW_EXT 0x10015
71 #endif
73 #ifndef AL_EXT_ALAW
74 #define AL_EXT_ALAW 1
75 #define AL_FORMAT_MONO_ALAW_EXT 0x10016
76 #define AL_FORMAT_STEREO_ALAW_EXT 0x10017
77 #endif
79 #ifndef ALC_LOKI_audio_channel
80 #define ALC_LOKI_audio_channel 1
81 #define ALC_CHAN_MAIN_LOKI 0x500001
82 #define ALC_CHAN_PCM_LOKI 0x500002
83 #define ALC_CHAN_CD_LOKI 0x500003
84 #endif
86 #ifndef AL_EXT_MCFORMATS
87 #define AL_EXT_MCFORMATS 1
88 #define AL_FORMAT_QUAD8 0x1204
89 #define AL_FORMAT_QUAD16 0x1205
90 #define AL_FORMAT_QUAD32 0x1206
91 #define AL_FORMAT_REAR8 0x1207
92 #define AL_FORMAT_REAR16 0x1208
93 #define AL_FORMAT_REAR32 0x1209
94 #define AL_FORMAT_51CHN8 0x120A
95 #define AL_FORMAT_51CHN16 0x120B
96 #define AL_FORMAT_51CHN32 0x120C
97 #define AL_FORMAT_61CHN8 0x120D
98 #define AL_FORMAT_61CHN16 0x120E
99 #define AL_FORMAT_61CHN32 0x120F
100 #define AL_FORMAT_71CHN8 0x1210
101 #define AL_FORMAT_71CHN16 0x1211
102 #define AL_FORMAT_71CHN32 0x1212
103 #endif
105 #ifndef AL_EXT_MULAW_MCFORMATS
106 #define AL_EXT_MULAW_MCFORMATS 1
107 #define AL_FORMAT_MONO_MULAW 0x10014
108 #define AL_FORMAT_STEREO_MULAW 0x10015
109 #define AL_FORMAT_QUAD_MULAW 0x10021
110 #define AL_FORMAT_REAR_MULAW 0x10022
111 #define AL_FORMAT_51CHN_MULAW 0x10023
112 #define AL_FORMAT_61CHN_MULAW 0x10024
113 #define AL_FORMAT_71CHN_MULAW 0x10025
114 #endif
116 #ifndef AL_EXT_IMA4
117 #define AL_EXT_IMA4 1
118 #define AL_FORMAT_MONO_IMA4 0x1300
119 #define AL_FORMAT_STEREO_IMA4 0x1301
120 #endif
122 #ifndef AL_EXT_STATIC_BUFFER
123 #define AL_EXT_STATIC_BUFFER 1
124 typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
125 #ifdef AL_ALEXT_PROTOTYPES
126 AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
127 #endif
128 #endif
130 #ifndef ALC_EXT_EFX
131 #define ALC_EXT_EFX 1
132 #include "efx.h"
133 #endif
135 #ifndef ALC_EXT_disconnect
136 #define ALC_EXT_disconnect 1
137 #define ALC_CONNECTED 0x313
138 #endif
140 #ifndef ALC_EXT_thread_local_context
141 #define ALC_EXT_thread_local_context 1
142 typedef ALCboolean (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context);
143 typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void);
144 #ifdef AL_ALEXT_PROTOTYPES
145 ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
146 ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
147 #endif
148 #endif
150 #ifndef AL_EXT_source_distance_model
151 #define AL_EXT_source_distance_model 1
152 #define AL_SOURCE_DISTANCE_MODEL 0x200
153 #endif
155 #ifndef AL_SOFT_buffer_sub_data
156 #define AL_SOFT_buffer_sub_data 1
157 #define AL_BYTE_RW_OFFSETS_SOFT 0x1031
158 #define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032
159 typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
160 #ifdef AL_ALEXT_PROTOTYPES
161 AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
162 #endif
163 #endif
165 #ifndef AL_SOFT_loop_points
166 #define AL_SOFT_loop_points 1
167 #define AL_LOOP_POINTS_SOFT 0x2015
168 #endif
170 #ifndef AL_EXT_FOLDBACK
171 #define AL_EXT_FOLDBACK 1
172 #define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK"
173 #define AL_FOLDBACK_EVENT_BLOCK 0x4112
174 #define AL_FOLDBACK_EVENT_START 0x4111
175 #define AL_FOLDBACK_EVENT_STOP 0x4113
176 #define AL_FOLDBACK_MODE_MONO 0x4101
177 #define AL_FOLDBACK_MODE_STEREO 0x4102
178 typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
179 typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
180 typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
181 #ifdef AL_ALEXT_PROTOTYPES
182 AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
183 AL_API void AL_APIENTRY alRequestFoldbackStop(void);
184 #endif
185 #endif
187 #ifndef ALC_EXT_DEDICATED
188 #define ALC_EXT_DEDICATED 1
189 #define AL_DEDICATED_GAIN 0x0001
190 #define AL_EFFECT_DEDICATED_DIALOGUE 0x9001
191 #define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
192 #endif
194 #ifndef AL_SOFT_buffer_samples
195 #define AL_SOFT_buffer_samples 1
196 /* Channel configurations */
197 #define AL_MONO_SOFT 0x1500
198 #define AL_STEREO_SOFT 0x1501
199 #define AL_REAR_SOFT 0x1502
200 #define AL_QUAD_SOFT 0x1503
201 #define AL_5POINT1_SOFT 0x1504
202 #define AL_6POINT1_SOFT 0x1505
203 #define AL_7POINT1_SOFT 0x1506
205 /* Sample types */
206 #define AL_BYTE_SOFT 0x1400
207 #define AL_UNSIGNED_BYTE_SOFT 0x1401
208 #define AL_SHORT_SOFT 0x1402
209 #define AL_UNSIGNED_SHORT_SOFT 0x1403
210 #define AL_INT_SOFT 0x1404
211 #define AL_UNSIGNED_INT_SOFT 0x1405
212 #define AL_FLOAT_SOFT 0x1406
213 #define AL_DOUBLE_SOFT 0x1407
214 #define AL_BYTE3_SOFT 0x1408
215 #define AL_UNSIGNED_BYTE3_SOFT 0x1409
217 /* Storage formats */
218 #define AL_MONO8_SOFT 0x1100
219 #define AL_MONO16_SOFT 0x1101
220 #define AL_MONO32F_SOFT 0x10010
221 #define AL_STEREO8_SOFT 0x1102
222 #define AL_STEREO16_SOFT 0x1103
223 #define AL_STEREO32F_SOFT 0x10011
224 #define AL_QUAD8_SOFT 0x1204
225 #define AL_QUAD16_SOFT 0x1205
226 #define AL_QUAD32F_SOFT 0x1206
227 #define AL_REAR8_SOFT 0x1207
228 #define AL_REAR16_SOFT 0x1208
229 #define AL_REAR32F_SOFT 0x1209
230 #define AL_5POINT1_8_SOFT 0x120A
231 #define AL_5POINT1_16_SOFT 0x120B
232 #define AL_5POINT1_32F_SOFT 0x120C
233 #define AL_6POINT1_8_SOFT 0x120D
234 #define AL_6POINT1_16_SOFT 0x120E
235 #define AL_6POINT1_32F_SOFT 0x120F
236 #define AL_7POINT1_8_SOFT 0x1210
237 #define AL_7POINT1_16_SOFT 0x1211
238 #define AL_7POINT1_32F_SOFT 0x1212
240 /* Buffer attributes */
241 #define AL_INTERNAL_FORMAT_SOFT 0x2008
242 #define AL_BYTE_LENGTH_SOFT 0x2009
243 #define AL_SAMPLE_LENGTH_SOFT 0x200A
244 #define AL_SEC_LENGTH_SOFT 0x200B
246 typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
247 typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
248 typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
249 typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
250 #ifdef AL_ALEXT_PROTOTYPES
251 AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
252 AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
253 AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
254 AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
255 #endif
256 #endif
258 #ifndef AL_SOFT_direct_channels
259 #define AL_SOFT_direct_channels 1
260 #define AL_DIRECT_CHANNELS_SOFT 0x1033
261 #endif
263 #ifndef ALC_SOFT_loopback
264 #define ALC_SOFT_loopback 1
265 #define ALC_FORMAT_CHANNELS_SOFT 0x1990
266 #define ALC_FORMAT_TYPE_SOFT 0x1991
268 /* Sample types */
269 #define ALC_BYTE_SOFT 0x1400
270 #define ALC_UNSIGNED_BYTE_SOFT 0x1401
271 #define ALC_SHORT_SOFT 0x1402
272 #define ALC_UNSIGNED_SHORT_SOFT 0x1403
273 #define ALC_INT_SOFT 0x1404
274 #define ALC_UNSIGNED_INT_SOFT 0x1405
275 #define ALC_FLOAT_SOFT 0x1406
277 /* Channel configurations */
278 #define ALC_MONO_SOFT 0x1500
279 #define ALC_STEREO_SOFT 0x1501
280 #define ALC_QUAD_SOFT 0x1503
281 #define ALC_5POINT1_SOFT 0x1504
282 #define ALC_6POINT1_SOFT 0x1505
283 #define ALC_7POINT1_SOFT 0x1506
285 typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
286 typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
287 typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
288 #ifdef AL_ALEXT_PROTOTYPES
289 ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
290 ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
291 ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
292 #endif
293 #endif
295 #ifndef AL_EXT_STEREO_ANGLES
296 #define AL_EXT_STEREO_ANGLES 1
297 #define AL_STEREO_ANGLES 0x1030
298 #endif
300 #ifndef AL_EXT_SOURCE_RADIUS
301 #define AL_EXT_SOURCE_RADIUS 1
302 #define AL_SOURCE_RADIUS 0x1031
303 #endif
305 #ifdef __cplusplus
307 #endif
309 #endif