summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2012-09-08 22:32:30 -0700
committerChris Robinson <[email protected]>2012-09-08 22:32:30 -0700
commit2bf1979d4a805e661bdd43258a5020c96cda1f80 (patch)
tree9ee8042eaa1bb7586b622a27c873a17b98d1ef68
parent89cab3cd393a8fd9b3fd9e33a19103108258e938 (diff)
Move the target effect slot to the SendParams struct
-rw-r--r--Alc/ALu.c4
-rw-r--r--Alc/mixer.c7
-rw-r--r--Alc/mixer_defs.h6
-rw-r--r--Alc/mixer_inc.c5
-rw-r--r--OpenAL32/Include/alSource.h3
-rw-r--r--OpenAL32/Include/alu.h3
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);