aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2012-04-28 01:32:52 -0700
committerChris Robinson <[email protected]>2012-04-28 01:32:52 -0700
commit0a193c564585bb9080bc4fd905450141844e6eeb (patch)
treeb1c60ff5a3619cee27e121ed89abb051366fe822
parent2450ee1723daddd8f0977f2589b45e126b1ae62a (diff)
Move the direct and send params into separate different types
-rw-r--r--Alc/ALu.c4
-rw-r--r--Alc/mixer.c4
-rw-r--r--OpenAL32/Include/alSource.h56
3 files changed, 37 insertions, 27 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index fabef277..2758bb90 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -320,7 +320,7 @@ ALvoid CalcNonAttnSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
Slot = Device->DefaultSlot;
if(Slot && Slot->effect.type == AL_EFFECT_NULL)
Slot = NULL;
- ALSource->Params.Send[i].Slot = Slot;
+ ALSource->Params.Slot[i] = Slot;
ALSource->Params.Send[i].Gain = WetGain[i] * ListenerGain;
}
@@ -458,7 +458,7 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
RoomAirAbsorption[i] = AIRABSORBGAINHF;
}
- ALSource->Params.Send[i].Slot = Slot;
+ ALSource->Params.Slot[i] = Slot;
}
/* Transform source to listener space (convert to head relative) */
diff --git a/Alc/mixer.c b/Alc/mixer.c
index c169f5c8..e2e80054 100644
--- a/Alc/mixer.c
+++ b/Alc/mixer.c
@@ -336,7 +336,7 @@ static void MixSend_##sampler(ALsource *Source, ALuint sendidx, \
\
increment = Source->Params.Step; \
\
- Slot = Source->Params.Send[sendidx].Slot; \
+ Slot = Source->Params.Slot[sendidx]; \
WetBuffer = Slot->WetBuffer; \
WetClickRemoval = Slot->ClickRemoval; \
WetPendingClicks = Slot->PendingClicks; \
@@ -719,7 +719,7 @@ ALvoid MixSource(ALsource *Source, ALCdevice *Device, ALuint SamplesToDo)
OutPos, SamplesToDo, BufferSize);
for(i = 0;i < Device->NumAuxSends;i++)
{
- if(!Source->Params.Send[i].Slot)
+ if(!Source->Params.Slot[i])
continue;
Source->Params.WetMix(Source, i, SrcData, DataPosFrac,
OutPos, SamplesToDo, BufferSize);
diff --git a/OpenAL32/Include/alSource.h b/OpenAL32/Include/alSource.h
index badf4e18..53286a03 100644
--- a/OpenAL32/Include/alSource.h
+++ b/OpenAL32/Include/alSource.h
@@ -28,6 +28,14 @@ typedef struct ALbufferlistitem
struct ALbufferlistitem *prev;
} ALbufferlistitem;
+typedef struct HrtfState {
+ ALboolean Moving;
+ ALuint Counter;
+ ALfloat History[MAXCHANNELS][SRC_HISTORY_LENGTH];
+ ALfloat Values[MAXCHANNELS][HRIR_LENGTH][2];
+ ALuint Offset;
+} HrtfState;
+
typedef struct HrtfParams {
ALfloat Gain;
ALfloat Dir[3];
@@ -37,13 +45,27 @@ typedef struct HrtfParams {
ALint DelayStep[2];
} HrtfParams;
-typedef struct HrtfState {
- ALboolean Moving;
- ALuint Counter;
- ALfloat History[MAXCHANNELS][SRC_HISTORY_LENGTH];
- ALfloat Values[MAXCHANNELS][HRIR_LENGTH][2];
- ALuint Offset;
-} HrtfState;
+typedef struct DirectParams {
+ /* A mixing matrix. First subscript is the channel number of the input data
+ * (regardless of channel configuration) and the second is the channel
+ * target (eg. FRONT_LEFT). */
+ ALfloat Gains[MAXCHANNELS][MAXCHANNELS];
+
+ /* A low-pass filter, using 2 chained one-pole filters. */
+ FILTER iirFilter;
+ ALfloat history[MAXCHANNELS*2];
+} DirectParams;
+
+typedef struct SendParams {
+ /* Gain control, which applies to all input channels to a single (mono)
+ * output buffer. */
+ ALfloat Gain;
+
+ /* A low-pass filter, using a one-pole filter. */
+ FILTER iirFilter;
+ ALfloat history[MAXCHANNELS];
+} SendParams;
+
typedef struct ALsource
{
@@ -130,22 +152,10 @@ typedef struct ALsource
HrtfParams Hrtf;
- struct {
- /* A mixing matrix. First subscript is the channel number of the
- * input data (regardless of channel configuration) and the second
- * is the channel target (eg. FRONT_LEFT). */
- ALfloat Gains[MAXCHANNELS][MAXCHANNELS];
-
- FILTER iirFilter;
- ALfloat history[MAXCHANNELS*2];
- } Direct;
-
- struct {
- struct ALeffectslot *Slot;
- ALfloat Gain;
- FILTER iirFilter;
- ALfloat history[MAXCHANNELS];
- } Send[MAX_SENDS];
+ DirectParams Direct;
+
+ struct ALeffectslot *Slot[MAX_SENDS];
+ SendParams Send[MAX_SENDS];
} Params;
/** Source needs to update its mixing parameters. */
volatile ALenum NeedsUpdate;