Mark extension functions with AL_API/ALC_API
[openal-soft.git] / OpenAL32 / Include / alEffect.h
blob2061e801f1504731816d89f357afb85fd11508fb
1 // NOTE: The effect structure is getting too large, it may be a good idea to
2 // start using a union or another form of unified storage.
3 #ifndef _AL_EFFECT_H_
4 #define _AL_EFFECT_H_
6 #include "AL/al.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
12 enum {
13 EAXREVERB = 0,
14 REVERB,
15 ECHO,
17 MAX_EFFECTS
19 extern ALboolean DisabledEffects[MAX_EFFECTS];
21 typedef struct ALeffect
23 // Effect type (AL_EFFECT_NULL, ...)
24 ALenum type;
26 struct {
27 // Shared Reverb Properties
28 ALfloat Density;
29 ALfloat Diffusion;
30 ALfloat Gain;
31 ALfloat GainHF;
32 ALfloat DecayTime;
33 ALfloat DecayHFRatio;
34 ALfloat ReflectionsGain;
35 ALfloat ReflectionsDelay;
36 ALfloat LateReverbGain;
37 ALfloat LateReverbDelay;
38 ALfloat AirAbsorptionGainHF;
39 ALfloat RoomRolloffFactor;
40 ALboolean DecayHFLimit;
42 // Additional EAX Reverb Properties
43 ALfloat GainLF;
44 ALfloat DecayLFRatio;
45 ALfloat ReflectionsPan[3];
46 ALfloat LateReverbPan[3];
47 ALfloat EchoTime;
48 ALfloat EchoDepth;
49 ALfloat ModulationTime;
50 ALfloat ModulationDepth;
51 ALfloat HFReference;
52 ALfloat LFReference;
53 } Reverb;
55 struct {
56 ALfloat Delay;
57 ALfloat LRDelay;
59 ALfloat Damping;
60 ALfloat Feedback;
62 ALfloat Spread;
63 } Echo;
65 // Index to itself
66 ALuint effect;
68 struct ALeffect *next;
69 } ALeffect;
71 AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
72 AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, ALuint *effects);
73 AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
75 AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
76 AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, ALint *piValues);
77 AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
78 AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
80 AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
81 AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
82 AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
83 AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
85 ALvoid ReleaseALEffects(ALCdevice *device);
87 #ifdef __cplusplus
89 #endif
91 #endif