Skip to main content

PreviewPlayer

Struct PreviewPlayer 

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

Thin builder for a (PlayerRunner, PlayerHandle) pair.

§Usage

let (mut runner, handle) = PreviewPlayer::open("clip.mp4")?.split();

runner.set_sink(Box::new(MySink::new()));

let handle_audio = handle.clone();

std::thread::spawn(move || { let _ = runner.run(); });

handle.seek(Duration::from_secs(30));
handle.play();

// cpal audio callback:
device.build_output_stream(&cfg, move |buf: &mut [f32], _| {
    let s = handle_audio.pop_audio_samples(buf.len());
    buf[..s.len()].copy_from_slice(&s);
}, ...);

Implementations§

Source§

impl PreviewPlayer

Source

pub fn open(path: impl AsRef<Path>) -> Result<Self, PreviewError>

Open a media file and prepare for playback.

Probes the file to detect audio/video streams, opens a DecodeBuffer for the video stream (when present), and spawns a background audio decode thread (when present). Returns PreviewError if the file is missing or contains neither stream.

§Errors

Returns PreviewError if the file cannot be probed or decoded.

Source

pub fn split(self) -> (PlayerRunner, PlayerHandle)

Consume self and return an exclusive PlayerRunner and a shared PlayerHandle.

The runner owns the decode pipeline; move it to a background thread and call PlayerRunner::run. The handle is Clone + Send + Sync and can be shared freely.

§Panics

Never panics in practice — the internal clock is always Some when split is first called.

Trait Implementations§

Source§

impl Drop for PreviewPlayer

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. 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> 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.