40 constexpr auto cScale =
static_cast<float>(1 << 24);
77 constexpr auto cScale =
static_cast<float>(1 << 16);
99 constexpr bool approx(
float a,
float b,
float tol)
noexcept
101 return (a > b ? a - b : b - a) <=
tol;
108 static_assert(
approx(
static_cast<float>(
Gain16Bit{ 0.50f }), 0.50f,
tol16),
"Gain16 mid-range round-trip failed");
109 static_assert(
approx(
static_cast<float>(
Gain24Bit{ 0.25f }), 0.25f,
tol24),
"Gain24 mid-range round-trip failed");
112 static_assert(
static_cast<float>(Gain16Bit{ 0.0f }) == 0.0f,
"Gain16 zero failed");
113 static_assert(
approx(
static_cast<float>(Gain24Bit{ 1.0f }), 1.0f,
tol24 * 2),
"Gain24 full-scale failed");
constexpr float tol24
Definition GainEncoding.h:105
constexpr bool approx(float a, float b, float tol) noexcept
Definition GainEncoding.h:99
constexpr float tol16
Definition GainEncoding.h:104
Definition AcousticMaterial.h:36
std::uint32_t uint32
Definition Core.h:311
std::uint16_t uint16
Definition Core.h:310
std::uint8_t uint8
Definition Core.h:309
JPL_INLINE simd min(const simd &a, const simd &b) noexcept
Element-wise min.
Definition SIMD.h:1813
Definition GainEncoding.h:67
JPL_INLINE constexpr Gain16Bit(float gainNormalized)
Definition GainEncoding.h:75
static constexpr uint32 cU16max
Definition GainEncoding.h:68
uint16 Bytes
Definition GainEncoding.h:71
constexpr Gain16Bit()=default
JPL_INLINE constexpr Gain16Bit & operator=(float gainNormalized) noexcept
Definition GainEncoding.h:83
static constexpr float cInv
Definition GainEncoding.h:69
Definition GainEncoding.h:30
constexpr Gain24Bit()=default
static constexpr uint32 cU24max
Definition GainEncoding.h:31
JPL_INLINE constexpr Gain24Bit & operator=(float gainNormalized) noexcept
Definition GainEncoding.h:49
JPL_INLINE constexpr Gain24Bit(float gainNormalized)
Definition GainEncoding.h:38
uint8 Bytes[3]
Definition GainEncoding.h:34
static constexpr float cInv
Definition GainEncoding.h:32