aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alSource.h50
-rw-r--r--OpenAL32/alSource.c34
2 files changed, 47 insertions, 37 deletions
diff --git a/OpenAL32/Include/alSource.h b/OpenAL32/Include/alSource.h
index c3ae3fe7..98803115 100644
--- a/OpenAL32/Include/alSource.h
+++ b/OpenAL32/Include/alSource.h
@@ -28,6 +28,23 @@ typedef struct ALbufferlistitem
struct ALbufferlistitem *prev;
} ALbufferlistitem;
+typedef struct HrtfParams {
+ ALfloat Gain;
+ ALfloat Dir[3];
+ ALfloat Coeffs[MAXCHANNELS][HRIR_LENGTH][2];
+ ALuint Delay[MAXCHANNELS][2];
+ ALfloat CoeffStep[HRIR_LENGTH][2];
+ 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 ALsource
{
/** Source properties. */
@@ -97,16 +114,12 @@ typedef struct ALsource
struct {
struct ALeffectslot *Slot;
- ALfloat WetGain;
- ALfloat WetGainHF;
+ ALfloat Gain;
+ ALfloat GainHF;
} Send[MAX_SENDS];
/** HRTF info. */
- ALboolean HrtfMoving;
- ALuint HrtfCounter;
- ALfloat HrtfHistory[MAXCHANNELS][SRC_HISTORY_LENGTH];
- ALfloat HrtfValues[MAXCHANNELS][HRIR_LENGTH][2];
- ALuint HrtfOffset;
+ HrtfState Hrtf;
/** Current target parameters used for mixing. */
struct {
@@ -114,24 +127,21 @@ typedef struct ALsource
ALint Step;
- ALfloat HrtfGain;
- ALfloat HrtfDir[3];
- ALfloat HrtfCoeffs[MAXCHANNELS][HRIR_LENGTH][2];
- ALuint HrtfDelay[MAXCHANNELS][2];
- ALfloat HrtfCoeffStep[HRIR_LENGTH][2];
- ALint HrtfDelayStep[2];
+ HrtfParams Hrtf;
- /* 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 DryGains[MAXCHANNELS][MAXCHANNELS];
+ 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];
+ FILTER iirFilter;
+ ALfloat history[MAXCHANNELS*2];
+ } Direct;
struct {
struct ALeffectslot *Slot;
- ALfloat WetGain;
+ ALfloat Gain;
FILTER iirFilter;
ALfloat history[MAXCHANNELS];
} Send[MAX_SENDS];
diff --git a/OpenAL32/alSource.c b/OpenAL32/alSource.c
index 5f52322f..7d0e51d6 100644
--- a/OpenAL32/alSource.c
+++ b/OpenAL32/alSource.c
@@ -686,13 +686,13 @@ AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, AL
if(!filter)
{
/* Disable filter */
- Source->Send[value2].WetGain = 1.0f;
- Source->Send[value2].WetGainHF = 1.0f;
+ Source->Send[value2].Gain = 1.0f;
+ Source->Send[value2].GainHF = 1.0f;
}
else
{
- Source->Send[value2].WetGain = filter->Gain;
- Source->Send[value2].WetGainHF = filter->GainHF;
+ Source->Send[value2].Gain = filter->Gain;
+ Source->Send[value2].GainHF = filter->GainHF;
}
Source->NeedsUpdate = AL_TRUE;
UnlockContext(Context);
@@ -1633,14 +1633,14 @@ static ALvoid InitSourceParams(ALsource *Source)
Source->DirectGainHF = 1.0f;
for(i = 0;i < MAX_SENDS;i++)
{
- Source->Send[i].WetGain = 1.0f;
- Source->Send[i].WetGainHF = 1.0f;
+ Source->Send[i].Gain = 1.0f;
+ Source->Send[i].GainHF = 1.0f;
}
Source->NeedsUpdate = AL_TRUE;
- Source->HrtfMoving = AL_FALSE;
- Source->HrtfCounter = 0;
+ Source->Hrtf.Moving = AL_FALSE;
+ Source->Hrtf.Counter = 0;
}
@@ -1670,11 +1670,11 @@ ALvoid SetSourceState(ALsource *Source, ALCcontext *Context, ALenum state)
for(j = 0;j < MAXCHANNELS;j++)
{
for(k = 0;k < SRC_HISTORY_LENGTH;k++)
- Source->HrtfHistory[j][k] = 0.0f;
+ Source->Hrtf.History[j][k] = 0.0f;
for(k = 0;k < HRIR_LENGTH;k++)
{
- Source->HrtfValues[j][k][0] = 0.0f;
- Source->HrtfValues[j][k][1] = 0.0f;
+ Source->Hrtf.Values[j][k][0] = 0.0f;
+ Source->Hrtf.Values[j][k][1] = 0.0f;
}
}
}
@@ -1714,8 +1714,8 @@ ALvoid SetSourceState(ALsource *Source, ALCcontext *Context, ALenum state)
if(Source->state == AL_PLAYING)
{
Source->state = AL_PAUSED;
- Source->HrtfMoving = AL_FALSE;
- Source->HrtfCounter = 0;
+ Source->Hrtf.Moving = AL_FALSE;
+ Source->Hrtf.Counter = 0;
}
}
else if(state == AL_STOPPED)
@@ -1724,8 +1724,8 @@ ALvoid SetSourceState(ALsource *Source, ALCcontext *Context, ALenum state)
{
Source->state = AL_STOPPED;
Source->BuffersPlayed = Source->BuffersInQueue;
- Source->HrtfMoving = AL_FALSE;
- Source->HrtfCounter = 0;
+ Source->Hrtf.Moving = AL_FALSE;
+ Source->Hrtf.Counter = 0;
}
Source->Offset = -1.0;
}
@@ -1737,8 +1737,8 @@ ALvoid SetSourceState(ALsource *Source, ALCcontext *Context, ALenum state)
Source->position = 0;
Source->position_fraction = 0;
Source->BuffersPlayed = 0;
- Source->HrtfMoving = AL_FALSE;
- Source->HrtfCounter = 0;
+ Source->Hrtf.Moving = AL_FALSE;
+ Source->Hrtf.Counter = 0;
}
Source->Offset = -1.0;
}