From 2bf1979d4a805e661bdd43258a5020c96cda1f80 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 8 Sep 2012 22:32:30 -0700 Subject: [PATCH] Move the target effect slot to the SendParams struct --- Alc/ALu.c | 4 ++-- Alc/mixer.c | 7 +++---- Alc/mixer_defs.h | 6 +++--- Alc/mixer_inc.c | 5 ++--- OpenAL32/Include/alSource.h | 3 ++- OpenAL32/Include/alu.h | 3 +-- 6 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Alc/ALu.c b/Alc/ALu.c index d7b6025e..22f347f5 100644 --- a/Alc/ALu.c +++ b/Alc/ALu.c @@ -303,7 +303,7 @@ ALvoid CalcNonAttnSourceParams(ALsource *ALSource, const ALCcontext *ALContext) Slot = Device->DefaultSlot; if(Slot && Slot->effect.type == AL_EFFECT_NULL) Slot = NULL; - ALSource->Params.Slot[i] = Slot; + ALSource->Params.Send[i].Slot = Slot; ALSource->Params.Send[i].Gain = WetGain[i]; } @@ -440,7 +440,7 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext) RoomAirAbsorption[i] = AIRABSORBGAINHF; } - ALSource->Params.Slot[i] = Slot; + ALSource->Params.Send[i].Slot = Slot; } /* Transform source to listener space (convert to head relative) */ diff --git a/Alc/mixer.c b/Alc/mixer.c index d6686402..e6cab3be 100644 --- a/Alc/mixer.c +++ b/Alc/mixer.c @@ -437,11 +437,10 @@ ALvoid MixSource(ALsource *Source, ALCdevice *Device, ALuint SamplesToDo) BufferSize); for(j = 0;j < Device->NumAuxSends;j++) { - if(!Source->Params.Slot[j]) + if(!Source->Params.Send[j].Slot) continue; - Source->Params.WetMix(Source, j, &Source->Params.Send[j], - ResampledData, i, OutPos, SamplesToDo, - BufferSize); + Source->Params.WetMix(&Source->Params.Send[j], ResampledData, i, + OutPos, SamplesToDo, BufferSize); } } for(i = 0;i < BufferSize;i++) diff --git a/Alc/mixer_defs.h b/Alc/mixer_defs.h index 5c8e5a9f..fb3d3d8f 100644 --- a/Alc/mixer_defs.h +++ b/Alc/mixer_defs.h @@ -13,16 +13,16 @@ struct SendParams; /* C mixers */ void MixDirect_Hrtf_C(struct ALsource*,ALCdevice*,struct DirectParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); void MixDirect_C(struct ALsource*,ALCdevice*,struct DirectParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); -void MixSend_C(struct ALsource*,ALuint,struct SendParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); +void MixSend_C(struct SendParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); /* SSE mixers */ void MixDirect_Hrtf_SSE(struct ALsource*,ALCdevice*,struct DirectParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); void MixDirect_SSE(struct ALsource*,ALCdevice*,struct DirectParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); -void MixSend_SSE(struct ALsource*,ALuint,struct SendParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); +void MixSend_SSE(struct SendParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); /* Neon mixers */ void MixDirect_Hrtf_Neon(struct ALsource*,ALCdevice*,struct DirectParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); void MixDirect_Neon(struct ALsource*,ALCdevice*,struct DirectParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); -void MixSend_Neon(struct ALsource*,ALuint,struct SendParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); +void MixSend_Neon(struct SendParams*,const ALfloat*RESTRICT,ALuint,ALuint,ALuint,ALuint); #endif /* MIXER_DEFS_H */ diff --git a/Alc/mixer_inc.c b/Alc/mixer_inc.c index 6c10a660..ff12026b 100644 --- a/Alc/mixer_inc.c +++ b/Alc/mixer_inc.c @@ -192,8 +192,7 @@ void MixDirect(ALsource *Source, ALCdevice *Device, DirectParams *params, } -void MixSend(ALsource *Source, ALuint sendidx, SendParams *params, - const ALfloat *RESTRICT data, ALuint srcchan, +void MixSend(SendParams *params, const ALfloat *RESTRICT data, ALuint srcchan, ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize) { ALeffectslot *Slot; @@ -205,7 +204,7 @@ void MixSend(ALsource *Source, ALuint sendidx, SendParams *params, ALuint pos; ALfloat value; - Slot = Source->Params.Slot[sendidx]; + Slot = params->Slot; WetBuffer = Slot->WetBuffer; WetClickRemoval = Slot->ClickRemoval; WetPendingClicks = Slot->PendingClicks; diff --git a/OpenAL32/Include/alSource.h b/OpenAL32/Include/alSource.h index 0d9ac9f1..ace0b5b5 100644 --- a/OpenAL32/Include/alSource.h +++ b/OpenAL32/Include/alSource.h @@ -59,6 +59,8 @@ typedef struct DirectParams { } DirectParams; typedef struct SendParams { + struct ALeffectslot *Slot; + /* Gain control, which applies to all input channels to a single (mono) * output buffer. */ ALfloat Gain; @@ -154,7 +156,6 @@ typedef struct ALsource DirectParams Direct; - struct ALeffectslot *Slot[MAX_SENDS]; SendParams Send[MAX_SENDS]; } Params; /** Source needs to update its mixing parameters. */ diff --git a/OpenAL32/Include/alu.h b/OpenAL32/Include/alu.h index 85d44221..d55f7269 100644 --- a/OpenAL32/Include/alu.h +++ b/OpenAL32/Include/alu.h @@ -113,8 +113,7 @@ typedef ALvoid (*DryMixerFunc)(struct ALsource *self, ALCdevice *Device, const ALfloat *RESTRICT data, ALuint srcchan, ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize); -typedef ALvoid (*WetMixerFunc)(struct ALsource *self, ALuint sendidx, - struct SendParams *params, +typedef ALvoid (*WetMixerFunc)(struct SendParams *params, const ALfloat *RESTRICT data, ALuint srcchan, ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize); -- 2.11.4.GIT