screencapturekit/stream/
mod.rs

1//! Screen capture stream functionality
2//!
3//! This module provides the core streaming API for capturing screen content.
4//!
5//! ## Main Components
6//!
7//! - [`SCStream`] - The main capture stream that manages the capture session
8//! - [`configuration::SCStreamConfiguration`] - Stream configuration (resolution, FPS, pixel format, audio)
9//! - [`content_filter::SCContentFilter`] - Filter for selecting what to capture (display, window, app)
10//! - [`output_trait::SCStreamOutputTrait`] - Trait for receiving captured frames
11//! - [`output_type::SCStreamOutputType`] - Type of output (screen, audio, microphone)
12//! - [`delegate_trait::SCStreamDelegateTrait`] - Trait for stream lifecycle events
13//!
14//! ## Workflow
15//!
16//! 1. Query available content with [`SCShareableContent`](crate::shareable_content::SCShareableContent)
17//! 2. Create a content filter with [`SCContentFilter::create()`](content_filter::SCContentFilter::create)
18//! 3. Configure the stream with [`SCStreamConfiguration::new()`](configuration::SCStreamConfiguration::new)
19//! 4. Create and start the stream with [`SCStream::new()`](SCStream::new)
20//!
21//! ## Example
22//!
23//! ```rust,no_run
24//! use screencapturekit::prelude::*;
25//!
26//! # let content = SCShareableContent::get().unwrap();
27//! # let display = &content.displays()[0];
28//! let filter = SCContentFilter::create()
29//!     .with_display(display)
30//!     .with_excluding_windows(&[])
31//!     .build();
32//! let config = SCStreamConfiguration::new()
33//!     .with_width(1920)
34//!     .with_height(1080);
35//!
36//! let mut stream = SCStream::new(&filter, &config);
37//! stream.add_output_handler(
38//!     |sample, output_type| println!("Got frame!"),
39//!     SCStreamOutputType::Screen
40//! );
41//! stream.start_capture()?;
42//! # Ok::<(), screencapturekit::error::SCError>(())
43//! ```
44
45pub mod configuration;
46pub mod content_filter;
47pub mod delegate_trait;
48pub mod output_trait;
49pub mod output_type;
50pub mod sc_stream;
51
52pub use delegate_trait::ErrorHandler;
53pub use delegate_trait::SCStreamDelegateTrait as SCStreamDelegate;
54pub use delegate_trait::StreamCallbacks;
55pub use output_trait::SCStreamOutputTrait as SCStreamOutput;
56pub use sc_stream::SCStream;
57
58#[cfg(feature = "macos_14_0")]
59pub use content_filter::{SCShareableContentStyle, SCStreamType};