v2.0.0
srt-whep v2.0.0
A ground-up rewrite of the signaling and streaming internals, plus fixes that
restore WebRTC media delivery on both Linux and macOS. Same product — ingest one
MPEG-TS-over-SRT stream and fan it out to WHEP/WebRTC viewers — on a far more
robust core.
Highlights
- Rebuilt signaling plane. All viewer connection state now lives in a single
coordinator actor (one tokio task) with per-viewer failure isolation, a
consecutive-failure watchdog that restarts a wedged pipeline, and a periodic
sweep that reaps timed-out and abandoned handshakes. Replaces the previous
ad-hoc locking (ADR 0001). - Pipeline supervisor. A dedicated restart loop runs the GStreamer pipeline
and recovers from EOS/errors with backoff; a single Ctrl-C cleanly stops
signaling, pipeline, and the HTTP server together. - WebRTC media fixed (WHEP no-media). The app now resolves the
rswebrtc
plugin from the GStreamer installation instead of a shadowing static copy,
fixing the version skew that produced connected-but-silent WHEP sessions. The
Docker image sourcesrswebrtcfrom the LiveKit base so Linux WHEP works out
of the box (ADR 0003, 0004). - Branch-error isolation. One viewer's branch failing no longer restarts the
whole pipeline and drops every other viewer (ADR 0002).
Features
-D/--decode-video— insertsavdec_h264beforewhipclientsinkso
webrtcsink re-encodes, working around the webrtcsink 0.15.x macOS H264
passthrough not-negotiated bug. Off by default.- CLI flags for coordinator tunables (handshake timeouts, watchdog threshold) —
defaults unchanged. - Startup assertion that the listener port matches the pipeline's loopback WHIP
port, failing fast on misconfiguration. u16port typing end to end; latency option.
Internal / quality
- Architecture-deepening pass (C1–C5): split
BranchControl/PipelineLifecycle
seams, pipeline lock kept private and never held across awaits, dedicated GLib
main-loop thread, typed pipeline error seam. - CI runs the test suite +
fmt+clippyon pull requests and smoke-tests the
Docker image before publishing; GitHub Actions bumped; Dependabot enabled. - New docs:
CONTEXT.mddomain glossary, ADRs 0001–0004, verified macOS codec
profile table.
Upgrade notes
No configuration migration required — existing CLI invocations keep working
because all new flags default to the prior behavior.