You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#1828 added SRT egress (MoQ broadcast -> moq_mux::ts::Export -> SRT messages), but the
wiring is SRT-specific and its review explicitly deferred pacing: send timestamps use Instant::now() rather than media PTS, so a tune-in keyframe burst is released as a burst,
and "a proper fix needs a PTS-exposing API change in moq_mux::Export". #1799 also lists
RTP/UDP, FEC, ST 2022-7, and multicast as broadcast egress needs. This issue proposes a
small shared egress abstraction so transports are pluggable, plus the PCR-aware pacing the
SRT work punted on. Part of #1799; builds on #1828.
Proposal
1. PCR-aware pacing + a PTS-exposing Export API (do first)
ST 2022-7 seamless protection switching (dual-path hitless merge)
(SRT stays as the existing sink.)
Where it lives
A dedicated egress crate, or extend the egress shape moq-srt introduced; the relay core
stays media-agnostic. Coordinate with moq-srt (which is dev).
Branch
dev to sit alongside moq-srt egress. The moq_mux::Export timing-API addition is
additive (non-breaking).
Notes
A private reference implementation of RTP, FEC (2022-1), PCR pacing, and a decoder-safe
start gate exists; offered as design background and a starting point, not a wholesale
merge, real upstreaming carries standards-conformance (RFC 2250, SMPTE 2022-1/-7) and
interop tests (TSDuck, a hardware IRD).
(Written by Claude)
Context
#1828 added SRT egress (
MoQ broadcast -> moq_mux::ts::Export -> SRT messages), but thewiring is SRT-specific and its review explicitly deferred pacing: send timestamps use
Instant::now()rather than media PTS, so a tune-in keyframe burst is released as a burst,and "a proper fix needs a PTS-exposing API change in moq_mux::Export". #1799 also lists
RTP/UDP, FEC, ST 2022-7, and multicast as broadcast egress needs. This issue proposes a
small shared egress abstraction so transports are pluggable, plus the PCR-aware pacing the
SRT work punted on. Part of #1799; builds on #1828.
Proposal
1. PCR-aware pacing + a PTS-exposing Export API (do first)
moq_mux::container::ts::Exportto expose per-output timing(PTS/PCR) to the caller, the same surface feat(moq-srt): serve broadcasts back out over SRT (m=request egress) #1828 needs and that fix(moq-mux): author DTS for B-frame MPEG-TS export (decode timeline not emitted) #1836's faithful DTS
option also wants. Solve once.
wall-clock, fixing the feat(moq-srt): serve broadcasts back out over SRT (m=request egress) #1828 tune-in burst for every transport, not just SRT.
2. A generic egress sink
them to a transport. Refactor feat(moq-srt): serve broadcasts back out over SRT (m=request egress) #1828's SRT path to be one implementation.
Where it lives
A dedicated egress crate, or extend the egress shape
moq-srtintroduced; the relay corestays media-agnostic. Coordinate with
moq-srt(which isdev).Branch
devto sit alongsidemoq-srtegress. Themoq_mux::Exporttiming-API addition isadditive (non-breaking).
Notes
A private reference implementation of RTP, FEC (2022-1), PCR pacing, and a decoder-safe
start gate exists; offered as design background and a starting point, not a wholesale
merge, real upstreaming carries standards-conformance (RFC 2250, SMPTE 2022-1/-7) and
interop tests (TSDuck, a hardware IRD).
(Written by Claude)