Finalize ALC_SOFT_loopback
[openal-soft.git] / include / AL / alext.h
blobeef1ed8056a3feac8f5692a3ae6d920e6f319615
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 #ifdef __cplusplus
27 extern "C" {
28 #endif
30 #ifndef AL_LOKI_IMA_ADPCM_format
31 #define AL_LOKI_IMA_ADPCM_format 1
32 #define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000
33 #define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001
34 #endif
36 #ifndef AL_LOKI_WAVE_format
37 #define AL_LOKI_WAVE_format 1
38 #define AL_FORMAT_WAVE_EXT 0x10002
39 #endif
41 #ifndef AL_EXT_vorbis
42 #define AL_EXT_vorbis 1
43 #define AL_FORMAT_VORBIS_EXT 0x10003
44 #endif
46 #ifndef AL_LOKI_quadriphonic
47 #define AL_LOKI_quadriphonic 1
48 #define AL_FORMAT_QUAD8_LOKI 0x10004
49 #define AL_FORMAT_QUAD16_LOKI 0x10005
50 #endif
52 #ifndef AL_EXT_float32
53 #define AL_EXT_float32 1
54 #define AL_FORMAT_MONO_FLOAT32 0x10010
55 #define AL_FORMAT_STEREO_FLOAT32 0x10011
56 #endif
58 #ifndef AL_EXT_double
59 #define AL_EXT_double 1
60 #define AL_FORMAT_MONO_DOUBLE_EXT 0x10012
61 #define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013
62 #endif
64 #ifndef AL_EXT_MULAW
65 #define AL_EXT_MULAW 1
66 #define AL_FORMAT_MONO_MULAW_EXT 0x10014
67 #define AL_FORMAT_STEREO_MULAW_EXT 0x10015
68 #endif
70 #ifndef AL_EXT_ALAW
71 #define AL_EXT_ALAW 1
72 #define AL_FORMAT_MONO_ALAW_EXT 0x10016
73 #define AL_FORMAT_STEREO_ALAW_EXT 0x10017
74 #endif
76 #ifndef ALC_LOKI_audio_channel
77 #define ALC_LOKI_audio_channel 1
78 #define ALC_CHAN_MAIN_LOKI 0x500001
79 #define ALC_CHAN_PCM_LOKI 0x500002
80 #define ALC_CHAN_CD_LOKI 0x500003
81 #endif
83 #ifndef AL_EXT_MCFORMATS
84 #define AL_EXT_MCFORMATS 1
85 #define AL_FORMAT_QUAD8 0x1204
86 #define AL_FORMAT_QUAD16 0x1205
87 #define AL_FORMAT_QUAD32 0x1206
88 #define AL_FORMAT_REAR8 0x1207
89 #define AL_FORMAT_REAR16 0x1208
90 #define AL_FORMAT_REAR32 0x1209
91 #define AL_FORMAT_51CHN8 0x120A
92 #define AL_FORMAT_51CHN16 0x120B
93 #define AL_FORMAT_51CHN32 0x120C
94 #define AL_FORMAT_61CHN8 0x120D
95 #define AL_FORMAT_61CHN16 0x120E
96 #define AL_FORMAT_61CHN32 0x120F
97 #define AL_FORMAT_71CHN8 0x1210
98 #define AL_FORMAT_71CHN16 0x1211
99 #define AL_FORMAT_71CHN32 0x1212
100 #endif
102 #ifndef AL_EXT_MULAW_MCFORMATS
103 #define AL_EXT_MULAW_MCFORMATS 1
104 #define AL_FORMAT_MONO_MULAW 0x10014
105 #define AL_FORMAT_STEREO_MULAW 0x10015
106 #define AL_FORMAT_QUAD_MULAW 0x10021
107 #define AL_FORMAT_REAR_MULAW 0x10022
108 #define AL_FORMAT_51CHN_MULAW 0x10023
109 #define AL_FORMAT_61CHN_MULAW 0x10024
110 #define AL_FORMAT_71CHN_MULAW 0x10025
111 #endif
113 #ifndef AL_EXT_IMA4
114 #define AL_EXT_IMA4 1
115 #define AL_FORMAT_MONO_IMA4 0x1300
116 #define AL_FORMAT_STEREO_IMA4 0x1301
117 #endif
119 #ifndef AL_EXT_STATIC_BUFFER
120 #define AL_EXT_STATIC_BUFFER 1
121 typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
122 #ifdef AL_ALEXT_PROTOTYPES
123 AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
124 #endif
125 #endif
127 #ifndef ALC_EXT_EFX
128 #define ALC_EXT_EFX 1
129 #include "efx.h"
130 #endif
132 #ifndef ALC_EXT_disconnect
133 #define ALC_EXT_disconnect 1
134 #define ALC_CONNECTED 0x313
135 #endif
137 #ifndef ALC_EXT_thread_local_context
138 #define ALC_EXT_thread_local_context 1
139 typedef ALCboolean (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context);
140 typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void);
141 #ifdef AL_ALEXT_PROTOTYPES
142 ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
143 ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
144 #endif
145 #endif
147 #ifndef AL_EXT_source_distance_model
148 #define AL_EXT_source_distance_model 1
149 #define AL_SOURCE_DISTANCE_MODEL 0x200
150 #endif
152 #ifndef AL_SOFT_buffer_sub_data
153 #define AL_SOFT_buffer_sub_data 1
154 #define AL_BYTE_RW_OFFSETS_SOFT 0x1031
155 #define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032
156 typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
157 #ifdef AL_ALEXT_PROTOTYPES
158 AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
159 #endif
160 #endif
162 #ifndef AL_SOFT_loop_points
163 #define AL_SOFT_loop_points 1
164 #define AL_LOOP_POINTS_SOFT 0x2015
165 #endif
167 #ifndef AL_EXT_FOLDBACK
168 #define AL_EXT_FOLDBACK 1
169 #define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK"
170 #define AL_FOLDBACK_EVENT_BLOCK 0x4112
171 #define AL_FOLDBACK_EVENT_START 0x4111
172 #define AL_FOLDBACK_EVENT_STOP 0x4113
173 #define AL_FOLDBACK_MODE_MONO 0x4101
174 #define AL_FOLDBACK_MODE_STEREO 0x4102
175 typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
176 typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
177 typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
178 #ifdef AL_ALEXT_PROTOTYPES
179 AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
180 AL_API void AL_APIENTRY alRequestFoldbackStop(void);
181 #endif
182 #endif
184 #ifndef ALC_EXT_DEDICATED
185 #define ALC_EXT_DEDICATED 1
186 #define AL_DEDICATED_GAIN 0x0001
187 #define AL_EFFECT_DEDICATED_DIALOGUE 0x9001
188 #define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
189 #endif
191 #ifndef AL_SOFT_buffer_samples
192 #define AL_SOFT_buffer_samples 1
193 /* Channel configurations */
194 #define AL_MONO_SOFT 0x1500
195 #define AL_STEREO_SOFT 0x1501
196 #define AL_REAR_SOFT 0x1502
197 #define AL_QUAD_SOFT 0x1503
198 #define AL_5POINT1_SOFT 0x1504
199 #define AL_6POINT1_SOFT 0x1505
200 #define AL_7POINT1_SOFT 0x1506
202 /* Sample types */
203 #define AL_BYTE_SOFT 0x1400
204 #define AL_UNSIGNED_BYTE_SOFT 0x1401
205 #define AL_SHORT_SOFT 0x1402
206 #define AL_UNSIGNED_SHORT_SOFT 0x1403
207 #define AL_INT_SOFT 0x1404
208 #define AL_UNSIGNED_INT_SOFT 0x1405
209 #define AL_FLOAT_SOFT 0x1406
210 #define AL_DOUBLE_SOFT 0x1407
211 #define AL_BYTE3_SOFT 0x1408
212 #define AL_UNSIGNED_BYTE3_SOFT 0x1409
214 /* Storage formats */
215 #define AL_MONO8_SOFT 0x1100
216 #define AL_MONO16_SOFT 0x1101
217 #define AL_MONO32F_SOFT 0x10010
218 #define AL_STEREO8_SOFT 0x1102
219 #define AL_STEREO16_SOFT 0x1103
220 #define AL_STEREO32F_SOFT 0x10011
221 #define AL_QUAD8_SOFT 0x1204
222 #define AL_QUAD16_SOFT 0x1205
223 #define AL_QUAD32F_SOFT 0x1206
224 #define AL_REAR8_SOFT 0x1207
225 #define AL_REAR16_SOFT 0x1208
226 #define AL_REAR32F_SOFT 0x1209
227 #define AL_5POINT1_8_SOFT 0x120A
228 #define AL_5POINT1_16_SOFT 0x120B
229 #define AL_5POINT1_32F_SOFT 0x120C
230 #define AL_6POINT1_8_SOFT 0x120D
231 #define AL_6POINT1_16_SOFT 0x120E
232 #define AL_6POINT1_32F_SOFT 0x120F
233 #define AL_7POINT1_8_SOFT 0x1210
234 #define AL_7POINT1_16_SOFT 0x1211
235 #define AL_7POINT1_32F_SOFT 0x1212
237 /* Buffer attributes */
238 #define AL_INTERNAL_FORMAT_SOFT 0x2008
239 #define AL_BYTE_LENGTH_SOFT 0x2009
240 #define AL_SAMPLE_LENGTH_SOFT 0x200A
241 #define AL_SEC_LENGTH_SOFT 0x200B
243 typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
244 typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
245 typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
246 typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
247 #ifdef AL_ALEXT_PROTOTYPES
248 AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
249 AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
250 AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
251 AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
252 #endif
253 #endif
255 #ifndef AL_SOFT_direct_channels
256 #define AL_SOFT_direct_channels 1
257 #define AL_DIRECT_CHANNELS_SOFT 0x1033
258 #endif
260 #ifndef ALC_SOFT_loopback
261 #define ALC_SOFT_loopback 1
262 #define ALC_FORMAT_CHANNELS_SOFT 0x1990
263 #define ALC_FORMAT_TYPE_SOFT 0x1991
265 /* Sample types */
266 #define ALC_BYTE_SOFT 0x1400
267 #define ALC_UNSIGNED_BYTE_SOFT 0x1401
268 #define ALC_SHORT_SOFT 0x1402
269 #define ALC_UNSIGNED_SHORT_SOFT 0x1403
270 #define ALC_INT_SOFT 0x1404
271 #define ALC_UNSIGNED_INT_SOFT 0x1405
272 #define ALC_FLOAT_SOFT 0x1406
274 /* Channel configurations */
275 #define ALC_MONO_SOFT 0x1500
276 #define ALC_STEREO_SOFT 0x1501
277 #define ALC_QUAD_SOFT 0x1503
278 #define ALC_5POINT1_SOFT 0x1504
279 #define ALC_6POINT1_SOFT 0x1505
280 #define ALC_7POINT1_SOFT 0x1506
282 typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
283 typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
284 typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
285 #ifdef AL_ALEXT_PROTOTYPES
286 ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
287 ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
288 ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
289 #endif
290 #endif
292 #ifdef __cplusplus
294 #endif
296 #endif