4fff4641bb
ci / rust (push) Has been cancelled
Both the unified host (serve --native) and standalone m3-host now advertise the native punktfunk/1 service over mDNS (_punktfunk._udp) — the analogue of the GameStream _nvstream._tcp advert. TXT records carry proto, the host cert fingerprint (fp, the value clients pin), the pairing requirement (pair=required|optional), and the host id. New crate::discovery module, wired into m3::serve so both host entry points get it; best-effort, never blocks streaming (--connect always works). Client gains `punktfunk-client-rs --discover [SECS]`: browses the LAN and prints each host (name, addr:port, pairing, fingerprint), then exits. Apple clients browse the same service natively via NWBrowser (service type + TXT keys are the contract). Validated cross-LAN: the dev box discovered the GNOME-box appliance (pair=required) and a standalone synthetic host (pair=optional); fingerprint and pairing state correct in both. Also refresh the now-stale sendmmsg caveat in the bitrate doc (batched/paced send landed + validated to 1 Gbps) and mark the encode|send thread split done in §12. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
26 lines
940 B
TOML
26 lines
940 B
TOML
[package]
|
|
name = "punktfunk-client-rs"
|
|
description = "punktfunk reference client (M4): VAAPI decode + wgpu/Vulkan present"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
repository.workspace = true
|
|
|
|
[dependencies]
|
|
punktfunk-core = { path = "../punktfunk-core", features = ["quic"] }
|
|
quinn = "0.11"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "net", "time", "macros"] }
|
|
anyhow = "1"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
# LAN host discovery (`--discover`): browse the native `_punktfunk._udp` mDNS service the host
|
|
# advertises (same crate/version the host advertises with).
|
|
mdns-sd = "0.20"
|
|
|
|
# Linux-only: --mic-test's Opus encoder (libopus). The mic UPLINK itself is portable —
|
|
# only this synthetic-tone test rig needs the encoder.
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
opus = "0.3"
|