Skip to main content

PreSkip

Struct PreSkip 

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

Pre-skip accumulator (RFC 7845 §5.1 item 4 / §4.2 trimming).

The §5.1 pre-skip is the number of 48 kHz samples (per channel) to discard from the start of the decoded output, giving the decoder’s internal filters time to converge before audible playback begins. This helper threads the remaining pre-skip count across packets: feed it each decoded packet’s per-channel sample count and it reports how many leading per-channel samples of that packet to drop.

Trimming is applied to the per-channel sample stream; for interleaved PCM with C channels, multiply the returned count by C to get the number of interleaved samples to drop from the front of the buffer.

Implementations§

Source§

impl PreSkip

Source

pub fn new(pre_skip: u16) -> Self

Construct a pre-skip accumulator with pre_skip per-channel samples still to discard.

Source

pub fn from_head(head: &OpusHead) -> Self

Build the pre-skip accumulator for a parsed OpusHead.

Source

pub fn remaining(&self) -> u32

Per-channel samples still to discard.

Source

pub fn is_done(&self) -> bool

true once the pre-skip region has been fully consumed.

Source

pub fn consume(&mut self, samples_per_channel: usize) -> usize

Register samples_per_channel newly-decoded per-channel samples and return how many of them (from the front) fall inside the pre-skip region and must be discarded. The remaining count is advanced accordingly.

Trait Implementations§

Source§

impl Clone for PreSkip

Source§

fn clone(&self) -> PreSkip

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for PreSkip

Source§

impl Debug for PreSkip

Source§

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

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

impl Eq for PreSkip

Source§

impl PartialEq for PreSkip

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 StructuralPartialEq for PreSkip

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.