[package] name = "pf-client-core" description = "Shared client plumbing (Linux + Windows) — session pump, FFmpeg decode, PipeWire/WASAPI audio, SDL3 gamepads, trust store, discovery — extracted from the GTK client so the shells and the Vulkan session binary build on one implementation" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true authors.workspace = true repository.workspace = true # Linux + Windows: the Vulkan session client builds on both; `cargo build --workspace` # stays green on macOS (the Mac client lives in clients/apple) — there this crate is # `wol` plus stubs-free emptiness. `wol` is pure std and stays cross-platform, matching # the old main.rs. Audio is the one per-OS swap: PipeWire on Linux, WASAPI on Windows # (same public surface — see lib.rs). [target.'cfg(any(target_os = "linux", windows))'.dependencies] punktfunk-core = { path = "../punktfunk-core", features = ["quic"] } # FFmpeg's Vulkan hwcontext surface (Vulkan Video decode on the presenter's device). pf-ffvk = { path = "../pf-ffvk" } async-channel = "2" # Video decode (same FFmpeg pin as the host) and Opus for the audio planes. ffmpeg-next = "8" opus = "0.3" mdns-sd = "0.20" # Game-library fetch from the host's management API over mTLS + fingerprint pinning. # `ureq` is small + sync (the host uses it too) and its rustls unifies with the # workspace's (quinn's) 0.23; the pinning verifier mirrors core's private `PinVerify`. ureq = "2" rustls = { version = "0.23", features = ["ring"] } serde = { version = "1", features = ["derive"] } serde_json = "1" anyhow = "1" tracing = "0.1" # Gamepads: capture + feedback (full DualSense fidelity — touchpad/motion/triggers/LEDs # need the hidapi driver). Linux links the system SDL3; Windows builds it from source # (no system SDL3 there — same choice as clients/windows). [target.'cfg(target_os = "linux")'.dependencies] pipewire = "0.9" sdl3 = { version = "0.18", features = ["hidapi"] } [target.'cfg(windows)'.dependencies] wasapi = "0.23" sdl3 = { version = "0.18", features = ["hidapi", "build-from-source"] } # D3D11VA decode (video_d3d11.rs): device/adapter selection, DXVA probes, and the shared # NT-handle hand-off ring. Same pinned rev as clients/windows so the workspace builds ONE # windows-rs. windows = { git = "https://github.com/microsoft/windows-rs", rev = "a4f7b2cb7c63c6bb7fc77a2affe57145be1d8c4f", features = [ "Win32_Foundation", "Win32_Graphics_Direct3D", "Win32_Graphics_Direct3D11", "Win32_Graphics_Dxgi", "Win32_Graphics_Dxgi_Common", # IDXGIResource1::CreateSharedHandle takes an optional SECURITY_ATTRIBUTES — the # method itself is feature-gated behind this. "Win32_Security", ] }