30#include "siddefs-fp.h"
43 static inline int clipper(
int x)
46 constexpr int threshold = 28000;
47 if (likely(x < threshold))
50 constexpr double max_val =
static_cast<double>(m);
51 constexpr double t = threshold / max_val;
52 constexpr double a = 1. - t;
53 constexpr double b = 1. / a;
55 double value =
static_cast<double>(x - threshold) / max_val;
56 value = t + a * std::tanh(b * value);
57 return static_cast<int>(value * max_val);
63 static inline int softClipImpl(
int x)
65 return x < 0 ? -clipper<32768>(-x) : clipper<32767>(x);
72 static inline short softClip(
int x) {
return static_cast<short>(softClipImpl(x)); }
74 virtual int output()
const = 0;
87 virtual bool input(
int sample) = 0;
96 const int out = (scaleFactor * output()) / 2;
100 virtual void reset() = 0;
Definition Resampler.h:40
virtual bool input(int sample)=0
short getOutput(int scaleFactor) const
Definition Resampler.h:94