aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2011-06-25 21:39:36 -0700
committerChris Robinson <[email protected]>2011-06-25 21:39:36 -0700
commit212b187447c6b095de3629448d3a2270c09cf119 (patch)
tree61ea80069c4588c7ea054899042d714890aeb14c /Alc
parentac9a6e891fb26c8c41774be6f90c7a96f85d1942 (diff)
Add a function to check if a device is compatible with the Hrtf filter
Diffstat (limited to 'Alc')
-rw-r--r--Alc/ALc.c3
-rw-r--r--Alc/hrtf.c8
2 files changed, 9 insertions, 2 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index b84aa6e0..f95a2ac7 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -1335,8 +1335,7 @@ static ALCboolean UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
if(!device->IsLoopbackDevice && GetConfigValueBool(NULL, "hrtf", AL_FALSE))
device->Flags |= DEVICE_USE_HRTF;
- if((device->FmtChans != DevFmtStereo || device->Frequency != 44100) &&
- (device->Flags&DEVICE_USE_HRTF))
+ if((device->Flags&DEVICE_USE_HRTF) && !IsHrtfCompatible(device))
{
AL_PRINT("HRTF disabled (format is %uhz %s)\n", device->Frequency, DevFmtChannelsString(device->FmtChans));
device->Flags &= ~DEVICE_USE_HRTF;
diff --git a/Alc/hrtf.c b/Alc/hrtf.c
index 43cfb80b..801e26b9 100644
--- a/Alc/hrtf.c
+++ b/Alc/hrtf.c
@@ -27,6 +27,7 @@
#define HRIR_COUNT 828
+static const ALuint sampleRate = 44100;
static const ALubyte evCount = 19;
static const ALushort evOffset[19] = { 0, 1, 13, 37, 73, 118, 174, 234, 306, 378, 450, 522, 594, 654, 710, 755, 791, 815, 827 };
static const ALubyte azCount[19] = { 1, 12, 24, 36, 45, 56, 60, 72, 72, 72, 72, 72, 60, 56, 45, 36, 24, 12, 1 };
@@ -68,6 +69,13 @@ void GetHrtfCoeffs(ALfloat elevation, ALfloat angle, const ALshort **left, const
*right = Hrtf.coeffs[ridx];
}
+ALCboolean IsHrtfCompatible(ALCdevice *device)
+{
+ if(device->FmtChans == DevFmtStereo && device->Frequency == sampleRate)
+ return ALC_TRUE;
+ return ALC_FALSE;
+}
+
void InitHrtf(void)
{
const char *str;