#ifndef TWOSF2WAV_INTERPOLATOR_H
#define TWOSF2WAV_INTERPOLATOR_H
#include <vector>
#include <cstdint>
class IInterpolator
{
public:
virtual ~IInterpolator() {}
virtual int32_t interpolate(const std::vector<int32_t>& data, double time) const = 0;
static IInterpolator* allInterpolators[4];
};
class LinearInterpolator : public IInterpolator
{
public:
virtual int32_t interpolate(const std::vector<int32_t>& data, double time) const;
};
class CosineInterpolator : public IInterpolator
{
public:
CosineInterpolator();
virtual int32_t interpolate(const std::vector<int32_t>& data, double time) const;
private:
double lut[8192];
};
class SharpIInterpolator : public IInterpolator
{
public:
virtual int32_t interpolate(const std::vector<int32_t>& data, double time) const;
};
#endif