Don't pass the device to HRTF methods
This commit is contained in:
@@ -1790,9 +1790,9 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
|
||||
}
|
||||
if((device->Flags&DEVICE_HRTF_REQUEST))
|
||||
{
|
||||
enum DevFmtChannels chans;
|
||||
ALCuint freq;
|
||||
if(FindHrtfFormat(device, &chans, &freq))
|
||||
enum DevFmtChannels chans = device->FmtChans;
|
||||
ALCuint freq = device->Frequency;
|
||||
if(FindHrtfFormat(&chans, &freq))
|
||||
{
|
||||
if(device->Type != Loopback)
|
||||
{
|
||||
@@ -1843,7 +1843,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
|
||||
device->Hrtf = NULL;
|
||||
if((device->Flags&DEVICE_HRTF_REQUEST))
|
||||
{
|
||||
device->Hrtf = GetHrtf(device);
|
||||
device->Hrtf = GetHrtf(device->FmtChans, device->Frequency);
|
||||
if(!device->Hrtf)
|
||||
device->Flags &= ~DEVICE_HRTF_REQUEST;
|
||||
}
|
||||
|
||||
+8
-9
@@ -745,40 +745,39 @@ static struct Hrtf *LoadHrtf(ALuint deviceRate)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const struct Hrtf *GetHrtf(ALCdevice *device)
|
||||
const struct Hrtf *GetHrtf(enum DevFmtChannels chans, ALCuint srate)
|
||||
{
|
||||
if(device->FmtChans == DevFmtStereo)
|
||||
if(chans == DevFmtStereo)
|
||||
{
|
||||
struct Hrtf *Hrtf = LoadedHrtfs;
|
||||
while(Hrtf != NULL)
|
||||
{
|
||||
if(device->Frequency == Hrtf->sampleRate)
|
||||
if(srate == Hrtf->sampleRate)
|
||||
return Hrtf;
|
||||
Hrtf = Hrtf->next;
|
||||
}
|
||||
|
||||
Hrtf = LoadHrtf(device->Frequency);
|
||||
Hrtf = LoadHrtf(srate);
|
||||
if(Hrtf != NULL)
|
||||
return Hrtf;
|
||||
}
|
||||
ERR("Incompatible format: %s %uhz\n",
|
||||
DevFmtChannelsString(device->FmtChans), device->Frequency);
|
||||
ERR("Incompatible format: %s %uhz\n", DevFmtChannelsString(chans), srate);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ALCboolean FindHrtfFormat(const ALCdevice *device, enum DevFmtChannels *chans, ALCuint *srate)
|
||||
ALCboolean FindHrtfFormat(enum DevFmtChannels *chans, ALCuint *srate)
|
||||
{
|
||||
const struct Hrtf *hrtf = LoadedHrtfs;
|
||||
while(hrtf != NULL)
|
||||
{
|
||||
if(device->Frequency == hrtf->sampleRate)
|
||||
if(*srate == hrtf->sampleRate)
|
||||
break;
|
||||
hrtf = hrtf->next;
|
||||
}
|
||||
|
||||
if(hrtf == NULL)
|
||||
{
|
||||
hrtf = LoadHrtf(device->Frequency);
|
||||
hrtf = LoadHrtf(*srate);
|
||||
if(hrtf == NULL) return ALC_FALSE;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -15,8 +15,8 @@ struct Hrtf;
|
||||
#define HRTFDELAY_FRACONE (1<<HRTFDELAY_BITS)
|
||||
#define HRTFDELAY_MASK (HRTFDELAY_FRACONE-1)
|
||||
|
||||
const struct Hrtf *GetHrtf(ALCdevice *device);
|
||||
ALCboolean FindHrtfFormat(const ALCdevice *device, enum DevFmtChannels *chans, ALCuint *srate);
|
||||
const struct Hrtf *GetHrtf(enum DevFmtChannels chans, ALCuint srate);
|
||||
ALCboolean FindHrtfFormat(enum DevFmtChannels *chans, ALCuint *srate);
|
||||
|
||||
void FreeHrtfs(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user