2 * OpenAL32.dll thunk. Wraps Win32 OpenAL function calls around a native
5 * Copyright 2007 Nick Burns (adger44@hotmail.com)
6 * Copyright 2007,2009 Chris Robinson
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
30 #include "wine/debug.h"
35 #elif defined(HAVE_OPENAL_AL_H)
36 #include <OpenAL/al.h>
37 #include <OpenAL/alc.h>
40 WINE_DEFAULT_DEBUG_CHANNEL(openal32
);
42 typedef struct wine_ALCcontext
{
45 ALboolean been_current
;
47 ALvoid (CDECL
*alGenFilters
)(ALsizei n
, ALuint
* filters
);
48 ALvoid (CDECL
*alDeleteFilters
)(ALsizei n
, const ALuint
* filters
);
49 ALboolean (CDECL
*alIsFilter
)(ALuint fid
);
50 ALvoid (CDECL
*alFilterf
)(ALuint fid
, ALenum param
, ALfloat value
);
51 ALvoid (CDECL
*alFilterfv
)(ALuint fid
, ALenum param
, const ALfloat
* values
);
52 ALvoid (CDECL
*alFilteri
)(ALuint fid
, ALenum param
, ALint value
);
53 ALvoid (CDECL
*alFilteriv
)(ALuint fid
, ALenum param
, const ALint
* values
);
54 ALvoid (CDECL
*alGetFilterf
)(ALuint fid
, ALenum param
, ALfloat
* value
);
55 ALvoid (CDECL
*alGetFilterfv
)(ALuint fid
, ALenum param
, ALfloat
* values
);
56 ALvoid (CDECL
*alGetFilteri
)(ALuint fid
, ALenum param
, ALint
* value
);
57 ALvoid (CDECL
*alGetFilteriv
)(ALuint fid
, ALenum param
, ALint
* values
);
58 ALvoid (CDECL
*alGenEffects
)(ALsizei n
, ALuint
* effects
);
59 ALvoid (CDECL
*alDeleteEffects
)(ALsizei n
, const ALuint
* effects
);
60 ALboolean (CDECL
*alIsEffect
)(ALuint eid
);
61 ALvoid (CDECL
*alEffectf
)(ALuint eid
, ALenum param
, ALfloat value
);
62 ALvoid (CDECL
*alEffectfv
)(ALuint eid
, ALenum param
, const ALfloat
* values
);
63 ALvoid (CDECL
*alEffecti
)(ALuint eid
, ALenum param
, ALint value
);
64 ALvoid (CDECL
*alEffectiv
)(ALuint eid
, ALenum param
, const ALint
* values
);
65 ALvoid (CDECL
*alGetEffectf
)(ALuint eid
, ALenum param
, ALfloat
* value
);
66 ALvoid (CDECL
*alGetEffectfv
)(ALuint eid
, ALenum param
, ALfloat
* values
);
67 ALvoid (CDECL
*alGetEffecti
)(ALuint eid
, ALenum param
, ALint
* value
);
68 ALvoid (CDECL
*alGetEffectiv
)(ALuint eid
, ALenum param
, ALint
* values
);
69 ALvoid (CDECL
*alGenAuxiliaryEffectSlots
)(ALsizei n
, ALuint
* slots
);
70 ALvoid (CDECL
*alDeleteAuxiliaryEffectSlots
)(ALsizei n
, const ALuint
* slots
);
71 ALboolean (CDECL
*alIsAuxiliaryEffectSlot
)(ALuint sid
);
72 ALvoid (CDECL
*alAuxiliaryEffectSlotf
)(ALuint sid
, ALenum param
, ALfloat value
);
73 ALvoid (CDECL
*alAuxiliaryEffectSlotfv
)(ALuint sid
, ALenum param
, const ALfloat
* values
);
74 ALvoid (CDECL
*alAuxiliaryEffectSloti
)(ALuint sid
, ALenum param
, ALint value
);
75 ALvoid (CDECL
*alAuxiliaryEffectSlotiv
)(ALuint sid
, ALenum param
, const ALint
* values
);
76 ALvoid (CDECL
*alGetAuxiliaryEffectSlotf
)(ALuint sid
, ALenum param
, ALfloat
* value
);
77 ALvoid (CDECL
*alGetAuxiliaryEffectSlotfv
)(ALuint sid
, ALenum param
, ALfloat
* values
);
78 ALvoid (CDECL
*alGetAuxiliaryEffectSloti
)(ALuint sid
, ALenum param
, ALint
* value
);
79 ALvoid (CDECL
*alGetAuxiliaryEffectSlotiv
)(ALuint sid
, ALenum param
, ALint
* values
);
81 struct wine_ALCcontext
*next
;
89 static const struct FuncList ALCFuncs
[];
90 static const struct FuncList ALFuncs
[];
92 static wine_ALCcontext
*CtxList
;
93 static wine_ALCcontext
*CurrentCtx
;
95 CRITICAL_SECTION openal_cs
;
96 static CRITICAL_SECTION_DEBUG openal_cs_debug
=
99 {&openal_cs_debug
.ProcessLocksList
,
100 &openal_cs_debug
.ProcessLocksList
},
101 0, 0, {(DWORD_PTR
)(__FILE__
": openal_cs")}
103 CRITICAL_SECTION openal_cs
= {&openal_cs_debug
, -1, 0, 0, 0, 0};
105 /***********************************************************************
106 * OpenAL initialisation routine
108 BOOL WINAPI
DllMain( HINSTANCE hinst
, DWORD reason
, LPVOID reserved
)
112 case DLL_PROCESS_ATTACH
:
113 DisableThreadLibraryCalls(hinst
);
115 case DLL_PROCESS_DETACH
:
118 wine_ALCcontext
*next
= CtxList
->next
;
119 HeapFree(GetProcessHeap(), 0, CtxList
);
128 /* Validates the given context */
129 static wine_ALCcontext
*ValidateCtx(ALCcontext
*ctx
)
131 wine_ALCcontext
*cur
= CtxList
;
133 while(cur
!= NULL
&& cur
->ctx
!= ctx
)
139 /***********************************************************************
140 * OpenAL thunk routines
143 /* OpenAL ALC 1.0 functions */
144 ALCcontext
* CDECL
wine_alcCreateContext(ALCdevice
*device
, const ALCint
* attrlist
)
146 wine_ALCcontext
*ctx
;
148 ctx
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(wine_ALCcontext
));
151 ERR("Out of memory!\n");
155 ctx
->ctx
= alcCreateContext(device
, attrlist
);
158 HeapFree(GetProcessHeap(), 0, ctx
);
159 WARN("Failed to create new context\n");
162 TRACE("Created new context %p\n", ctx
->ctx
);
164 EnterCriticalSection(&openal_cs
);
167 LeaveCriticalSection(&openal_cs
);
172 ALCboolean CDECL
wine_alcMakeContextCurrent(ALCcontext
*context
)
174 wine_ALCcontext
*ctx
= NULL
;
176 EnterCriticalSection(&openal_cs
);
177 if(context
&& !(ctx
=ValidateCtx(context
)))
179 FIXME("Could not find context %p in context list\n", context
);
180 LeaveCriticalSection(&openal_cs
);
184 if(alcMakeContextCurrent(ctx
? ctx
->ctx
: NULL
) == ALC_FALSE
)
186 WARN("Failed to make context %p current\n", ctx
->ctx
);
187 LeaveCriticalSection(&openal_cs
);
192 if(CurrentCtx
&& !CurrentCtx
->been_current
)
194 CurrentCtx
->been_current
= AL_TRUE
;
196 #define LOADFUNC(x) CurrentCtx->x = alGetProcAddress(#x)
197 LOADFUNC(alGenFilters
);
198 LOADFUNC(alDeleteFilters
);
199 LOADFUNC(alIsFilter
);
201 LOADFUNC(alFilterfv
);
203 LOADFUNC(alFilteriv
);
204 LOADFUNC(alGetFilterf
);
205 LOADFUNC(alGetFilterfv
);
206 LOADFUNC(alGetFilteri
);
207 LOADFUNC(alGetFilteriv
);
208 LOADFUNC(alGenEffects
);
209 LOADFUNC(alDeleteEffects
);
210 LOADFUNC(alIsEffect
);
212 LOADFUNC(alEffectfv
);
214 LOADFUNC(alEffectiv
);
215 LOADFUNC(alGetEffectf
);
216 LOADFUNC(alGetEffectfv
);
217 LOADFUNC(alGetEffecti
);
218 LOADFUNC(alGetEffectiv
);
219 LOADFUNC(alGenAuxiliaryEffectSlots
);
220 LOADFUNC(alDeleteAuxiliaryEffectSlots
);
221 LOADFUNC(alIsAuxiliaryEffectSlot
);
222 LOADFUNC(alAuxiliaryEffectSlotf
);
223 LOADFUNC(alAuxiliaryEffectSlotfv
);
224 LOADFUNC(alAuxiliaryEffectSloti
);
225 LOADFUNC(alAuxiliaryEffectSlotiv
);
226 LOADFUNC(alGetAuxiliaryEffectSlotf
);
227 LOADFUNC(alGetAuxiliaryEffectSlotfv
);
228 LOADFUNC(alGetAuxiliaryEffectSloti
);
229 LOADFUNC(alGetAuxiliaryEffectSlotiv
);
232 LeaveCriticalSection(&openal_cs
);
237 ALvoid CDECL
wine_alcProcessContext(ALCcontext
*context
)
239 alcProcessContext(context
);
242 ALvoid CDECL
wine_alcSuspendContext(ALCcontext
*context
)
244 alcSuspendContext(context
);
247 ALvoid CDECL
wine_alcDestroyContext(ALCcontext
*context
)
249 wine_ALCcontext
**list
, *ctx
;
251 EnterCriticalSection(&openal_cs
);
254 while(*list
&& (*list
)->ctx
!= context
)
255 list
= &(*list
)->next
;
259 FIXME("Could not find context %p in context list\n", context
);
260 LeaveCriticalSection(&openal_cs
);
265 *list
= (*list
)->next
;
267 if(ctx
== CurrentCtx
)
270 LeaveCriticalSection(&openal_cs
);
272 HeapFree(GetProcessHeap(), 0, ctx
);
273 alcDestroyContext(context
);
276 ALCcontext
* CDECL
wine_alcGetCurrentContext(ALCvoid
)
278 ALCcontext
*ret
= NULL
;
280 EnterCriticalSection(&openal_cs
);
282 ret
= CurrentCtx
->ctx
;
283 LeaveCriticalSection(&openal_cs
);
288 ALCdevice
* CDECL
wine_alcGetContextsDevice(ALCcontext
*context
)
290 return alcGetContextsDevice(context
);
293 ALCdevice
* CDECL
wine_alcOpenDevice(const ALCchar
*devicename
)
295 return alcOpenDevice(devicename
);
298 ALCboolean CDECL
wine_alcCloseDevice(ALCdevice
*device
)
300 return alcCloseDevice(device
);
303 ALCenum CDECL
wine_alcGetError(ALCdevice
*device
)
305 return alcGetError(device
);
308 ALCboolean CDECL
wine_alcIsExtensionPresent(ALCdevice
*device
, const ALCchar
*extname
)
310 return alcIsExtensionPresent(device
, extname
);
313 ALCvoid
* CDECL
wine_alcGetProcAddress(ALCdevice
*device
, const ALCchar
*funcname
)
318 /* Make sure the host implementation has the requested function */
319 proc
= alcGetProcAddress(device
, funcname
);
323 for(i
= 0;ALCFuncs
[i
].name
;i
++)
325 if(strcmp(funcname
, ALCFuncs
[i
].name
) == 0)
326 return ALCFuncs
[i
].proc
;
328 FIXME("Could not find function in list: %s\n", funcname
);
332 ALCenum CDECL
wine_alcGetEnumValue(ALCdevice
*device
, const ALCchar
*enumname
)
334 return alcGetEnumValue(device
, enumname
);
337 const ALCchar
* CDECL
wine_alcGetString(ALCdevice
*device
, ALCenum param
)
339 return alcGetString(device
, param
);
342 ALvoid CDECL
wine_alcGetIntegerv(ALCdevice
*device
, ALCenum param
, ALCsizei size
, ALCint
*dest
)
344 return alcGetIntegerv(device
, param
, size
, dest
);
348 /* OpenAL 1.0 functions */
349 ALvoid CDECL
wine_alEnable(ALenum capability
)
351 alEnable(capability
);
354 ALvoid CDECL
wine_alDisable(ALenum capability
)
356 alDisable(capability
);
359 ALboolean CDECL
wine_alIsEnabled(ALenum capability
)
361 return alIsEnabled(capability
);
364 const ALchar
* CDECL
wine_alGetString(ALenum param
)
366 return alGetString(param
);
369 ALvoid CDECL
wine_alGetBooleanv(ALenum param
, ALboolean
* data
)
371 alGetBooleanv(param
, data
);
374 ALvoid CDECL
wine_alGetIntegerv(ALenum param
, ALint
* data
)
376 alGetIntegerv(param
, data
);
379 ALvoid CDECL
wine_alGetFloatv(ALenum param
, ALfloat
* data
)
381 alGetFloatv(param
, data
);
384 ALvoid CDECL
wine_alGetDoublev(ALenum param
, ALdouble
* data
)
386 alGetDoublev(param
, data
);
389 ALboolean CDECL
wine_alGetBoolean(ALenum param
)
391 return alGetBoolean(param
);
394 ALint CDECL
wine_alGetInteger(ALenum param
)
396 return alGetInteger(param
);
399 ALfloat CDECL
wine_alGetFloat(ALenum param
)
401 return alGetFloat(param
);
404 ALdouble CDECL
wine_alGetDouble(ALenum param
)
406 return alGetDouble(param
);
409 ALenum CDECL
wine_alGetError(ALvoid
)
414 ALboolean CDECL
wine_alIsExtensionPresent(const ALchar
* extname
)
416 return alIsExtensionPresent(extname
);
419 ALvoid
* CDECL
wine_alGetProcAddress(const ALchar
* funcname
)
424 /* Make sure the host implementation has the requested function. This will
425 * also set the last AL error properly if the function should not be
426 * returned (eg. no current context). */
427 proc
= alGetProcAddress(funcname
);
431 for(i
= 0;ALFuncs
[i
].name
;i
++)
433 if(strcmp(funcname
, ALFuncs
[i
].name
) == 0)
434 return ALFuncs
[i
].proc
;
436 FIXME("Could not find function in list: %s\n", funcname
);
440 ALenum CDECL
wine_alGetEnumValue(const ALchar
* ename
)
442 return alGetEnumValue(ename
);
445 ALvoid CDECL
wine_alListenerf(ALenum param
, ALfloat value
)
447 alListenerf(param
, value
);
450 ALvoid CDECL
wine_alListener3f(ALenum param
, ALfloat value1
, ALfloat value2
, ALfloat value3
)
452 alListener3f(param
, value1
, value2
, value3
);
455 ALvoid CDECL
wine_alListenerfv(ALenum param
, const ALfloat
* values
)
457 alListenerfv(param
, values
);
460 ALvoid CDECL
wine_alListeneri(ALenum param
, ALint value
)
462 alListeneri(param
, value
);
465 ALvoid CDECL
wine_alGetListenerf(ALenum param
, ALfloat
* value
)
467 alGetListenerf(param
, value
);
470 ALvoid CDECL
wine_alGetListener3f(ALenum param
, ALfloat
*value1
, ALfloat
*value2
, ALfloat
*value3
)
472 alGetListener3f(param
, value1
, value2
, value3
);
475 ALvoid CDECL
wine_alGetListenerfv(ALenum param
, ALfloat
* values
)
477 alGetListenerfv(param
, values
);
480 ALvoid CDECL
wine_alGetListeneri(ALenum param
, ALint
* value
)
482 alGetListeneri(param
, value
);
485 ALvoid CDECL
wine_alGetListeneriv(ALenum param
, ALint
* values
)
487 alGetListeneriv(param
, values
);
490 ALvoid CDECL
wine_alGenSources(ALsizei n
, ALuint
* sources
)
492 alGenSources(n
, sources
);
495 ALvoid CDECL
wine_alDeleteSources(ALsizei n
, const ALuint
* sources
)
497 alDeleteSources(n
, sources
);
500 ALboolean CDECL
wine_alIsSource(ALuint sid
)
502 return alIsSource(sid
);
505 ALvoid CDECL
wine_alSourcef(ALuint sid
, ALenum param
, ALfloat value
)
507 alSourcef(sid
, param
, value
);
510 ALvoid CDECL
wine_alSource3f(ALuint sid
, ALenum param
, ALfloat value1
, ALfloat value2
, ALfloat value3
)
512 alSource3f(sid
, param
, value1
, value2
, value3
);
515 ALvoid CDECL
wine_alSourcefv(ALuint sid
, ALenum param
, const ALfloat
* values
)
517 alSourcefv(sid
, param
, values
);
520 ALvoid CDECL
wine_alSourcei(ALuint sid
, ALenum param
, ALint value
)
522 alSourcei(sid
, param
, value
);
525 ALvoid CDECL
wine_alGetSourcef(ALuint sid
, ALenum param
, ALfloat
* value
)
527 alGetSourcef(sid
, param
, value
);
530 ALvoid CDECL
wine_alGetSource3f(ALuint sid
, ALenum param
, ALfloat
* value1
, ALfloat
* value2
, ALfloat
* value3
)
532 alGetSource3f(sid
, param
, value1
, value2
, value3
);
535 ALvoid CDECL
wine_alGetSourcefv(ALuint sid
, ALenum param
, ALfloat
* values
)
537 alGetSourcefv(sid
, param
, values
);
540 ALvoid CDECL
wine_alGetSourcei(ALuint sid
, ALenum param
, ALint
* value
)
542 alGetSourcei(sid
, param
, value
);
545 ALvoid CDECL
wine_alGetSourceiv(ALuint sid
, ALenum param
, ALint
* values
)
547 alGetSourceiv(sid
, param
, values
);
550 ALvoid CDECL
wine_alSourcePlayv(ALsizei ns
, const ALuint
*sids
)
552 alSourcePlayv(ns
, sids
);
555 ALvoid CDECL
wine_alSourceStopv(ALsizei ns
, const ALuint
*sids
)
557 alSourceStopv(ns
, sids
);
560 ALvoid CDECL
wine_alSourceRewindv(ALsizei ns
, const ALuint
*sids
)
562 alSourceRewindv(ns
, sids
);
565 ALvoid CDECL
wine_alSourcePausev(ALsizei ns
, const ALuint
*sids
)
567 alSourcePausev(ns
, sids
);
570 ALvoid CDECL
wine_alSourcePlay(ALuint sid
)
575 ALvoid CDECL
wine_alSourceStop(ALuint sid
)
580 ALvoid CDECL
wine_alSourceRewind(ALuint sid
)
585 ALvoid CDECL
wine_alSourcePause(ALuint sid
)
590 ALvoid CDECL
wine_alSourceQueueBuffers(ALuint sid
, ALsizei numEntries
, const ALuint
*bids
)
592 alSourceQueueBuffers(sid
, numEntries
, bids
);
595 ALvoid CDECL
wine_alSourceUnqueueBuffers(ALuint sid
, ALsizei numEntries
, ALuint
*bids
)
597 alSourceUnqueueBuffers(sid
, numEntries
, bids
);
600 ALvoid CDECL
wine_alGenBuffers(ALsizei n
, ALuint
* buffers
)
602 alGenBuffers(n
, buffers
);
605 ALvoid CDECL
wine_alDeleteBuffers(ALsizei n
, const ALuint
* buffers
)
607 alDeleteBuffers(n
, buffers
);
610 ALboolean CDECL
wine_alIsBuffer(ALuint bid
)
612 return alIsBuffer(bid
);
615 ALvoid CDECL
wine_alBufferData(ALuint bid
, ALenum format
, const ALvoid
* data
, ALsizei size
, ALsizei freq
)
617 alBufferData(bid
, format
, data
, size
, freq
);
620 ALvoid CDECL
wine_alGetBufferf(ALuint bid
, ALenum param
, ALfloat
* value
)
622 alGetBufferf(bid
, param
, value
);
625 ALvoid CDECL
wine_alGetBufferfv(ALuint bid
, ALenum param
, ALfloat
* values
)
627 alGetBufferfv(bid
, param
, values
);
630 ALvoid CDECL
wine_alGetBufferi(ALuint bid
, ALenum param
, ALint
* value
)
632 alGetBufferi(bid
, param
, value
);
635 ALvoid CDECL
wine_alGetBufferiv(ALuint bid
, ALenum param
, ALint
* values
)
637 alGetBufferiv(bid
, param
, values
);
640 ALvoid CDECL
wine_alDopplerFactor(ALfloat value
)
642 alDopplerFactor(value
);
645 ALvoid CDECL
wine_alDopplerVelocity(ALfloat value
)
647 alDopplerVelocity(value
);
650 ALvoid CDECL
wine_alDistanceModel(ALenum distanceModel
)
652 alDistanceModel(distanceModel
);
656 /* OpenAL ALC 1.1 functions */
657 ALCdevice
* CDECL
wine_alcCaptureOpenDevice(const ALCchar
*devicename
, ALCuint frequency
, ALCenum format
, ALCsizei buffersize
)
659 return alcCaptureOpenDevice(devicename
, frequency
, format
, buffersize
);
662 ALCboolean CDECL
wine_alcCaptureCloseDevice(ALCdevice
*device
)
664 return alcCaptureCloseDevice(device
);
667 ALCvoid CDECL
wine_alcCaptureStart(ALCdevice
*device
)
669 alcCaptureStart(device
);
672 ALCvoid CDECL
wine_alcCaptureStop(ALCdevice
*device
)
674 alcCaptureStop(device
);
677 ALCvoid CDECL
wine_alcCaptureSamples(ALCdevice
*device
, ALCvoid
*buffer
, ALCsizei samples
)
679 alcCaptureSamples(device
, buffer
, samples
);
682 /* OpenAL 1.1 functions */
683 ALvoid CDECL
wine_alListener3i(ALenum param
, ALint value1
, ALint value2
, ALint value3
)
685 alListener3i(param
, value1
, value2
, value3
);
688 ALvoid CDECL
wine_alListeneriv(ALenum param
, const ALint
* values
)
690 alListeneriv(param
, values
);
693 ALvoid CDECL
wine_alGetListener3i(ALenum param
, ALint
*value1
, ALint
*value2
, ALint
*value3
)
695 alGetListener3i(param
, value1
, value2
, value3
);
698 ALvoid CDECL
wine_alSource3i(ALuint sid
, ALenum param
, ALint value1
, ALint value2
, ALint value3
)
700 alSource3i(sid
, param
, value1
, value2
, value3
);
703 ALvoid CDECL
wine_alSourceiv(ALuint sid
, ALenum param
, const ALint
* values
)
705 alSourceiv(sid
, param
, values
);
708 ALvoid CDECL
wine_alGetSource3i(ALuint sid
, ALenum param
, ALint
* value1
, ALint
* value2
, ALint
* value3
)
710 alGetSource3i(sid
, param
, value1
, value2
, value3
);
713 ALvoid CDECL
wine_alBufferf(ALuint bid
, ALenum param
, ALfloat value
)
715 alBufferf(bid
, param
, value
);
718 ALvoid CDECL
wine_alBuffer3f(ALuint bid
, ALenum param
, ALfloat value1
, ALfloat value2
, ALfloat value3
)
720 alBuffer3f(bid
, param
, value1
, value2
, value3
);
723 ALvoid CDECL
wine_alBufferfv(ALuint bid
, ALenum param
, const ALfloat
* values
)
725 alBufferfv(bid
, param
, values
);
728 ALvoid CDECL
wine_alBufferi(ALuint bid
, ALenum param
, ALint value
)
730 alBufferi(bid
, param
, value
);
733 ALvoid CDECL
wine_alBuffer3i(ALuint bid
, ALenum param
, ALint value1
, ALint value2
, ALint value3
)
735 alBuffer3i(bid
, param
, value1
, value2
, value3
);
738 ALvoid CDECL
wine_alBufferiv(ALuint bid
, ALenum param
, const ALint
* values
)
740 alBufferiv(bid
, param
, values
);
743 ALvoid CDECL
wine_alGetBuffer3f(ALuint bid
, ALenum param
, ALfloat
* value1
, ALfloat
* value2
, ALfloat
* value3
)
745 alGetBuffer3f(bid
, param
, value1
, value2
, value3
);
748 ALvoid CDECL
wine_alGetBuffer3i(ALuint bid
, ALenum param
, ALint
* value1
, ALint
* value2
, ALint
* value3
)
750 alGetBuffer3i(bid
, param
, value1
, value2
, value3
);
753 ALvoid CDECL
wine_alSpeedOfSound(ALfloat value
)
755 alSpeedOfSound(value
);
758 /* OpenAL EFX extension functions */
759 ALvoid CDECL
wine_alGenFilters(ALsizei n
, ALuint
* filters
)
761 CurrentCtx
->alGenFilters(n
, filters
);
764 ALvoid CDECL
wine_alDeleteFilters(ALsizei n
, const ALuint
* filters
)
766 CurrentCtx
->alDeleteFilters(n
, filters
);
769 ALboolean CDECL
wine_alIsFilter(ALuint fid
)
771 return CurrentCtx
->alIsFilter(fid
);
774 ALvoid CDECL
wine_alFilterf(ALuint fid
, ALenum param
, ALfloat value
)
776 CurrentCtx
->alFilterf(fid
, param
, value
);
779 ALvoid CDECL
wine_alFilterfv(ALuint fid
, ALenum param
, const ALfloat
* values
)
781 CurrentCtx
->alFilterfv(fid
, param
, values
);
784 ALvoid CDECL
wine_alFilteri(ALuint fid
, ALenum param
, ALint value
)
786 CurrentCtx
->alFilteri(fid
, param
, value
);
789 ALvoid CDECL
wine_alFilteriv(ALuint fid
, ALenum param
, const ALint
* values
)
791 CurrentCtx
->alFilteriv(fid
, param
, values
);
794 ALvoid CDECL
wine_alGetFilterf(ALuint fid
, ALenum param
, ALfloat
* value
)
796 CurrentCtx
->alGetFilterf(fid
, param
, value
);
799 ALvoid CDECL
wine_alGetFilterfv(ALuint fid
, ALenum param
, ALfloat
* values
)
801 CurrentCtx
->alGetFilterfv(fid
, param
, values
);
804 ALvoid CDECL
wine_alGetFilteri(ALuint fid
, ALenum param
, ALint
* value
)
806 CurrentCtx
->alGetFilteri(fid
, param
, value
);
809 ALvoid CDECL
wine_alGetFilteriv(ALuint fid
, ALenum param
, ALint
* values
)
811 CurrentCtx
->alGetFilteriv(fid
, param
, values
);
815 ALvoid CDECL
wine_alGenEffects(ALsizei n
, ALuint
* effects
)
817 CurrentCtx
->alGenEffects(n
, effects
);
820 ALvoid CDECL
wine_alDeleteEffects(ALsizei n
, const ALuint
* effects
)
822 CurrentCtx
->alDeleteEffects(n
, effects
);
825 ALboolean CDECL
wine_alIsEffect(ALuint eid
)
827 return CurrentCtx
->alIsEffect(eid
);
830 ALvoid CDECL
wine_alEffectf(ALuint eid
, ALenum param
, ALfloat value
)
832 CurrentCtx
->alEffectf(eid
, param
, value
);
835 ALvoid CDECL
wine_alEffectfv(ALuint eid
, ALenum param
, const ALfloat
* values
)
837 CurrentCtx
->alEffectfv(eid
, param
, values
);
840 ALvoid CDECL
wine_alEffecti(ALuint eid
, ALenum param
, ALint value
)
842 CurrentCtx
->alEffecti(eid
, param
, value
);
845 ALvoid CDECL
wine_alEffectiv(ALuint eid
, ALenum param
, const ALint
* values
)
847 CurrentCtx
->alEffectiv(eid
, param
, values
);
850 ALvoid CDECL
wine_alGetEffectf(ALuint eid
, ALenum param
, ALfloat
* value
)
852 CurrentCtx
->alGetEffectf(eid
, param
, value
);
855 ALvoid CDECL
wine_alGetEffectfv(ALuint eid
, ALenum param
, ALfloat
* values
)
857 CurrentCtx
->alGetEffectfv(eid
, param
, values
);
860 ALvoid CDECL
wine_alGetEffecti(ALuint eid
, ALenum param
, ALint
* value
)
862 CurrentCtx
->alGetEffecti(eid
, param
, value
);
865 ALvoid CDECL
wine_alGetEffectiv(ALuint eid
, ALenum param
, ALint
* values
)
867 CurrentCtx
->alGetEffectiv(eid
, param
, values
);
871 ALvoid CDECL
wine_alGenAuxiliaryEffectSlots(ALsizei n
, ALuint
* slots
)
873 CurrentCtx
->alGenAuxiliaryEffectSlots(n
, slots
);
876 ALvoid CDECL
wine_alDeleteAuxiliaryEffectSlots(ALsizei n
, const ALuint
* slots
)
878 CurrentCtx
->alDeleteAuxiliaryEffectSlots(n
, slots
);
881 ALboolean CDECL
wine_alIsAuxiliaryEffectSlot(ALuint sid
)
883 return CurrentCtx
->alIsAuxiliaryEffectSlot(sid
);
886 ALvoid CDECL
wine_alAuxiliaryEffectSlotf(ALuint sid
, ALenum param
, ALfloat value
)
888 CurrentCtx
->alAuxiliaryEffectSlotf(sid
, param
, value
);
891 ALvoid CDECL
wine_alAuxiliaryEffectSlotfv(ALuint sid
, ALenum param
, const ALfloat
* values
)
893 CurrentCtx
->alAuxiliaryEffectSlotfv(sid
, param
, values
);
896 ALvoid CDECL
wine_alAuxiliaryEffectSloti(ALuint sid
, ALenum param
, ALint value
)
898 CurrentCtx
->alAuxiliaryEffectSloti(sid
, param
, value
);
901 ALvoid CDECL
wine_alAuxiliaryEffectSlotiv(ALuint sid
, ALenum param
, const ALint
* values
)
903 CurrentCtx
->alAuxiliaryEffectSlotiv(sid
, param
, values
);
906 ALvoid CDECL
wine_alGetAuxiliaryEffectSlotf(ALuint sid
, ALenum param
, ALfloat
* value
)
908 CurrentCtx
->alGetAuxiliaryEffectSlotf(sid
, param
, value
);
911 ALvoid CDECL
wine_alGetAuxiliaryEffectSlotfv(ALuint sid
, ALenum param
, ALfloat
* values
)
913 CurrentCtx
->alGetAuxiliaryEffectSlotfv(sid
, param
, values
);
916 ALvoid CDECL
wine_alGetAuxiliaryEffectSloti(ALuint sid
, ALenum param
, ALint
* value
)
918 CurrentCtx
->alGetAuxiliaryEffectSloti(sid
, param
, value
);
921 ALvoid CDECL
wine_alGetAuxiliaryEffectSlotiv(ALuint sid
, ALenum param
, ALint
* values
)
923 CurrentCtx
->alGetAuxiliaryEffectSlotiv(sid
, param
, values
);
927 static const struct FuncList ALCFuncs
[] = {
928 { "alcCreateContext", wine_alcCreateContext
},
929 { "alcMakeContextCurrent", wine_alcMakeContextCurrent
},
930 { "alcProcessContext", wine_alcProcessContext
},
931 { "alcSuspendContext", wine_alcSuspendContext
},
932 { "alcDestroyContext", wine_alcDestroyContext
},
933 { "alcGetCurrentContext", wine_alcGetCurrentContext
},
934 { "alcGetContextsDevice", wine_alcGetContextsDevice
},
935 { "alcOpenDevice", wine_alcOpenDevice
},
936 { "alcCloseDevice", wine_alcCloseDevice
},
937 { "alcGetError", wine_alcGetError
},
938 { "alcIsExtensionPresent", wine_alcIsExtensionPresent
},
939 { "alcGetProcAddress", wine_alcGetProcAddress
},
940 { "alcGetEnumValue", wine_alcGetEnumValue
},
941 { "alcGetString", wine_alcGetString
},
942 { "alcGetIntegerv", wine_alcGetIntegerv
},
943 { "alcCaptureOpenDevice", wine_alcCaptureOpenDevice
},
944 { "alcCaptureCloseDevice", wine_alcCaptureCloseDevice
},
945 { "alcCaptureStart", wine_alcCaptureStart
},
946 { "alcCaptureStop", wine_alcCaptureStop
},
947 { "alcCaptureSamples", wine_alcCaptureSamples
},
950 static const struct FuncList ALFuncs
[] = {
951 { "alEnable", wine_alEnable
},
952 { "alDisable", wine_alDisable
},
953 { "alIsEnabled", wine_alIsEnabled
},
954 { "alGetString", wine_alGetString
},
955 { "alGetBooleanv", wine_alGetBooleanv
},
956 { "alGetIntegerv", wine_alGetIntegerv
},
957 { "alGetFloatv", wine_alGetFloatv
},
958 { "alGetDoublev", wine_alGetDoublev
},
959 { "alGetBoolean", wine_alGetBoolean
},
960 { "alGetInteger", wine_alGetInteger
},
961 { "alGetFloat", wine_alGetFloat
},
962 { "alGetDouble", wine_alGetDouble
},
963 { "alGetError", wine_alGetError
},
964 { "alIsExtensionPresent", wine_alIsExtensionPresent
},
965 { "alGetProcAddress", wine_alGetProcAddress
},
966 { "alGetEnumValue", wine_alGetEnumValue
},
967 { "alListenerf", wine_alListenerf
},
968 { "alListener3f", wine_alListener3f
},
969 { "alListenerfv", wine_alListenerfv
},
970 { "alListeneri", wine_alListeneri
},
971 { "alListener3i", wine_alListener3i
},
972 { "alListeneriv", wine_alListeneriv
},
973 { "alGetListenerf", wine_alGetListenerf
},
974 { "alGetListener3f", wine_alGetListener3f
},
975 { "alGetListenerfv", wine_alGetListenerfv
},
976 { "alGetListeneri", wine_alGetListeneri
},
977 { "alGetListener3i", wine_alGetListener3i
},
978 { "alGetListeneriv", wine_alGetListeneriv
},
979 { "alGenSources", wine_alGenSources
},
980 { "alDeleteSources", wine_alDeleteSources
},
981 { "alIsSource", wine_alIsSource
},
982 { "alSourcef", wine_alSourcef
},
983 { "alSource3f", wine_alSource3f
},
984 { "alSourcefv", wine_alSourcefv
},
985 { "alSourcei", wine_alSourcei
},
986 { "alSource3i", wine_alSource3i
},
987 { "alSourceiv", wine_alSourceiv
},
988 { "alGetSourcef", wine_alGetSourcef
},
989 { "alGetSource3f", wine_alGetSource3f
},
990 { "alGetSourcefv", wine_alGetSourcefv
},
991 { "alGetSourcei", wine_alGetSourcei
},
992 { "alGetSource3i", wine_alGetSource3i
},
993 { "alGetSourceiv", wine_alGetSourceiv
},
994 { "alSourcePlayv", wine_alSourcePlayv
},
995 { "alSourceStopv", wine_alSourceStopv
},
996 { "alSourceRewindv", wine_alSourceRewindv
},
997 { "alSourcePausev", wine_alSourcePausev
},
998 { "alSourcePlay", wine_alSourcePlay
},
999 { "alSourceStop", wine_alSourceStop
},
1000 { "alSourceRewind", wine_alSourceRewind
},
1001 { "alSourcePause", wine_alSourcePause
},
1002 { "alSourceQueueBuffers", wine_alSourceQueueBuffers
},
1003 { "alSourceUnqueueBuffers", wine_alSourceUnqueueBuffers
},
1004 { "alGenBuffers", wine_alGenBuffers
},
1005 { "alDeleteBuffers", wine_alDeleteBuffers
},
1006 { "alIsBuffer", wine_alIsBuffer
},
1007 { "alBufferData", wine_alBufferData
},
1008 { "alBufferf", wine_alBufferf
},
1009 { "alBuffer3f", wine_alBuffer3f
},
1010 { "alBufferfv", wine_alBufferfv
},
1011 { "alBufferi", wine_alBufferi
},
1012 { "alBuffer3i", wine_alBuffer3i
},
1013 { "alBufferiv", wine_alBufferiv
},
1014 { "alGetBufferf", wine_alGetBufferf
},
1015 { "alGetBuffer3f", wine_alGetBuffer3f
},
1016 { "alGetBufferfv", wine_alGetBufferfv
},
1017 { "alGetBufferi", wine_alGetBufferi
},
1018 { "alGetBuffer3i", wine_alGetBuffer3i
},
1019 { "alGetBufferiv", wine_alGetBufferiv
},
1020 { "alDopplerFactor", wine_alDopplerFactor
},
1021 { "alDopplerVelocity", wine_alDopplerVelocity
},
1022 { "alSpeedOfSound", wine_alSpeedOfSound
},
1023 { "alDistanceModel", wine_alDistanceModel
},
1025 { "alGenFilters", wine_alGenFilters
},
1026 { "alDeleteFilters", wine_alDeleteFilters
},
1027 { "alIsFilter", wine_alIsFilter
},
1028 { "alFilterf", wine_alFilterf
},
1029 { "alFilterfv", wine_alFilterfv
},
1030 { "alFilteri", wine_alFilteri
},
1031 { "alFilteriv", wine_alFilteriv
},
1032 { "alGetFilterf", wine_alGetFilterf
},
1033 { "alGetFilterfv", wine_alGetFilterfv
},
1034 { "alGetFilteri", wine_alGetFilteri
},
1035 { "alGetFilteriv", wine_alGetFilteriv
},
1037 { "alGenEffects", wine_alGenEffects
},
1038 { "alDeleteEffects", wine_alDeleteEffects
},
1039 { "alIsEffect", wine_alIsEffect
},
1040 { "alEffectf", wine_alEffectf
},
1041 { "alEffectfv", wine_alEffectfv
},
1042 { "alEffecti", wine_alEffecti
},
1043 { "alEffectiv", wine_alEffectiv
},
1044 { "alGetEffectf", wine_alGetEffectf
},
1045 { "alGetEffectfv", wine_alGetEffectfv
},
1046 { "alGetEffecti", wine_alGetEffecti
},
1047 { "alGetEffectiv", wine_alGetEffectiv
},
1049 { "alGenAuxiliaryEffectSlots", wine_alGenAuxiliaryEffectSlots
},
1050 { "alDeleteAuxiliaryEffectSlots",wine_alDeleteAuxiliaryEffectSlots
},
1051 { "alIsAuxiliaryEffectSlot", wine_alIsAuxiliaryEffectSlot
},
1052 { "alAuxiliaryEffectSlotf", wine_alAuxiliaryEffectSlotf
},
1053 { "alAuxiliaryEffectSlotfv", wine_alAuxiliaryEffectSlotfv
},
1054 { "alAuxiliaryEffectSloti", wine_alAuxiliaryEffectSloti
},
1055 { "alAuxiliaryEffectSlotiv", wine_alAuxiliaryEffectSlotiv
},
1056 { "alGetAuxiliaryEffectSlotf", wine_alGetAuxiliaryEffectSlotf
},
1057 { "alGetAuxiliaryEffectSlotfv", wine_alGetAuxiliaryEffectSlotfv
},
1058 { "alGetAuxiliaryEffectSloti", wine_alGetAuxiliaryEffectSloti
},
1059 { "alGetAuxiliaryEffectSlotiv", wine_alGetAuxiliaryEffectSlotiv
},