MCPcopy Create free account
hub / github.com/LabSound/LabSound / MakeInterpolatedKernel

Function MakeInterpolatedKernel

src/internal/src/HRTFPanner.cpp:519–540  ·  view source on GitHub ↗

Interpolates two kernels with x: 0 -> 1 and returns the result.

Source from the content-addressed store, hash-verified

517
518// Interpolates two kernels with x: 0 -> 1 and returns the result.
519std::unique_ptr<HRTFKernel> MakeInterpolatedKernel(HRTFKernel * kernel1, HRTFKernel * kernel2, float x)
520{
521 ASSERT(kernel1 && kernel2);
522 if (!kernel1 || !kernel2)
523 return 0;
524
525 ASSERT(x >= 0.0 && x < 1.0);
526 x = std::min(1.0f, std::max(0.0f, x));
527
528 float sampleRate1 = kernel1->sampleRate();
529 float sampleRate2 = kernel2->sampleRate();
530
531 ASSERT(sampleRate1 == sampleRate2);
532 if (sampleRate1 != sampleRate2)
533 return 0;
534
535 float frameDelay = (1 - x) * kernel1->frameDelay() + x * kernel2->frameDelay();
536 //kernel1->fftFrame()->print();
537
538 std::unique_ptr<FFTFrame> interpolatedFrame = FFTFrame::createInterpolatedFrame(*kernel1->fftFrame(), *kernel2->fftFrame(), x);
539 return std::unique_ptr<HRTFKernel>(new HRTFKernel(std::move(interpolatedFrame), frameDelay, sampleRate1));
540}
541
542
543// @fixme - will change for new HRTF databases

Calls 3

frameDelayMethod · 0.80
fftFrameMethod · 0.80
sampleRateMethod · 0.45

Tested by

no test coverage detected