62 num_bytes(0), num_guard_bits(0), num_bits(0), is_float(false), endian(
std::endian::native)
81 uint8_t num_guard_bits,
84 std::endian endian) noexcept :
85 num_bytes(num_bytes), num_guard_bits(num_guard_bits), num_bits(num_bits), is_float(is_float), endian(endian)
92 return {4, 8, 23,
true, std::endian::little};
95 [[nodiscard]]
static constexpr audio_sample_format float32_be() noexcept
97 return {4, 8, 23,
true, std::endian::big};
100 [[nodiscard]]
static constexpr audio_sample_format float32() noexcept
102 return {4, 8, 23,
true, std::endian::native};
105 [[nodiscard]]
static constexpr audio_sample_format int16_le() noexcept
107 return {2, 0, 15,
false, std::endian::little};
110 [[nodiscard]]
static constexpr audio_sample_format int16_be() noexcept
112 return {2, 0, 15,
false, std::endian::big};
115 [[nodiscard]]
static constexpr audio_sample_format int16() noexcept
117 return {2, 0, 15,
false, std::endian::native};
120 [[nodiscard]]
static constexpr audio_sample_format int20_le() noexcept
122 return {3, 0, 19,
false, std::endian::little};
125 [[nodiscard]]
static constexpr audio_sample_format int20_be() noexcept
127 return {3, 0, 19,
false, std::endian::big};
130 [[nodiscard]]
static constexpr audio_sample_format int20() noexcept
132 return {3, 0, 19,
false, std::endian::native};
135 [[nodiscard]]
static constexpr audio_sample_format int24_le() noexcept
137 return {3, 0, 23,
false, std::endian::little};
140 [[nodiscard]]
static constexpr audio_sample_format int24_be() noexcept
142 return {3, 0, 23,
false, std::endian::big};
145 [[nodiscard]]
static constexpr audio_sample_format int24() noexcept
147 return {3, 0, 23,
false, std::endian::native};
150 [[nodiscard]]
static constexpr audio_sample_format int32_le() noexcept
152 return {4, 0, 31,
false, std::endian::little};
155 [[nodiscard]]
static constexpr audio_sample_format int32_be() noexcept
157 return {4, 0, 31,
false, std::endian::big};
160 [[nodiscard]]
static constexpr audio_sample_format int32() noexcept
162 return {4, 0, 31,
false, std::endian::native};
165 [[nodiscard]]
static constexpr audio_sample_format fix8_23_le() noexcept
167 return {4, 8, 23,
false, std::endian::little};
170 [[nodiscard]]
static constexpr audio_sample_format fix8_23_be() noexcept
172 return {4, 8, 23,
false, std::endian::big};
175 [[nodiscard]]
static constexpr audio_sample_format fix8_23() noexcept
177 return {4, 8, 23,
false, std::endian::native};
180 constexpr explicit operator bool() const noexcept
182 return num_bytes != 0;
191 [[nodiscard]]
float unpack_multiplier() const noexcept;
196 [[nodiscard]]
std::
size_t num_samples_per_chunk(
std::
size_t stride) const noexcept;
200 [[nodiscard]]
std::
size_t chunk_stride(
std::
size_t stride) const noexcept;
204 [[nodiscard]]
std::
size_t num_chunks_per_quad(
std::
size_t stride) const noexcept;
208 [[nodiscard]]
std::
size_t num_fast_quads(
std::
size_t stride,
std::
size_t num_samples) const noexcept;
212 [[nodiscard]]
i8x16 load_shuffle_indices(
std::
size_t stride) const noexcept;
216 [[nodiscard]]
i8x16 store_shuffle_indices(
std::
size_t stride) const noexcept;
220 [[nodiscard]]
i8x16 concat_shuffle_indices(
std::
size_t stride) const noexcept;
224 [[nodiscard]] constexpr
bool holds_invariant() const noexcept
226 return (num_bytes >= 1 && num_bytes <= 4) && (num_bits + num_guard_bits <= num_bytes * 8) &&
227 (endian == std::endian::little || endian == std::endian::big);
#define hi_axiom(expression)
Specify an axiom; an expression that is true.
Definition assert.hpp:133