Native low-latency PipeWire capture for -p (drop pw-record subprocess)

-p now connects a real capture stream via the pipewire crate and pushes
mono f32 straight into the render channel from the RT process callback,
instead of spawning pw-record and parsing its s16 stdout. It captures the
default sink monitor (what you hear), negotiates F32 at the graph's native
rate/channels, and takes a --latency <frames> quantum hint (default 256)
so you can trade CPU/xrun-risk for lower latency.

libpipewire becomes a build+runtime dependency: CI installs the dev
headers + clang, and the PKGBUILD depends on libpipewire.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GLUwWE2KmFPzhKaf67tWbx
This commit is contained in:
Bendik Aagaard Lynghaug
2026-09-13 11:16:53 +02:00
co-authored by Claude Opus 4.8
parent 3dbe5c4ddd
commit b230e6829a
6 changed files with 619 additions and 72 deletions
+1
View File
@@ -12,3 +12,4 @@ byteorder = "1.5.0"
clap = { version = "4.5.21", features = ["derive"] }
crossterm = "0.29.0"
rustfft = "6.2.0"
pipewire = "0.10"