Struct IntegerFileDecoder

Source
pub struct IntegerFileDecoder { /* private fields */ }
Expand description

Decode native FLAC or PCM WAV without converting the source to floating PCM.

The initial profile accepts integer 16/24-bit mono/stereo sources. Values returned in i32 containers retain their source-depth scale, interleaved channel order and rate. This is a source API, not an audio sink or a claim about operating-system/device output. No DSP, FFmpeg or fallback is used.

Implementations§

Source§

impl IntegerFileDecoder

Source

pub fn open(path: &Path) -> Result<Self, Error>

Inspect and decode the same opened regular file; extensions are not trusted.

Source

pub fn format(&self) -> IntegerPcmFormat

Original rate, valid precision and channel association.

Source

pub fn flac_md5_status(&self) -> Option<FlacMd5Status>

FLAC verification status for this decode pass, finalized only at EOF.

Source

pub fn read_frames(&mut self, output: &mut [i32]) -> Result<usize, Error>

Read complete interleaved frames into a caller-owned integer buffer.

A short read is normal; only Ok(0) establishes successful EOF. Empty or non-frame-aligned buffers are rejected without advancing the source or mutating the buffer. Unused output elements stay unchanged.

Source

pub fn skip_frames( &mut self, frames: u64, cancelled: impl FnMut() -> bool, ) -> Result<SeekResult, Error>

Progressively discard source frames for a later explicitly requested seek.

No output, DSP or listening history is produced. FLAC verification includes the discarded prefix. Working memory stays bounded, but work grows with the traversed audio. Cancellation is polled before decoding and after at most 4096 discarded frames; a decoder/I/O call may block. Discard this decoder after cancellation or failure rather than treating a partially advanced position as a successful seek.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

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.

§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

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.
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,