Properly export alGetSource3i64SOFT
[openal-soft.git] / OpenAL32 / Include / alAuxEffectSlot.h
blobdd8d3d7641a48ffe102664a9f886da08f8c0589b
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 typedef struct ALeffectState ALeffectState;
14 typedef struct ALeffectslot
16 ALeffect effect;
18 volatile ALfloat Gain;
19 volatile ALboolean AuxSendAuto;
21 volatile ALenum NeedsUpdate;
22 ALeffectState *EffectState;
24 ALfloat WetBuffer[BUFFERSIZE];
26 ALfloat ClickRemoval[1];
27 ALfloat PendingClicks[1];
29 RefCount ref;
31 /* Self ID */
32 ALuint id;
33 } ALeffectslot;
36 ALenum InitEffectSlot(ALeffectslot *slot);
37 ALvoid ReleaseALAuxiliaryEffectSlots(ALCcontext *Context);
39 struct ALeffectState {
40 ALvoid (*Destroy)(ALeffectState *State);
41 ALboolean (*DeviceUpdate)(ALeffectState *State, ALCdevice *Device);
42 ALvoid (*Update)(ALeffectState *State, ALCdevice *Device, const ALeffectslot *Slot);
43 ALvoid (*Process)(ALeffectState *State, ALuint SamplesToDo, const ALfloat *SamplesIn, ALfloat (*SamplesOut)[MaxChannels]);
46 ALeffectState *NoneCreate(void);
47 ALeffectState *ReverbCreate(void);
48 ALeffectState *EchoCreate(void);
49 ALeffectState *ModulatorCreate(void);
50 ALeffectState *DedicatedCreate(void);
52 #define ALeffectState_Destroy(a) ((a)->Destroy((a)))
53 #define ALeffectState_DeviceUpdate(a,b) ((a)->DeviceUpdate((a),(b)))
54 #define ALeffectState_Update(a,b,c) ((a)->Update((a),(b),(c)))
55 #define ALeffectState_Process(a,b,c,d) ((a)->Process((a),(b),(c),(d)))
57 ALenum InitializeEffect(ALCdevice *Device, ALeffectslot *EffectSlot, ALeffect *effect);
59 #ifdef __cplusplus
61 #endif
63 #endif