1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! Linux capture backend (`xdg-desktop-portal` `ScreenCast` + `PipeWire` +
//! `V4L2`).
//!
//! - [`LinuxScreenCapture::open`] — portal-mediated screen capture, **CPU copy**
//! path (`Bgra8` / `Rgba8` / `I420` depending on negotiation, never GPU
//! Zero-Copy this session). See
//! [ADR-0001](adr/0001-portal-pipewire-screen-capture.md).
//! - [`LinuxCameraCapture::open`] — `V4L2` `mmap` streaming I/O (`YUYV` /
//! `NV12` / `I420`, CPU frames). See
//! [ADR-0002](adr/0002-v4l2-camera-capture.md).
//! - [`LinuxWindowCapture::open`] — the same portal `ScreenCast` + `PipeWire`
//! plumbing as screen capture, requesting `SourceType::Window`. See
//! [ADR-0003](adr/0003-portal-window-capture.md).
//! - [`LinuxMicrophoneCapture::open`] — a direct `PipeWire` audio stream (no
//! portal — normal desktop `PipeWire` clients need none for audio). See
//! [ADR-0004](adr/0004-pipewire-microphone-capture.md).
//!
//! **Zero runtime hardware/session verification happened in this development
//! session** for any of the four backends above. No real desktop portal
//! session, `PipeWire` stream/daemon, V4L2 device, or compositor was
//! exercised — see each ADR's § Zero runtime verification. Compare
//! `mediaway-device-windows`, whose DXGI/WGC/WASAPI backends *did* get real
//! hardware verification in earlier sessions.
// `format`/`portal` are private modules (`mod format;`, not `pub mod`), so items
// they expose to `screencast.rs` are only ever crate-reachable either way.
// `pub(crate)` documents that intent and satisfies `unreachable_pub`; clippy's
// `redundant_pub_crate` (nursery) disagrees and asks for plain `pub` instead,
// which would reintroduce `unreachable_pub` warnings. Keep `pub(crate)`.
pub use LinuxCameraCapture;
pub use ;
pub use LinuxMicrophoneCapture;
pub use LinuxScreenCapture;
pub use LinuxWindowCapture;
pub use ;