rlm@0
|
1 #ifndef _AL_AUXEFFECTSLOT_H_
|
rlm@0
|
2 #define _AL_AUXEFFECTSLOT_H_
|
rlm@0
|
3
|
rlm@0
|
4 #include "AL/al.h"
|
rlm@0
|
5 #include "alEffect.h"
|
rlm@0
|
6 #include "alFilter.h"
|
rlm@0
|
7
|
rlm@0
|
8 #ifdef __cplusplus
|
rlm@0
|
9 extern "C" {
|
rlm@0
|
10 #endif
|
rlm@0
|
11
|
rlm@0
|
12 typedef struct ALeffectState ALeffectState;
|
rlm@0
|
13
|
rlm@0
|
14 typedef struct ALeffectslot
|
rlm@0
|
15 {
|
rlm@0
|
16 ALeffect effect;
|
rlm@0
|
17
|
rlm@0
|
18 ALfloat Gain;
|
rlm@0
|
19 ALboolean AuxSendAuto;
|
rlm@0
|
20
|
rlm@0
|
21 ALboolean NeedsUpdate;
|
rlm@0
|
22 ALeffectState *EffectState;
|
rlm@0
|
23
|
rlm@0
|
24 ALfloat WetBuffer[BUFFERSIZE];
|
rlm@0
|
25
|
rlm@0
|
26 ALfloat ClickRemoval[1];
|
rlm@0
|
27 ALfloat PendingClicks[1];
|
rlm@0
|
28
|
rlm@0
|
29 ALuint refcount;
|
rlm@0
|
30
|
rlm@0
|
31 // Index to itself
|
rlm@0
|
32 ALuint effectslot;
|
rlm@0
|
33
|
rlm@0
|
34 struct ALeffectslot *next;
|
rlm@0
|
35 } ALeffectslot;
|
rlm@0
|
36
|
rlm@0
|
37
|
rlm@0
|
38 ALvoid ReleaseALAuxiliaryEffectSlots(ALCcontext *Context);
|
rlm@0
|
39
|
rlm@0
|
40
|
rlm@0
|
41 struct ALeffectState {
|
rlm@0
|
42 ALvoid (*Destroy)(ALeffectState *State);
|
rlm@0
|
43 ALboolean (*DeviceUpdate)(ALeffectState *State, ALCdevice *Device);
|
rlm@0
|
44 ALvoid (*Update)(ALeffectState *State, ALCcontext *Context, const ALeffectslot *Slot);
|
rlm@0
|
45 ALvoid (*Process)(ALeffectState *State, const ALeffectslot *Slot, ALuint SamplesToDo, const ALfloat *SamplesIn, ALfloat (*SamplesOut)[MAXCHANNELS]);
|
rlm@0
|
46 };
|
rlm@0
|
47
|
rlm@0
|
48 ALeffectState *NoneCreate(void);
|
rlm@0
|
49 ALeffectState *EAXVerbCreate(void);
|
rlm@0
|
50 ALeffectState *VerbCreate(void);
|
rlm@0
|
51 ALeffectState *EchoCreate(void);
|
rlm@0
|
52 ALeffectState *ModulatorCreate(void);
|
rlm@0
|
53 ALeffectState *DedicatedDLGCreate(void);
|
rlm@0
|
54 ALeffectState *DedicatedLFECreate(void);
|
rlm@0
|
55
|
rlm@0
|
56 #define ALEffect_Destroy(a) ((a)->Destroy((a)))
|
rlm@0
|
57 #define ALEffect_DeviceUpdate(a,b) ((a)->DeviceUpdate((a),(b)))
|
rlm@0
|
58 #define ALEffect_Update(a,b,c) ((a)->Update((a),(b),(c)))
|
rlm@0
|
59 #define ALEffect_Process(a,b,c,d,e) ((a)->Process((a),(b),(c),(d),(e)))
|
rlm@0
|
60
|
rlm@0
|
61
|
rlm@0
|
62 #ifdef __cplusplus
|
rlm@0
|
63 }
|
rlm@0
|
64 #endif
|
rlm@0
|
65
|
rlm@0
|
66 #endif
|