| Index: Source/core/platform/audio/HRTFPanner.cpp
|
| diff --git a/Source/core/platform/audio/HRTFPanner.cpp b/Source/core/platform/audio/HRTFPanner.cpp
|
| index 44c859842a5d1b8e21aeeaa5c0711acc641f2ca0..fbe61210c68eb703185602947151ef8437d9b45f 100644
|
| --- a/Source/core/platform/audio/HRTFPanner.cpp
|
| +++ b/Source/core/platform/audio/HRTFPanner.cpp
|
| @@ -47,8 +47,9 @@ const double MaxDelayTimeSeconds = 0.002;
|
| const int UninitializedAzimuth = -1;
|
| const unsigned RenderingQuantum = 128;
|
|
|
| -HRTFPanner::HRTFPanner(float sampleRate)
|
| +HRTFPanner::HRTFPanner(float sampleRate, HRTFDatabase* database)
|
| : Panner(PanningModelHRTF)
|
| + , m_database(database)
|
| , m_sampleRate(sampleRate)
|
| , m_crossfadeSelection(CrossfadeSelection1)
|
| , m_azimuthIndex1(UninitializedAzimuth)
|
| @@ -68,6 +69,7 @@ HRTFPanner::HRTFPanner(float sampleRate)
|
| , m_tempL2(RenderingQuantum)
|
| , m_tempR2(RenderingQuantum)
|
| {
|
| + ASSERT(database);
|
| }
|
|
|
| HRTFPanner::~HRTFPanner()
|
| @@ -100,10 +102,7 @@ int HRTFPanner::calculateDesiredAzimuthIndexAndBlend(double azimuth, double& azi
|
| if (azimuth < 0)
|
| azimuth += 360.0;
|
|
|
| - HRTFDatabase* database = HRTFDatabaseLoader::defaultHRTFDatabase();
|
| - ASSERT(database);
|
| -
|
| - int numberOfAzimuths = database->numberOfAzimuths();
|
| + int numberOfAzimuths = m_database->numberOfAzimuths();
|
| const double angleBetweenAzimuths = 360.0 / numberOfAzimuths;
|
|
|
| // Calculate the azimuth index and the blend (0 -> 1) for interpolation.
|
| @@ -134,14 +133,6 @@ void HRTFPanner::pan(double desiredAzimuth, double elevation, const AudioBus* in
|
| return;
|
| }
|
|
|
| - // This code only runs as long as the context is alive and after database has been loaded.
|
| - HRTFDatabase* database = HRTFDatabaseLoader::defaultHRTFDatabase();
|
| - ASSERT(database);
|
| - if (!database) {
|
| - outputBus->zero();
|
| - return;
|
| - }
|
| -
|
| // IRCAM HRTF azimuths values from the loaded database is reversed from the panner's notion of azimuth.
|
| double azimuth = -desiredAzimuth;
|
|
|
| @@ -216,8 +207,8 @@ void HRTFPanner::pan(double desiredAzimuth, double elevation, const AudioBus* in
|
| double frameDelayR1;
|
| double frameDelayL2;
|
| double frameDelayR2;
|
| - database->getKernelsFromAzimuthElevation(azimuthBlend, m_azimuthIndex1, m_elevation1, kernelL1, kernelR1, frameDelayL1, frameDelayR1);
|
| - database->getKernelsFromAzimuthElevation(azimuthBlend, m_azimuthIndex2, m_elevation2, kernelL2, kernelR2, frameDelayL2, frameDelayR2);
|
| + m_database->getKernelsFromAzimuthElevation(azimuthBlend, m_azimuthIndex1, m_elevation1, kernelL1, kernelR1, frameDelayL1, frameDelayR1);
|
| + m_database->getKernelsFromAzimuthElevation(azimuthBlend, m_azimuthIndex2, m_elevation2, kernelL2, kernelR2, frameDelayL2, frameDelayR2);
|
|
|
| bool areKernelsGood = kernelL1 && kernelR1 && kernelL2 && kernelR2;
|
| ASSERT(areKernelsGood);
|
|
|