summaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
Diffstat (limited to 'Alc')
-rw-r--r--Alc/hrtf.c2
-rw-r--r--Alc/mixer.c55
2 files changed, 27 insertions, 30 deletions
diff --git a/Alc/hrtf.c b/Alc/hrtf.c
index b33a7a9a..87f98b9a 100644
--- a/Alc/hrtf.c
+++ b/Alc/hrtf.c
@@ -82,7 +82,7 @@ void InitHrtf(void)
}
if(f != NULL)
{
- const ALubyte maxDelay = SRC_HISTORY_LENGTH - HRIR_LENGTH;
+ const ALubyte maxDelay = SRC_HISTORY_LENGTH;
ALboolean failed = AL_FALSE;
struct HRTF newdata;
size_t i, j;
diff --git a/Alc/mixer.c b/Alc/mixer.c
index 9a746ff9..86337a2e 100644
--- a/Alc/mixer.c
+++ b/Alc/mixer.c
@@ -98,10 +98,10 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
\
for(i = 0;i < NumChannels;i++) \
{ \
- static const ALuint MaxDelay = SRC_HISTORY_LENGTH - HRIR_LENGTH; \
ALfloat (*RESTRICT Coeffs)[2] = Source->Params.HrtfCoeffs[i]; \
const ALuint *RESTRICT Delay = Source->Params.HrtfDelay[i]; \
- ALfloat (*RESTRICT History)[2] = Source->HrtfHistory[i]; \
+ ALfloat *RESTRICT History = Source->HrtfHistory[i]; \
+ ALfloat (*RESTRICT Values)[2] = Source->HrtfValues[i]; \
ALuint Offset = Source->HrtfOffset + OutPos; \
\
pos = 0; \
@@ -112,18 +112,17 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
value = sampler(data + pos*NumChannels + i, NumChannels, frac); \
value = lpFilter2PC(DryFilter, i, value); \
\
- History[Offset&SRC_HISTORY_MASK][0] = value; \
- History[Offset&SRC_HISTORY_MASK][1] = value; \
+ History[Offset&SRC_HISTORY_MASK] = value; \
\
- History[(Offset-MaxDelay)&SRC_HISTORY_MASK][0] = \
- History[(Offset-Delay[0])&SRC_HISTORY_MASK][0];\
- History[(Offset-MaxDelay)&SRC_HISTORY_MASK][1] = \
- History[(Offset-Delay[1])&SRC_HISTORY_MASK][1];\
+ Values[Offset&HRIR_MASK][0] = \
+ History[(Offset-Delay[0])&SRC_HISTORY_MASK];\
+ Values[Offset&HRIR_MASK][1] = \
+ History[(Offset-Delay[1])&SRC_HISTORY_MASK];\
for(c = 0;c < HRIR_LENGTH;c++) \
{ \
- const ALuint off = (Offset-MaxDelay-c)&SRC_HISTORY_MASK; \
- ClickRemoval[FRONT_LEFT] -= History[off][0] * Coeffs[c][0]; \
- ClickRemoval[FRONT_RIGHT] -= History[off][1] * Coeffs[c][1]; \
+ const ALuint off = (Offset-c)&HRIR_MASK; \
+ ClickRemoval[FRONT_LEFT] -= Values[off][0] * Coeffs[c][0]; \
+ ClickRemoval[FRONT_RIGHT] -= Values[off][1] * Coeffs[c][1]; \
} \
} \
for(BufferIdx = 0;BufferIdx < BufferSize;BufferIdx++) \
@@ -131,18 +130,17 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
value = sampler(data + pos*NumChannels + i, NumChannels, frac); \
value = lpFilter2P(DryFilter, i, value); \
\
- History[Offset&SRC_HISTORY_MASK][0] = value; \
- History[Offset&SRC_HISTORY_MASK][1] = value; \
+ History[Offset&SRC_HISTORY_MASK] = value; \
\
- History[(Offset-MaxDelay)&SRC_HISTORY_MASK][0] = \
- History[(Offset-Delay[0])&SRC_HISTORY_MASK][0];\
- History[(Offset-MaxDelay)&SRC_HISTORY_MASK][1] = \
- History[(Offset-Delay[1])&SRC_HISTORY_MASK][1];\
+ Values[Offset&HRIR_MASK][0] = \
+ History[(Offset-Delay[0])&SRC_HISTORY_MASK];\
+ Values[Offset&HRIR_MASK][1] = \
+ History[(Offset-Delay[1])&SRC_HISTORY_MASK];\
for(c = 0;c < HRIR_LENGTH;c++) \
{ \
- const ALuint off = (Offset-MaxDelay-c)&SRC_HISTORY_MASK; \
- DryBuffer[OutPos][FRONT_LEFT] += History[off][0] * Coeffs[c][0];\
- DryBuffer[OutPos][FRONT_RIGHT] += History[off][1] * Coeffs[c][1];\
+ const ALuint off = (Offset-c)&HRIR_MASK; \
+ DryBuffer[OutPos][FRONT_LEFT] += Values[off][0] * Coeffs[c][0];\
+ DryBuffer[OutPos][FRONT_RIGHT] += Values[off][1] * Coeffs[c][1];\
} \
Offset++; \
\
@@ -156,18 +154,17 @@ static void Mix_Hrtf_##T##_##sampler(ALsource *Source, ALCdevice *Device, \
value = sampler(data + pos*NumChannels + i, NumChannels, frac); \
value = lpFilter2PC(DryFilter, i, value); \
\
- History[Offset&SRC_HISTORY_MASK][0] = value; \
- History[Offset&SRC_HISTORY_MASK][1] = value; \
+ History[Offset&SRC_HISTORY_MASK] = value; \
\
- History[(Offset-MaxDelay)&SRC_HISTORY_MASK][0] = \
- History[(Offset-Delay[0])&SRC_HISTORY_MASK][0];\
- History[(Offset-MaxDelay)&SRC_HISTORY_MASK][1] = \
- History[(Offset-Delay[1])&SRC_HISTORY_MASK][1];\
+ Values[Offset&HRIR_MASK][0] = \
+ History[(Offset-Delay[0])&SRC_HISTORY_MASK];\
+ Values[Offset&HRIR_MASK][1] = \
+ History[(Offset-Delay[1])&SRC_HISTORY_MASK];\
for(c = 0;c < HRIR_LENGTH;c++) \
{ \
- const ALuint off = (Offset-MaxDelay-c)&SRC_HISTORY_MASK; \
- PendingClicks[FRONT_LEFT] += History[off][0] * Coeffs[c][0]; \
- PendingClicks[FRONT_RIGHT] += History[off][1] * Coeffs[c][1]; \
+ const ALuint off = (Offset-c)&HRIR_MASK; \
+ PendingClicks[FRONT_LEFT] += Values[off][0] * Coeffs[c][0]; \
+ PendingClicks[FRONT_RIGHT] += Values[off][1] * Coeffs[c][1]; \
} \
} \
OutPos -= BufferSize; \