pub struct MutterCapture { /* private fields */ }Expand description
Mutter ScreenCast + PipeWire capture backend.
Implementations§
Source§impl MutterCapture
impl MutterCapture
Sourcepub fn new(state: Arc<MutterState>) -> Self
pub fn new(state: Arc<MutterState>) -> Self
Create a new capture backend from shared compositor state.
Trait Implementations§
Source§impl CaptureBackend for MutterCapture
impl CaptureBackend for MutterCapture
Source§fn start_stream<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<PipeWireStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn start_stream<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<PipeWireStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Start a PipeWire capture stream. The returned
PipeWireStream stays
alive until explicitly stopped.Source§fn stop_stream<'life0, 'async_trait>(
&'life0 self,
stream: PipeWireStream,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stop_stream<'life0, 'async_trait>(
&'life0 self,
stream: PipeWireStream,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stop a previously started stream and release backend-side resources.
Source§fn pipewire_socket(&self) -> PathBuf
fn pipewire_socket(&self) -> PathBuf
Path to the PipeWire socket the shared GStreamer helper should talk
to (usually
<runtime_dir>/pipewire-0).Source§fn grab_screenshot<'life0, 'life1, 'async_trait>(
&'life0 self,
stream: &'life1 PipeWireStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn grab_screenshot<'life0, 'life1, 'async_trait>(
&'life0 self,
stream: &'life1 PipeWireStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Capture a PNG from an already-running stream.
Source§fn start_recording<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
stream: &'life1 PipeWireStream,
output_path: &'life2 Path,
bitrate: u32,
fps: u32,
) -> Pin<Box<dyn Future<Output = Result<VideoRecorder, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn start_recording<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
stream: &'life1 PipeWireStream,
output_path: &'life2 Path,
bitrate: u32,
fps: u32,
) -> Pin<Box<dyn Future<Output = Result<VideoRecorder, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Start a continuous WebM recording of
stream written to
output_path at the given bitrate (bits/sec) and fps. Returns a
handle whose stop() must be awaited to finalize the file cleanly.Auto Trait Implementations§
impl Freeze for MutterCapture
impl !RefUnwindSafe for MutterCapture
impl Send for MutterCapture
impl Sync for MutterCapture
impl Unpin for MutterCapture
impl UnsafeUnpin for MutterCapture
impl !UnwindSafe for MutterCapture
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more