Struct ResamplingProd

Source
pub struct ResamplingProd<T: Sample> { /* private fields */ }
Expand description

The producer end of a realtime-safe spsc channel for sending samples across streams.

If the input and output samples rates differ, then this will automatically resample the input stream to match the output stream. If the sample rates match, then no resampling will occur.

Internally this uses the ringbuf crate.

Implementations§

Source§

impl<T: Sample + Copy> ResamplingProd<T>

Source

pub fn push_interleaved(&mut self, data: &[T]) -> usize

Push the given data in interleaved format.

Returns the number of frames (samples in a single channel) that were successfully pushed. If this number is less than the number of frames in data, then it means an overflow has occured.

Source

pub fn push<Vin: AsRef<[T]>>( &mut self, data: &[Vin], range: Range<usize>, ) -> usize

Push the given data in de-interleaved format.

Returns the number of frames (samples in a single channel) that were successfully pushed. If this number is less than the number of frames in data, then it means an overflow has occured.

  • range - The range in each channel in input to read data from.
Source

pub fn available_frames(&self) -> usize

Returns the number of frames (samples in a single channel) that are currently available to be pushed to the channel.

Source

pub fn available_seconds(&self) -> f64

The amount of data in seconds that is currently available to be pushed to the channel

Source

pub fn occupied_frames(&self) -> usize

Returns the number of frames (samples in a single channel) that are currently occupied in the channel.

Source

pub fn occupied_seconds(&self) -> f64

The amount of data in seconds that is currently occupied in the channel.

This value will be in the range [0.0, ResamplingProd::capacity_seconds()].

This value can be used to detect when new packets of data should be pushed to the channel in a non-realtime thread. Generally, if this value falls below ResamplingProd::latency_seconds(), then a new packet of data should be pushed.

Source

pub fn latency_seconds(&self) -> f64

The value of ResamplingChannelConfig::latency_seconds that was passed when this channel was created.

Source

pub fn capacity_seconds(&self) -> f64

The capacity of the channel in seconds.

Source

pub fn capacity_frames(&self) -> usize

The capacity of the channel in frames (samples in a single channel).

Source

pub fn num_channels(&self) -> NonZeroUsize

The number of channels configured for this stream.

Source

pub fn in_sample_rate(&self) -> NonZeroU32

The sample rate of the input (producer) stream.

Source

pub fn out_sample_rate(&self) -> NonZeroU32

The sample rate of the output (consumer) stream.

Source

pub fn reset(&mut self)

Tell the consumer to clear all queued frames in the buffer.

Auto Trait Implementations§

§

impl<T> !Freeze for ResamplingProd<T>

§

impl<T> !RefUnwindSafe for ResamplingProd<T>

§

impl<T> Send for ResamplingProd<T>

§

impl<T> !Sync for ResamplingProd<T>

§

impl<T> Unpin for ResamplingProd<T>

§

impl<T> UnwindSafe for ResamplingProd<T>
where T: RefUnwindSafe,

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.

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