Modified code style on the resampler to make it easier to read.

portability/boost
Rachel Fae Fox (foxiepaws) 2019-07-18 06:19:05 -04:00
parent 2e1f3e04cb
commit fed1365b14
1 changed files with 8 additions and 10 deletions

View File

@ -4,11 +4,15 @@ using namespace Xybrid::NodeLib;
#include <iostream>
#include <array>
#ifdef WITH_BOOST
#include <boost/math/special_functions/bessel.hpp>
#define cyl_bessel_i boost::math::cyl_bessel_i
#else
#include <cmath>
#define cyl_bessel_i std::cyl_bessel_i
#endif
namespace {
const constexpr double PI = 3.141592653589793238462643383279502884197169399375105820974;
@ -26,22 +30,16 @@ namespace {
// generate
const std::array<std::array<double, LUT_TAPS>, LUT_STEPS> Xybrid::NodeLib::resamplerLUT = [] {
#ifdef WITH_BOOST
double denom = boost::math::cyl_bessel_i(0, KAISER_BETA);
#else
double denom = std::cyl_bessel_i(0, KAISER_BETA);
#endif
double denom = cyl_bessel_i(0, KAISER_BETA);
std::array<std::array<double, LUT_TAPS>, LUT_STEPS> t;
t[0] = {0, 0, 0, 1, 0, 0, 0, 0}; // we already know the ideal integer step
for (size_t step = 1; step < LUT_STEPS; step++) {
double sv = static_cast<double>(step) / LUT_STEPS;
for (size_t tap = 0; tap < LUT_TAPS; tap++) {
double x = static_cast<double>(tap) - sv;
#ifdef WITH_BOOST
t[step][tap] = sinc(x-(LUT_TAPS/2-1)) * (boost::math::cyl_bessel_i(0, KAISER_BETA * std::sqrt(1 - std::pow(((2 * (x+1)) / (LUT_TAPS)) - 1, 2))) / denom);
#else
t[step][tap] = sinc(x-(LUT_TAPS/2-1)) * (std::cyl_bessel_i(0, KAISER_BETA * std::sqrt(1 - std::pow(((2 * (x+1)) / (LUT_TAPS)) - 1, 2))) / denom);
#endif
t[step][tap] = sinc(x-(LUT_TAPS/2-1)) * (cyl_bessel_i(0, KAISER_BETA * std::sqrt(1 - std::pow(((2 * (x+1)) / (LUT_TAPS)) - 1, 2))) / denom);
if (t[step][tap] != t[step][tap]) t[step][tap] = 0; // NaN guard
//std::cout << "tap " << tap << ": " << t[step][tap] << " ";
}