1 #ifndef _AL_AUXEFFECTSLOT_H_
2 #define _AL_AUXEFFECTSLOT_H_
11 typedef struct ALeffectState
{
12 ALvoid (*Destroy
)(struct ALeffectState
*State
);
13 ALboolean (*DeviceUpdate
)(struct ALeffectState
*State
, ALCdevice
*Device
);
14 ALvoid (*Update
)(struct ALeffectState
*State
, ALCdevice
*Device
, const struct ALeffectslot
*Slot
);
15 ALvoid (*Process
)(struct ALeffectState
*State
, ALuint SamplesToDo
, const ALfloat
*SamplesIn
, ALfloat (*SamplesOut
)[BUFFERSIZE
]);
19 typedef struct ALeffectslot
23 volatile ALfloat Gain
;
24 volatile ALboolean AuxSendAuto
;
26 volatile ALenum NeedsUpdate
;
27 ALeffectState
*EffectState
;
29 ALIGN(16) ALfloat WetBuffer
[BUFFERSIZE
];
31 ALfloat ClickRemoval
[1];
32 ALfloat PendingClicks
[1];
41 ALenum
InitEffectSlot(ALeffectslot
*slot
);
42 ALvoid
ReleaseALAuxiliaryEffectSlots(ALCcontext
*Context
);
44 ALeffectState
*NoneCreate(void);
45 ALeffectState
*ReverbCreate(void);
46 ALeffectState
*EchoCreate(void);
47 ALeffectState
*ModulatorCreate(void);
48 ALeffectState
*DedicatedCreate(void);
50 #define ALeffectState_Destroy(a) ((a)->Destroy((a)))
51 #define ALeffectState_DeviceUpdate(a,b) ((a)->DeviceUpdate((a),(b)))
52 #define ALeffectState_Update(a,b,c) ((a)->Update((a),(b),(c)))
53 #define ALeffectState_Process(a,b,c,d) ((a)->Process((a),(b),(c),(d)))
55 ALenum
InitializeEffect(ALCdevice
*Device
, ALeffectslot
*EffectSlot
, ALeffect
*effect
);