BitsPerSample

Enum BitsPerSample 

Source
pub enum BitsPerSample {
    Streaminfo(SignedBitCount<32>),
    Bps8,
    Bps12,
    Bps16,
    Bps20,
    Bps24,
    Bps32,
}
Expand description

The the possible bits-per-sample of a FLAC frame

Common bits-per-sample are stored as a 3-bit value, while uncommon bits-per-sample are stored in the STREAMINFO metadata block. Bits-per-sample defined in the STREAMINFO metadata block are only possible on a “non-subset” stream, which is not streamable.

BitsBits-per-Sample
000get from STREAMINFO
0018
01012
011invalid
10016
10120
11024
11132

§Example

use flac_codec::stream::BitsPerSample;
use bitstream_io::{BitReader, BitRead, BigEndian};

let data: &[u8] = &[
    0b0000_100_0,             // channels + bps + pad
];

let mut r = BitReader::endian(data, BigEndian);
r.skip(4).unwrap();  // skip channel assignment
assert_eq!(
    r.parse::<BitsPerSample>().unwrap(),
    BitsPerSample::Bps16,
);

Variants§

§

Streaminfo(SignedBitCount<32>)

Gets bps from STREAMINFO metadata block

§

Bps8

8 bits-per-sample

§

Bps12

12 bits-per-sample

§

Bps16

16 bits-per-sample

§

Bps20

20 bits-per-sample

§

Bps24

24 bits-per-sample

§

Bps32

32 bits-per-sample

Implementations§

Source§

impl BitsPerSample

Source

pub fn checked_add(self, rhs: u32) -> Option<SignedBitCount<32>>

Adds the given number of bits to this bit count, if possible.

If the number of bits would overflow the maximum count, returns None.

Trait Implementations§

Source§

impl Clone for BitsPerSample

Source§

fn clone(&self) -> BitsPerSample

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BitsPerSample

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<BitsPerSample> for SignedBitCount<32>

Source§

fn from(bps: BitsPerSample) -> Self

Converts to this type from the input type.
Source§

impl From<BitsPerSample> for u32

Source§

fn from(bps: BitsPerSample) -> Self

Converts to this type from the input type.
Source§

impl From<SignedBitCount<32>> for BitsPerSample

Source§

fn from(bps: SignedBitCount<32>) -> Self

Converts to this type from the input type.
Source§

impl FromBitStream for BitsPerSample

Source§

type Error = Error

Error generated during parsing, such as io::Error
Source§

fn from_reader<R: BitRead + ?Sized>(r: &mut R) -> Result<Self, Error>

Parse Self from reader
Source§

impl FromBitStreamUsing for BitsPerSample

Source§

type Context = Option<SignedBitCount<32>>

Some context to consume when parsing
Source§

type Error = Error

Error generated during parsing, such as io::Error
Source§

fn from_reader<R: BitRead + ?Sized>( r: &mut R, streaminfo_bps: Option<SignedBitCount<32>>, ) -> Result<Self, Error>

Parse Self from reader with the given context
Source§

impl PartialEq<SignedBitCount<32>> for BitsPerSample

Source§

fn eq(&self, rhs: &SignedBitCount<32>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq for BitsPerSample

Source§

fn eq(&self, other: &BitsPerSample) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl ToBitStream for BitsPerSample

Source§

type Error = Error

Error generated during building, such as io::Error
Source§

fn to_writer<W: BitWrite + ?Sized>(&self, w: &mut W) -> Result<(), Self::Error>

Generate self to writer
Source§

fn bits<C>(&self) -> Result<C, Self::Error>
where C: Counter, Self: Sized,

Returns length of self in bits, if possible
Source§

fn bits_len<C, E>(&self) -> Result<C, Self::Error>
where C: Counter, E: Endianness, Self: Sized,

👎Deprecated since 4.0.0: use of bits() is preferred
Returns total length of self, if possible
Source§

impl Copy for BitsPerSample

Source§

impl Eq for BitsPerSample

Source§

impl StructuralPartialEq for BitsPerSample

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.