draft-ietf-moq-cmsf-01 | 19 pages | Submitted 2026-06-03 | Datatracker
Authors
- will-law (Akamai)
Abstract
CMSF extends moq-msf by introducing CMAF-packaged media support. It describes the syntax and semantics for adding CMAF-packaged media to MSF, enabling delivery of CMAF and LOC-compliant content over moq-transport while maintaining all existing MSF capabilities.
Relationship to MSF and LOC
- moq-msf is the base streaming format
- moq-loc is the low-overhead container for interactive use
- CMSF adds CMAF packaging for traditional OTT/broadcast workflows
- All three work together: CMSF inherits MSF’s catalog, timeline, ABR, and LOC support
Design Tension
The MOQ ecosystem has two container philosophies:
- LOC - Minimal overhead, WebCodecs-native, optimized for real-time
- CMAF - Industry standard for OTT, broad tooling support, higher overhead
CMSF bridges this by allowing CMAF content to flow through the same MSF infrastructure alongside LOC content. luke-curley’s compressed-mp4 proposal is another approach to reduce CMAF overhead.
See media-packaging for a full comparison.
History
CMSF originated as draft-law-moq-carp-00 (“CARP - a CMAF compliant implementation of WARP”) submitted by will-law in November 2025. The draft was adopted by the MOQ working group and published as draft-ietf-moq-cmsf-00 in December 2025. The first revision, draft-ietf-moq-cmsf-01 — the first since -00 — was submitted to the Datatracker in June 2026.
ContentProtection Signaling
PR #18 (merged Apr 14 by will-law) added ContentProtection signaling to the CMSF spec. The design, proposed by Torbjörn Einarsson (Eyevinn), is roughly based on DASH/DASH-IF content protection signaling:
- Defines
contentProtectionsas a top-level array of protection descriptors withrefIDs in the catalog - Each encrypted track references applicable protections via a
contentProtectionRefIDsarray - Supports the same attributes as DASH/DASH-IF: Widevine, PlayReady, FairPlay, and ECCP (clear key)
- Addresses issue #8
Implementations:
- moqlivemock — Running implementation with Widevine, PlayReady, and FairPlay at moqlivemock.demo.osaas.io
- shaka-player — PR #9972 merged Apr 14, adding CMSF contentProtection support
Key rotation is not yet defined — future work can build on this for live catalogs with new refIDs.
Recent Highlights
Day-by-day WG/PR activity lives in the wiki log; this section keeps only durable milestones.
- LOCMAF adopted as a
locmafpackaging — by reference: CMSF PR #27 registers a thirdlocmafpackaging mode (betweencmaffull-chunk passthrough andloccodec-elementary frames) by normative reference to the standalone LOCMAF draft rather than folding the format text in — so CMSF now spanscmaf/locmaf/locwhile LOCMAF stays a sovereign individual draft. Thelocmafmode carries tagged fields plus unmodified samples so the receiver reconstructs the same CMAF chunk while dropping steady-state overhead to a couple of bytes. - Dual Track+Object initData: Will Law’s design carries init data via both a stable Track property (steady-state init) and an Object property for synchronized mid-track changes such as DASH-period switches and DRM key rotation.
- First working CMSF muxer/demuxer in a tracked open-source MoQ implementation landed in moq, under the principle “CMSF is CMAF with a different catalog format” — a
hang::Catalogintermediate representation serializes to MSF or Hang catalog formats. - emsg signaling design: catalog signaling of EMSG presence so players know to parse ISO boxes, a per-track
scheme_id_uriindicating the payload, and multiple emsg tags per track. - Zapping / fast-switching: a manifest parameter mimicking HESP, where one track carries more keyframes than others to enable fast switching.
- Media-format landscape stratified by
initDatasemantics: CMSF carries full CMAF chunks, LOCMAF delta-compresses CMAF chunk metadata, LOC strips fMP4 entirely, and MSFTS carries MPEG-TS.
Related
- moq-msf - Base streaming format
- moq-loc - Low overhead container
- media-packaging - Container format discussion