virtual bool CreateSpatializationEffect(uint32 VoiceId) override { // If an effect for this voice has already been created, then leave if (HRTFEffects.Contains(VoiceId)) { return false; } FXAudio2HRTFEffect* NewHRTFEffect = new FXAudio2HRTFEffect(VoiceId, AudioDevice); NewHRTFEffect->Initialize(nullptr, 0); HRTFEffects.Add(VoiceId, NewHRTFEffect); return true; }
FHrtfSpatializationAlgorithm(class FAudioDevice * AudioDevice) : bOvrContextInitialized(false) , AudioDevice(AudioDevice) , OvrAudioContextFast(nullptr) #if OCULUS_HQ_ENABLED , OvrAudioContextHighQuality(0) #endif { // XAudio2's buffer lengths are always 1 percent of sample rate uint32 BufferLength = AudioDevice->SampleRate / 100; InitializeSpatializationEffect(BufferLength); check(HRTFEffects.Num() == 0); for (int32 EffectIndex = 0; EffectIndex < (int32)AudioDevice->MaxChannels; ++EffectIndex) { FXAudio2HRTFEffect* NewHRTFEffect = new FXAudio2HRTFEffect(EffectIndex, AudioDevice); NewHRTFEffect->Initialize(nullptr, 0); HRTFEffects.Add(NewHRTFEffect); // IsStopped.Add(true); } }