annotate OpenAL32/Include/alAuxEffectSlot.h @ 0:f9476ff7637e

initial forking of open-al to create multiple listeners
author Robert McIntyre <rlm@mit.edu>
date Tue, 25 Oct 2011 13:02:31 -0700
parents
children
rev   line source
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