# Frame capture (plan §7 / §W6): the Linux xdg-ScreenCast/PipeWire portal capturer and the Windows # IDD direct-push capturer, plus the synthetic sources + the Capturer trait, extracted into a # subsystem crate. Depends on the shared frame vocabulary (pf-frame), the zero-copy plumbing # (pf-zerocopy), and the display leaves (pf-win-display) — never on pf-encode: the encode-backend # facts arrive pre-resolved (ZeroCopyPolicy) and the sealed-channel delivery as a closure # (FrameChannelSender), so the capture→encode edge is one-way (plan §2.4). [package] name = "pf-capture" version = "0.12.0" edition = "2021" rust-version.workspace = true license = "MIT OR Apache-2.0" description = "punktfunk host frame capture: Linux PipeWire portal + Windows IDD direct-push capturers behind one Capturer trait." publish = false [dependencies] punktfunk-core = { path = "../punktfunk-core", features = ["quic"] } pf-frame = { path = "../pf-frame" } pf-zerocopy = { path = "../pf-zerocopy" } pf-win-display = { path = "../pf-win-display" } pf-gpu = { path = "../pf-gpu" } pf-host-config = { path = "../pf-host-config" } anyhow = "1" tracing = "0.1" [target.'cfg(target_os = "linux")'.dependencies] # The xdg ScreenCast + RemoteDesktop portals, and the PipeWire consumer for the capture frames. ashpd = { version = "0.13", features = ["screencast", "remote_desktop"] } pipewire = "0.9" libc = "0.2" # ashpd 0.13 uses the tokio runtime for the one-time portal handshake (control plane). tokio = { version = "1", features = ["rt", "rt-multi-thread", "net", "time"] } [target.'cfg(target_os = "windows")'.dependencies] # The host<->driver wire contract for the sealed frame channel (control IOCTL structs + frame header). pf-driver-proto = { path = "../pf-driver-proto" } windows = { version = "0.62", features = [ "Win32_Foundation", "Win32_Security", "Win32_Security_Authorization", "Win32_Graphics_Direct3D", "Win32_Graphics_Direct3D11", "Win32_Graphics_Direct3D_Fxc", "Win32_Graphics_Dxgi", "Win32_Graphics_Dxgi_Common", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Threading", "Win32_UI_HiDpi", "Win32_UI_Input_KeyboardAndMouse", "Win32_UI_WindowsAndMessaging", ] }