Skip to main content

Stream

Struct Stream 

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

A live, async frame source opened via open.

Every backend delivers frames through the same latest-frame channel, so the consumer just read().awaits regardless of platform. Dropping the stream releases the device (stops the macOS AVCaptureSession, joins the V4L2 / Media Foundation pump thread). That is the whole point: because read is a real await, cancelling the capture future drops this and the camera turns off promptly, with no blocking task left pinned to the runtime.

Implementations§

Source§

impl Stream

Source

pub async fn read(&mut self) -> Result<Option<Surface>, Error>

Await the next frame, or None once the source ends.

None is recoverable: the source stopped for a benign reason (it resized, the compositor renegotiated the format, the device went idle) and reopening is expected to work. An Err is terminal for this selection: the source is gone or was refused.

Dropping this future cancels only the pending read. Dropping the stream releases the capture source.

Source

pub fn width(&self) -> u32

Width of the captured frames in pixels.

Source

pub fn height(&self) -> u32

Height of the captured frames in pixels.

Source

pub fn framerate(&self) -> Option<u32>

The negotiated frame rate, or None if the source doesn’t report one.

Source

pub fn color(&self) -> Option<Color>

The first frame’s declared color space, when its capture backend knows it.

Source

pub fn label(&self) -> &str

Human-readable label for the selected capture source.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Stream

§

impl !Sync for Stream

§

impl !UnwindSafe for Stream

§

impl Freeze for Stream

§

impl Send for Stream

§

impl Unpin for Stream

§

impl UnsafeUnpin for Stream

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

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSend for T
where T: Send + ?Sized,

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

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more