Skip to main content

PlayClock

Struct PlayClock 

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

The play position of one output stream.

Cheap to clone; every clone reads the same stream. Get one from OutputClass::clock.

let clock = output.clock();

std::thread::spawn(move || loop {
    // What the listener hears right now, from the start of the stream.
    println!("{:?}", clock.position());
    std::thread::sleep(std::time::Duration::from_millis(500));
});

Implementations§

Source§

impl PlayClock

Source

pub fn position(&self) -> Duration

What is being heard now, measured from the first frame of the stream.

Between callbacks the position moves on with the monotonic clock, so it is smooth rather than stepping a buffer at a time; it never runs more than a buffer past the last callback, so a stalled device freezes it rather than letting it run away. Zero until the stream has started, and it never goes backwards.

Source

pub fn frames(&self) -> u64

Frames taken from the mixer since the stream was built — its padding silence included, so this is the stream’s own timeline, the mixer’s index divided by the channel count. The mixer’s cursor runs one buffer ahead of it, so scheduling at frames() + buffer is never late.

Source

pub fn latency(&self) -> Duration

How long after it is written a buffer reaches the listener, as the device last reported it.

Source

pub fn sample_rate(&self) -> u32

The stream’s sample rate.

Source

pub fn is_running(&self) -> bool

Whether the stream is running: built, not closed, and calling back.

False before the first callback, after close, and when callbacks stop arriving — a device unplugged mid-show. Anything following this clock should hold still while it is false.

Trait Implementations§

Source§

impl Clone for PlayClock

Source§

fn clone(&self) -> Self

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 Debug for PlayClock

Source§

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

Formats the value using the given formatter. Read more

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<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

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.

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> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.