How MOQ supports switching between quality levels during streaming.
Overview
moq-msf defines support for adaptive bitrate switching between time-synchronized tracks. Different quality representations are published as separate tracks that share a common timeline.
Mechanism
- The catalog-format describes all available tracks and their quality parameters (in MSF -01,
codec/width/heightare required for video,sampleRate/channelsfor audio, so a subscriber can pick a rendition without parsing the init segment;targetBuffergives per-track buffer guidance) - Tracks within a
renderGroupshare a timeline, but strict per-group time alignment has been loosened — MSF #128 (“relax time alignment on RenderGroup”) and #155 (“sequence-aligned groups are too restrictive”, luke-curley) both closed, settling on shared PTS without mandatory group-boundary alignment - Subscribers can switch between tracks by changing their subscription
- The publish-subscribe model means switching is a client-side decision
Latency Modes
MSF defines three latency regimes that affect ABR behavior:
- Real-time (<500ms) - Minimal buffering, aggressive quality drops
- Interactive (500-2500ms) - Some buffer for smoothing
- Standard (>2500ms) - Traditional ABR with deep buffers
Zapping
PR #122 in the MSF repo adds initial text on “zapping” - quickly switching between different content streams (like changing TV channels). This is related to but distinct from ABR switching.
Transport-Level Switching (June 2026)
Whether the transport needs dedicated machinery for seamless ABR switching was debated through spring 2026. The June London interim settled it: track switching uses a SWITCH_FROM parameter (afrind PR #1674, hard mode) rather than a standalone SWITCH message, and the catch-up half is handled by fill fetch + Range Filters. Decode-timestamp signaling proceeds as an extension (draft-ietf-moq-dts4moq). See switch-abr and joining-fetch-dissent for the full resolution.
Related
- moq-msf - Streaming format with ABR support
- catalog-format - Describes available quality tracks
- joining-fetch - ABR implications when joining mid-stream
- media-packaging - Container format affects ABR granularity