const struct Hrtf *GetHrtf(ALCdevice *device) { if(device->FmtChans == DevFmtStereo) { struct Hrtf *Hrtf = LoadedHrtfs; while(Hrtf != NULL) { if(device->Frequency == Hrtf->sampleRate) return Hrtf; Hrtf = Hrtf->next; } Hrtf = LoadHrtf(device->Frequency); if(Hrtf != NULL) return Hrtf; if(device->Frequency == DefaultHrtf.sampleRate) return &DefaultHrtf; } ERR("Incompatible format: %s %uhz\n", DevFmtChannelsString(device->FmtChans), device->Frequency); return NULL; }
void FindHrtfFormat(const ALCdevice *device, enum DevFmtChannels *chans, ALCuint *srate) { const struct Hrtf *hrtf = &DefaultHrtf; if(device->Frequency != DefaultHrtf.sampleRate) { hrtf = LoadedHrtfs; while(hrtf != NULL) { if(device->Frequency == hrtf->sampleRate) break; hrtf = hrtf->next; } if(hrtf == NULL) hrtf = LoadHrtf(device->Frequency); if(hrtf == NULL) hrtf = &DefaultHrtf; } *chans = DevFmtStereo; *srate = hrtf->sampleRate; }