<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-cmsf-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>CMSF- a CMAF compliant implementation of MOQT Streaming Format</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-cmsf-00"/>
    <author initials="W." surname="Law" fullname="Will Law">
      <organization>Akamai</organization>
      <address>
        <email>wilaw@akamai.com</email>
      </address>
    </author>
    <date year="2025" month="December" day="01"/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>moq</keyword>
    <keyword>moqt</keyword>
    <keyword>MSF</keyword>
    <keyword>CMAF</keyword>
    <abstract>
      <?line 50?>

<t>This document updates <xref target="MSF"/> by defining a new optional feature for the streaming format.
It specifies the syntax and semantics for adding CMAF-packaged media <xref target="CMAF"/> to MSF.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://moq-wg.github.io/cmsf/draft-wilaw-moq-cmsf.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-moq-cmsf/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over QUIC Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/moq-wg/cmsf"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>CMAF compliant MOQT Streaming Format (CMSF) is a media format designed to deliver CMAF <xref target="CMAF"/> and
LOC [LOC] compliant media content over MOQ Transport (MOQT) <xref target="MoQTransport"/>. CMSF extends
MSF and retains all the scope, capabilities and features of MSF including the catalog
format, timeline, ABR switching and LOC support. MSF is targeted at real-time and
interactive levels of live latency, as well as VOD content.</t>
      <t>This document describes version 1 of the CMSF streaming format.</t>
    </section>
    <section anchor="msf-extension">
      <name>MSF Extension</name>
      <t>All of the specifications, requirements, and terminology defined in <xref target="MSF"/> apply to
implementations of this extension unless explicitly noted otherwise in this document.</t>
    </section>
    <section anchor="cmaf-packaging">
      <name>CMAF Packaging</name>
      <section anchor="initialization-headers">
        <name>Initialization headers</name>
        <t>A CMAF header is a sequence of CMAF constrained ISO BMFF boxes that do not reference any
media samples, but are associated with a CMAF track and are necessary for initializing
the decoding of the subsequent CMAF fragments.</t>
        <t>The header for a given MOQT Track <bcp14>MUST</bcp14> be packaged by encoding the header using <xref target="BASE64"/>
and then inserting that payload as the value of the Initialization data "initData" field
in the catalog entry for that Track.</t>
      </section>
      <section anchor="switching-sets-and-tracks">
        <name>Switching sets and tracks</name>
        <t>This specification defines a direct mapping between CMAF Tracks ( <xref target="CMAF"/> Sect 3.2.1) and
MOQT tracks (<xref target="MoQTransport"/> Sect 2.3).</t>
        <t>CMAF switching sets are a set of one or more CMAF tracks (3.2.1), where each track is an
alternative encoding of the same source content and are constrained to enable seamless
track switching (3.3.9).</t>
        <t>Each CMAF track in a switching set <bcp14>MUST</bcp14> be transmitted as a separate MOQT Track. The
catalog entry for each of these tracks in the switching set <bcp14>MUST</bcp14> carry a Alternate group
(altGroup) key with a common value.</t>
        <t>The MOQT Group numbers within these switching set tracks <bcp14>MUST</bcp14> be media time-aligned.
Mandating the track being media time-aligned requires that the presentation time of the
first media sample contained within the first MOQT Object of each MOQT Group is identical.</t>
      </section>
      <section anchor="object-packaging">
        <name>Object Packaging</name>
        <t>The payload of each Object is subject to the following requirements:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST</bcp14> contain at least one Movie Fragment Box (moof) followed by a Media Data
Box (mdat). This is equivalent to requiring that each Object hold at least one CMAF
Chunk. The Media Fragment Box (moof) <bcp14>MUST</bcp14> contain a Movie Fragment Header Box
(mfhd) and Track Box (trak) with a Track ID (track_ID) matching a Track Box in the
initialization fragment.</t>
          </li>
          <li>
            <t><bcp14>MAY</bcp14> contain multiple successive CMAF Chunks.</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> contain a single [ISOBMFF] track.</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> contain media content encoded in decode order.</t>
          </li>
        </ul>
      </section>
      <section anchor="group-packaging">
        <name>Group Packaging</name>
        <t>Each MOQT Group</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST</bcp14> begin with an Object containing a stream access point (SAP type 1 or 2).</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> contain one or more contiguous Groups of Pictures (GOPs).</t>
          </li>
          <li>
            <t>The Group boundary <bcp14>MUST</bcp14> align with a CMAF Fragment boundary. CMAF Fragments and CMAF
Chunks <bcp14>MUST</bcp14> not span Groups.</t>
          </li>
        </ul>
      </section>
      <section anchor="catalog-description">
        <name>Catalog description</name>
        <section anchor="cmaf-packaging-type">
          <name>CMAF packaging type</name>
          <t>This specification extends the allowed packaging values defined in <xref target="MSF"/>
to include one new entry, as defined in Table 1 below:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">CMAF</td>
                <td align="left">cmaf</td>
                <td align="left">This RFC</td>
              </tr>
            </tbody>
          </table>
          <t>Every Track entry in a CMSF catalog carrying CMAF-packaged media data <bcp14>MUST</bcp14> declare a
"packaging" type value of "cmaf".</t>
        </section>
        <section anchor="max-sap-starting-types">
          <name>Max SAP starting types</name>
          <t>This specification adds two track-level catalog fields, as defined in Table 2 below:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Name</th>
                <th align="left">Definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Max Group SAP starting type</td>
                <td align="left">maxGrpSapStartingType</td>
                <td align="left">
                  <xref target="maxgrpsapstartingtype"/></td>
              </tr>
              <tr>
                <td align="left">Max Object SAP starting type</td>
                <td align="left">maxObjSapStartingType</td>
                <td align="left">
                  <xref target="maxobjsapstartingtype"/></td>
              </tr>
            </tbody>
          </table>
          <section anchor="maxgrpsapstartingtype">
            <name>Max Group SAP starting type</name>
            <t>Location: T    Required: Optional   JSON Type: Number</t>
            <t>A number indicating the maximum SAP type the MOQT Groups in the track start with.</t>
          </section>
          <section anchor="maxobjsapstartingtype">
            <name>Max Object SAP starting type</name>
            <t>Location: T    Required: Optional   JSON Type: Number</t>
            <t>A number indicating the maximum SAP type the MOQT Objects in the track start with.</t>
          </section>
        </section>
      </section>
      <section anchor="event-timelines">
        <name>Event Timelines</name>
        <section anchor="saptypetimeline">
          <name>SAP Type timeline</name>
          <t>CMSF defines a special instance of an Event Timeline track, termed the SAP Type timeline
track. Its purpose is to convey information about the distribution of Stream Access Point
types and their associated Earlist Presentation Times.</t>
          <t>In the catalog, the SAP-type timeline track <bcp14>MUST</bcp14> include a 'packaging' value of 'eventtimeline"
and <bcp14>MUST</bcp14> include an 'eventType' value of 'org.ietf.moq.cmsf.sap'.</t>
          <t>In the SAP Type timeline JSON payload:</t>
          <ul spacing="normal">
            <li>
              <t>The index reference <bcp14>MUST</bcp14> be 'l' for Location</t>
            </li>
            <li>
              <t>The data field is a JSON Array containing two integers. The first integer defines SAP type
with an allowed value of 0,1,2 or 3. The value 0 indicates that the Object does not start
with an ISOBMFF stream access point. The value equal to 1, 2, or 3 indicates that the Object
begins with a stream access point of SAP type 1, 2, or 3, respectively. When the Object is
the first Object in the Group, the value <bcp14>MUST</bcp14> be equal to 1 or 2. The second integer defines
the earliest media presentation timestamp, rounded to the nearest millisecond, of all media
samples in the Object defined by the Location of that record.</t>
            </li>
          </ul>
        </section>
        <section anchor="sap-type-timeline-track-example">
          <name>SAP-type timeline track example</name>
          <t>This shows an example of 30-fps HEVC-encoded content, in which each 4s Group beings with
SAP-type 2 (i.e., the first picture in the Group is an IDR picture, while there may be one or more
pictures in the Group following the IDR picture in decoding order but preceding it in output
order). After 2 seconds in each Group, there is a SAP-type 3, i.e., a CRA picture, which
is associated with one or more Random Access Skipped
Leading (RASL) pictures. A small buffer of frames (10 frames at 30 fps) is skipped/discarded
(RASL pictures) when the streaming session starts from the SAP-type 3 location. In this example,
the EPT is the presentation time of the first picture after the RASL pictures in decoding order;
all pictures after the RASL pictures can be fully correctly decoded and are thus presentable
when the streaming session starts from the SAP-type 3 location. Note that if the streaming session
starts from the start of the Group, then these RASL pictures can be fully correctly decoded and are
thus presentable.</t>
          <sourcecode type="json"><![CDATA[
[
    {
        "l": [0,0],
        "data": [2,0]
    },
    {
        "l": [0,60],
        "data": [3,2100]
    },
    {
        "l": [1,0],
        "data": [2,4000]
    },
    {
        "l": [1,60],
        "data": [3,6100]
    }
]
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="catalog-examples">
      <name>Catalog Examples</name>
      <t>The following section provides non-normative JSON examples of various catalogs
compliant with this draft.</t>
      <section anchor="simulcast-video-tracks-3-alternate-video-qualities-along-with-audio">
        <name>Simulcast video tracks - 3 alternate video qualities along with audio</name>
        <t>This example shows catalog for a media producer capable of sending 3
time-aligned video tracks for high definition, low definition and medium
definition video qualities, along with an audio track.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks":[
    {
      "name": "hd",
      "renderGroup": 1,
      "packaging": "cmaf",
      "isLive": true,
      "initData": "AAAAIGZ0eXBpc281AAA...AAAAAAAAAAAAA",
      "role": "video",
      "codec":"avc1.640028",
      "width":1920,
      "height":1080,
      "bitrate":5000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "md",
      "renderGroup": 1,
      "packaging": "cmaf",
      "isLive": true,
      "initData": "AAAAHGZ0eXBpc281AAA...AAAAAAAAAAAAAA",
      "role": "video",
      "codec":"avc1.64001e",
      "width":720,
      "height":640,
      "bitrate":3000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "sd",
      "renderGroup": 1,
      "packaging": "cmaf",
      "isLive": true,
      "initData": "AAAAHGZ0eXBpc281AAA...AAAAAAAAAAAAAA",
      "role": "video",
      "codec":"avc1.64000d",
      "width":192,
      "height":144,
      "bitrate":500000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "audio",
      "renderGroup": 1,
      "packaging": "cmaf",
      "isLive": true,
      "initData": "AAAAHGZ0eXBpc281AAA...AAAAAAAAAAAAAA",
      "role": "audio",
      "codec":"mp4a.40.5",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":67071
    }
   ]
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="MoQTransport">
        <front>
          <title>Media over QUIC Transport</title>
          <author fullname="Luke Curley" initials="L." surname="Curley">
            <organization>Discord</organization>
          </author>
          <author fullname="Kirill Pugin" initials="K." surname="Pugin">
            <organization>Meta</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
            <organization>Google</organization>
          </author>
          <author fullname="Ian Swett" initials="I." surname="Swett">
            <organization>Google</organization>
          </author>
          <date day="3" month="March" year="2025"/>
          <abstract>
            <t>   This document defines the core behavior for Media over QUIC Transport
   (MOQT), a media transport protocol designed to operate over QUIC and
   WebTransport, which have similar functionality.  MOQT allows a
   producer of media to publish data and have it consumed via
   subscription by a multiplicity of endpoints.  It supports
   intermediate content distribution networks and is designed for high
   scale and low latency distribution.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-10"/>
      </reference>
      <reference anchor="MSF">
        <front>
          <title>WARP Streaming Format</title>
          <author fullname="Will Law" initials="W." surname="Law">
            <organization>Akamai</organization>
          </author>
          <author fullname="Luke Curley" initials="L." surname="Curley">
            <organization>Twitch</organization>
          </author>
          <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
            <organization>Google</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Kirill Pugin" initials="K." surname="Pugin">
            <organization>Meta</organization>
          </author>
          <date day="22" month="July" year="2025"/>
          <abstract>
            <t>   This document specifies the WARP Streaming Format, designed to
   operate on Media Over QUIC Transport.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-moq-warp-01"/>
      </reference>
      <reference anchor="CMAF">
        <front>
          <title>Information technology — Multimedia application format (MPEG-A) — Part 19: Common media application format (CMAF) for segmented media</title>
          <author initials="I. O. for" surname="Standardization" fullname="International Organization for Standardization">
            <organization>ISO</organization>
          </author>
          <date year="2021" month="October"/>
        </front>
      </reference>
      <reference anchor="BASE64">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
          <date month="October" year="2006"/>
          <abstract>
            <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4648"/>
        <seriesInfo name="DOI" value="10.17487/RFC4648"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 318?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
