#[non_exhaustive]pub enum SampleFormat {
Show 15 variants
I8,
I16,
I24,
I32,
I64,
U8,
U16,
U24,
U32,
U64,
F32,
F64,
DsdU8,
DsdU16,
DsdU32,
}Expand description
Format that each sample has. Usually, this corresponds to the sampling
depth of the audio source. For example, 16 bit quantized samples can be
encoded in i16 or u16. Note that the quantized sampling depth is not
directly visible for formats where is_float is true.
Also note that the backend must support the encoding of the quantized
samples in the given format, as there is no generic transformation from one
format into the other done inside the frontend-library code. You can query
the supported formats by using supported_input_configs.
A good rule of thumb is to use SampleFormat::I16 as this covers typical
music (WAV, MP3) as well as typical audio input devices on most platforms,
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
I8
i8 with a valid range of i8::MIN..=i8::MAX with 0 being the origin.
I16
i16 with a valid range of i16::MIN..=i16::MAX with 0 being the origin.
I24
I24 with a valid range of -(1 << 23)..=((1 << 23) - 1) with 0 being the origin.
This format uses 4 bytes of storage but only 24 bits are significant.
I32
i32 with a valid range of i32::MIN..=i32::MAX with 0 being the origin.
I64
i64 with a valid range of i64::MIN..=i64::MAX with 0 being the origin.
U8
u8 with a valid range of u8::MIN..=u8::MAX with 1 << 7 == 128 being the origin.
U16
u16 with a valid range of u16::MIN..=u16::MAX with 1 << 15 == 32768 being the origin.
U24
U24 with a valid range of 0..=((1 << 24) - 1) with 1 << 23 == 8388608 being the origin.
This format uses 4 bytes of storage but only 24 bits are significant.
U32
u32 with a valid range of u32::MIN..=u32::MAX with 1 << 31 being the origin.
U64
U48 with a valid range of ‘0..(1 << 48)’ with 1 << 47 being the origin
u64 with a valid range of u64::MIN..=u64::MAX with 1 << 63 being the origin.
F32
f32 with a valid range of -1.0..=1.0 with 0.0 being the origin.
F64
f64 with a valid range of -1.0..=1.0 with 0.0 being the origin.
DsdU8
DSD 1-bit stream in u8 container (8 bits = 8 DSD samples) with 0x69 being the silence byte pattern.
DsdU16
DSD 1-bit stream in u16 container (16 bits = 16 DSD samples) with 0x69 being the silence byte pattern.
DsdU32
DSD 1-bit stream in u32 container (32 bits = 32 DSD samples) with 0x69 being the silence byte pattern.
Implementations§
Source§impl SampleFormat
impl SampleFormat
Sourcepub fn sample_size(&self) -> usize
pub fn sample_size(&self) -> usize
Returns the size in bytes of a sample of this format. This corresponds to the internal size of the rust primitives that are used to represent this sample format (e.g., i24 has size of i32).
Sourcepub fn bits_per_sample(&self) -> u32
pub fn bits_per_sample(&self) -> u32
Returns the number of bits of a sample of this format. Note that this is not necessarily the same as the size of the primitive used to represent this sample format (e.g., I24 has size of i32 but 24 bits per sample).
pub fn is_int(&self) -> bool
pub fn is_uint(&self) -> bool
pub fn is_float(&self) -> bool
pub fn is_dsd(&self) -> bool
Trait Implementations§
Source§impl Clone for SampleFormat
impl Clone for SampleFormat
Source§fn clone(&self) -> SampleFormat
fn clone(&self) -> SampleFormat
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more