Don't expose effect-specific structures
[openal-soft/openal-hmr.git] / OpenAL32 / Include / alAuxEffectSlot.h
blobe4c46d7036b7503f096a32d781bd42b36272e66c
1 #ifndef _AL_AUXEFFECTSLOT_H_
2 #define _AL_AUXEFFECTSLOT_H_
4 #include "AL/al.h"
5 #include "alEffect.h"
6 #include "alFilter.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
12 #define AL_EFFECTSLOT_EFFECT 0x0001
13 #define AL_EFFECTSLOT_GAIN 0x0002
14 #define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003
16 #define AL_EFFECTSLOT_NULL 0x0000
18 typedef struct ALeffectState ALeffectState;
20 typedef struct ALeffectslot
22 ALeffect effect;
24 ALfloat Gain;
25 ALboolean AuxSendAuto;
27 ALeffectState *EffectState;
29 ALfloat WetBuffer[BUFFERSIZE];
31 ALuint refcount;
33 // Index to itself
34 ALuint effectslot;
36 struct ALeffectslot *next;
37 } ALeffectslot;
39 ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
40 ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
41 ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot);
43 ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue);
44 ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
45 ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue);
46 ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
48 ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue);
49 ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
50 ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue);
51 ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
53 ALvoid ReleaseALAuxiliaryEffectSlots(ALCcontext *Context);
56 struct ALeffectState {
57 ALvoid (*Destroy)(ALeffectState *State);
58 ALvoid (*Update)(ALeffectState *State, ALCcontext *Context, ALeffectslot *Slot, ALeffect *Effect);
59 ALvoid (*Process)(ALeffectState *State, ALuint SamplesToDo, const ALfloat *SamplesIn, ALfloat (*SamplesOut)[OUTPUTCHANNELS]);
62 ALeffectState *EAXVerbCreate(ALCcontext *Context);
63 ALeffectState *VerbCreate(ALCcontext *Context);
64 ALeffectState *EchoCreate(ALCcontext *Context);
66 #define ALEffect_Destroy(a) ((a)->Destroy((a)))
67 #define ALEffect_Update(a,b,c,d) ((a)->Update((a),(b),(c),(d)))
68 #define ALEffect_Process(a,b,c,d) ((a)->Process((a),(b),(c),(d)))
71 #ifdef __cplusplus
73 #endif
75 #endif