1 #ifndef _AL_AUXEFFECTSLOT_H_
2 #define _AL_AUXEFFECTSLOT_H_
12 typedef struct ALeffectState ALeffectState
;
14 typedef struct ALeffectslot
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];
34 struct ALeffectslot
*next
;
38 ALvoid
ReleaseALAuxiliaryEffectSlots(ALCcontext
*Context
);
41 struct ALeffectState
{
42 ALvoid (*Destroy
)(ALeffectState
*State
);
43 ALboolean (*DeviceUpdate
)(ALeffectState
*State
, ALCdevice
*Device
);
44 ALvoid (*Update
)(ALeffectState
*State
, ALCcontext
*Context
, const ALeffectslot
*Slot
);
45 ALvoid (*Process
)(ALeffectState
*State
, ALuint SamplesToDo
, const ALfloat
*SamplesIn
, ALfloat (*SamplesOut
)[MAXCHANNELS
]);
48 ALeffectState
*NoneCreate(void);
49 ALeffectState
*ReverbCreate(void);
50 ALeffectState
*EchoCreate(void);
51 ALeffectState
*ModulatorCreate(void);
52 ALeffectState
*DedicatedCreate(void);
54 #define ALeffectState_Destroy(a) ((a)->Destroy((a)))
55 #define ALeffectState_DeviceUpdate(a,b) ((a)->DeviceUpdate((a),(b)))
56 #define ALeffectState_Update(a,b,c) ((a)->Update((a),(b),(c)))
57 #define ALeffectState_Process(a,b,c,d) ((a)->Process((a),(b),(c),(d)))