32 template <
typename InputSource,
typename IntegralType,
typename ContextType>
42 static_assert(std::is_floating_point<InputSampleType>::value,
"Input sample type must be floating point.");
43 static_assert(std::is_integral<IntegralType>::value,
"Output sample type must be integral.");
44 static_assert(std::is_signed<IntegralType>::value,
"Output sample type must be signed.");
47 static constexpr
size_t SampleRate = InputSource::SampleRate;
69 assert(inputSample <= 1.0);
70 assert(inputSample >= -1.0);
72 InputSampleType ditheredSample = ContextType::Options::Ditherer::DitherFloatValue(inputSample * static_cast<InputSampleType>(BisectRange<SampleType>()));
75 ditheredSample = std::min(ditheredSample, static_cast<InputSampleType>(std::numeric_limits<SampleType>::max()));
76 return static_cast<SampleType>(ditheredSample);
Definition: converttointegraltypeoperator.h:33
IntegralType SampleType
Definition: converttointegraltypeoperator.h:46
InputSource & GetInputSource()
Definition: converttointegraltypeoperator.h:50
typename InputSource::SampleType InputSampleType
Definition: converttointegraltypeoperator.h:41
InputSource mInputSource
Definition: converttointegraltypeoperator.h:80
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
#define assert(expr)
Definition: assertion.h:47
SampleType operator[](size_t index) const
Definition: converttointegraltypeoperator.h:62
Definition: dsputilities.h:60
SampleRange GetSampleRange() const
Definition: converttointegraltypeoperator.h:56
static constexpr size_t SampleRate
Definition: converttointegraltypeoperator.h:47
ConvertToIntegralTypeOperator(ContextType &context)
Definition: converttointegraltypeoperator.h:36