<?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.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-cmsf-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>CMSF- a CMAF compliant implementation of MOQT Streaming Format</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-cmsf-01"/>
    <author initials="W." surname="Law" fullname="Will Law">
      <organization>Akamai</organization>
      <address>
        <email>wilaw@akamai.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="03"/>
    <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 76?>

<t>This document updates MOQT Streaming Format by defining optional syntax and semantics
for carrying CMAF-packaged media.</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 82?>

<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 <xref target="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. CMSF 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="initheaders">
        <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 added to the catalog by generating an initDataList
entry with a "type" of "inline", a "data" value of the header encoded using <xref target="BASE64"/> and an
"id" which is unique across the initDataList items. That "id" value is then inserted as the
value of an "initRef" property in all tracks which use that header for initialization.</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 track.</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 independently coded sequences of media samples.</t>
          </li>
          <li>
            <t>The Group boundary <bcp14>MUST</bcp14> align with a CMAF Fragment boundary. CMAF Fragments and CMAF
Chunks <bcp14>MUST NOT</bcp14> 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="contentprotection">
      <name>Content Protection</name>
      <t>CMSF supports content protection using Common Encryption <xref target="CENC"/> for
CMAF-packaged media. This enables interoperability with existing DRM ecosystems
by reusing the signaling model established by DASH <xref target="DASH"/> and the DASH-IF
Encryption and Content Protection (ECCP) guidelines <xref target="DASHIF-ECCP"/>.</t>
      <t>Content protection in CMSF differs from the encryption scheme defined in
<xref target="MSF"/> Section 4.3. While MSF defines an end-to-end encryption mechanism
using MoQ Secure Objects for LOC-packaged content, CMSF uses ISO Common
Encryption <xref target="CENC"/> applied at the CMAF media layer. In CMSF, the media
samples within CMAF chunks are encrypted as specified by <xref target="CENC"/>, and the
DRM signaling is carried in the catalog rather than in per-object headers.</t>
      <t>A key advantage of CENC-based content protection is that decryption can be
delegated to a Content Decryption Module (CDM) operating at a deeper system
level, potentially in hardware or a trusted execution environment. This
enables robust content protection through commercial DRM systems such as
Widevine, PlayReady, and FairPlay Streaming, where the decryption keys and
decrypted media are handled within a secure pipeline that is not accessible
to the application layer. This hardware-level protection is a requirement
for high-value content distribution and is not achievable with
application-layer encryption schemes alone.</t>
      <section anchor="content-protection-catalog-fields">
        <name>Content Protection catalog fields</name>
        <t>Content protection information is signaled in the catalog at two levels:
a root-level <tt>contentProtections</tt> array containing DRM system descriptions,
and track-level references to those descriptions.</t>
        <section anchor="contentprotections">
          <name>Content Protections</name>
          <t>Location: R    Required: Optional   JSON Type: Array</t>
          <t>A JSON array of Content Protection objects at the root level of the catalog.
Each object describes a single DRM system configuration. Content protection
information <bcp14>MUST NOT</bcp14> be duplicated at the track level; all tracks reference
the root-level entries.</t>
          <t>Each Content Protection object contains the following fields:</t>
          <section anchor="refid">
            <name>Reference ID</name>
            <t>Location: CP    Required: Required   JSON Type: String</t>
            <t>A unique identifier for this content protection entry. Track entries
reference this value via the <tt>contentProtectionRefIDs</tt> field.</t>
          </section>
          <section anchor="defaultkid">
            <name>Default KIDs</name>
            <t>Location: CP    Required: Required   JSON Type: Array of Strings</t>
            <t>An array of default Key IDs (KIDs) expressed as UUID strings in the format
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx". These correspond to the
default_KID values defined in <xref target="CENC"/> Section 5. When multiple KIDs are
present, each identifies a key used to encrypt a different set of samples
(e.g., separate keys for different track types).</t>
          </section>
          <section anchor="scheme">
            <name>Scheme</name>
            <t>Location: CP    Required: Required   JSON Type: String</t>
            <t>The Common Encryption protection scheme as defined in <xref target="CENC"/>. Allowed
values are:</t>
            <table>
              <thead>
                <tr>
                  <th align="left">Name</th>
                  <th align="left">Value</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">CENC</td>
                  <td align="left">cenc</td>
                  <td align="left">AES-CTR full sample and sub-sample encryption</td>
                </tr>
                <tr>
                  <td align="left">CBCS</td>
                  <td align="left">cbcs</td>
                  <td align="left">AES-CBC pattern-based encryption with subsample</td>
                </tr>
              </tbody>
            </table>
            <t>The <bcp14>RECOMMENDED</bcp14> scheme for CMSF is "cbcs" as it provides better
compatibility with hardware decoders and aligns with DASH-IF ECCP
recommendations <xref target="DASHIF-ECCP"/>.</t>
          </section>
          <section anchor="drmsystem">
            <name>DRM System</name>
            <t>Location: CP    Required: Required   JSON Type: Object</t>
            <t>An object describing the DRM system associated with this content protection
entry. It contains the following fields:</t>
            <section anchor="systemid">
              <name>System ID</name>
              <t>Location: DS    Required: Required   JSON Type: String</t>
              <t>The DRM System ID expressed as a UUID string. Well-known system IDs include:</t>
              <table>
                <thead>
                  <tr>
                    <th align="left">DRM System</th>
                    <th align="left">System ID</th>
                  </tr>
                </thead>
                <tbody>
                  <tr>
                    <td align="left">Widevine</td>
                    <td align="left">edef8ba9-79d6-4ace-a3c8-27dcd51d21ed</td>
                  </tr>
                  <tr>
                    <td align="left">PlayReady</td>
                    <td align="left">9a04f079-9840-4286-ab92-e65be0885f95</td>
                  </tr>
                  <tr>
                    <td align="left">FairPlay</td>
                    <td align="left">94ce86fb-07ff-4f43-adb8-93d2fa968ca2</td>
                  </tr>
                  <tr>
                    <td align="left">ClearKey</td>
                    <td align="left">1077efec-c0b2-4d02-ace3-3c1e52e2fb4b</td>
                  </tr>
                </tbody>
              </table>
              <t>The ClearKey system ID follows the W3C EME specification and corresponds
to the DASH-IF ECCP "Explicit Clear Key Content Protection" mechanism
<xref target="DASHIF-ECCP"/>.</t>
            </section>
            <section anchor="laurl">
              <name>License URL</name>
              <t>Location: DS    Required: Optional   JSON Type: Object</t>
              <t>An object containing the URL of the license acquisition service. The object
has the following fields:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>url</tt> (String, Required): The URL of the license server.</t>
                </li>
                <li>
                  <t><tt>type</tt> (String, Optional): The license protocol type (e.g., "EME-1.0").</t>
                </li>
              </ul>
            </section>
            <section anchor="certurl">
              <name>Certificate URL</name>
              <t>Location: DS    Required: Optional   JSON Type: Object</t>
              <t>An object containing the URL of the DRM certificate service. This field is
<bcp14>REQUIRED</bcp14> for DRM systems that require a server certificate (e.g., FairPlay
Streaming). The object has the following fields:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>url</tt> (String, Required): The URL of the certificate server.</t>
                </li>
                <li>
                  <t><tt>type</tt> (String, Optional): The MIME type of the certificate resource
(e.g., "application/pkcs7-mime", "application/x-x509-ca-cert"). This
corresponds to the certType attribute defined in <xref target="DASHIF-ECCP"/>.</t>
                </li>
              </ul>
            </section>
            <section anchor="authzurl">
              <name>Authorization URL</name>
              <t>Location: DS    Required: Optional   JSON Type: Object</t>
              <t>An object containing the URL of an authorization service. The object
has the following fields:</t>
              <ul spacing="normal">
                <li>
                  <t><tt>url</tt> (String, Required): The URL of the authorization server.</t>
                </li>
                <li>
                  <t><tt>type</tt> (String, Optional): The authorization protocol type.</t>
                </li>
              </ul>
            </section>
            <section anchor="pssh">
              <name>PSSH</name>
              <t>Location: DS    Required: Optional   JSON Type: String</t>
              <t>A Base64-encoded <xref target="BASE64"/> Protection System Specific Header (PSSH) box
as defined in <xref target="CENC"/> Section 8.1. The PSSH box contains DRM
system-specific initialization data needed by the client to acquire
a license. This field <bcp14>SHOULD</bcp14> be present for DRM systems that require
PSSH data (e.g., Widevine, PlayReady).</t>
            </section>
            <section anchor="robustness">
              <name>Robustness</name>
              <t>Location: DS    Required: Optional   JSON Type: String</t>
              <t>A string indicating the minimum robustness level required by the DRM system.
The interpretation of this value is DRM system-specific.</t>
            </section>
          </section>
        </section>
        <section anchor="contentprotectionrefids">
          <name>Content Protection Reference IDs</name>
          <t>Location: T    Required: Optional   JSON Type: Array of Strings</t>
          <t>An array of Reference ID strings (see <xref target="refid"/>) identifying which content
protection entries from the root-level <tt>contentProtections</tt> array apply to
this track. When this field is present, the track content is encrypted
using Common Encryption <xref target="CENC"/> and the subscriber <bcp14>MUST</bcp14> acquire appropriate
licenses before decryption.</t>
          <t>When this field is absent, the track content is not protected by Common
Encryption.</t>
        </section>
      </section>
      <section anchor="initialization-data-for-protected-tracks">
        <name>Initialization data for protected tracks</name>
        <t>For protected CMAF tracks, the initialization data (carried in the catalog
<tt>initDataList</tt> array (as defined in <xref target="initheaders"/>) <bcp14>MUST</bcp14> include the Protection
Scheme Information Box ('sinf') containing the Scheme Type Box ('schm')
and Scheme Information Box ('schi') with the Track Encryption Box ('tenc')
as specified in <xref target="CENC"/> Section 6. This enables the subscriber to determine
the encryption parameters (default_isProtected, default_Per_Sample_IV_Size,
default_KID) from the initialization segment.</t>
      </section>
      <section anchor="clearkey-content-protection">
        <name>ClearKey content protection</name>
        <t>For testing and development scenarios, CMSF supports ClearKey content
protection using the W3C EME ClearKey mechanism. ClearKey uses the
Common System ID "1077efec-c0b2-4d02-ace3-3c1e52e2fb4b" and follows
the DASH-IF ECCP Explicit Clear Key Content Protection (ECCP) model
<xref target="DASHIF-ECCP"/>.</t>
        <t>When using ClearKey:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>systemID</tt> <bcp14>MUST</bcp14> be set to "1077efec-c0b2-4d02-ace3-3c1e52e2fb4b".</t>
          </li>
          <li>
            <t>The <tt>laURL</tt> field <bcp14>SHOULD</bcp14> contain the URL of a ClearKey license server
that implements the EME ClearKey protocol.</t>
          </li>
          <li>
            <t>The optional <tt>pssh</tt> field <bcp14>SHOULD</bcp14> contain a Base64-encoded PSSH box with
version 1, the Common System ID, and the KID(s) in the KID list.</t>
          </li>
        </ul>
      </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,
      "targetLatency": 2000,
      "initRef": "init-hd",
      "role": "video",
      "codec":"avc1.640028",
      "width":1920,
      "height":1080,
      "bitrate":5000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "md",
      "renderGroup": 1,
      "packaging": "cmaf",
      "isLive": true,
      "targetLatency": 2000,
      "initRef": "init-md",
      "role": "video",
      "codec":"avc1.64001e",
      "width":720,
      "height":640,
      "bitrate":3000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "sd",
      "renderGroup": 1,
      "packaging": "cmaf",
      "isLive": true,
      "targetLatency": 2000,
      "initRef": "init-sd",
      "role": "video",
      "codec":"avc1.64000d",
      "width":192,
      "height":144,
      "bitrate":500000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "audio",
      "renderGroup": 1,
      "packaging": "cmaf",
      "isLive": true,
      "targetLatency": 2000,
      "initRef": "init-audio",
      "role": "audio",
      "codec":"mp4a.40.5",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":67071
    }
   ],
  "initDataList": [
    {
      "id": "init-hd",
      "type": "inline",
      "data": "AAAAHGZ0eXBjbWYyAAAAAGNtZjJpc282bXA0MQ..."
    },
    {
      "id": "init-md",
      "type": "inline",
      "data": "AAAAHGZ0eXBjbWYyAAAAAGNtZjJpc282bXA0MQ..."
    },
    {
      "id": "init-sd",
      "type": "inline",
      "data": "AAAAHGZ0eXBjbWYyAAAAAGNtZjJpc282bXA0MQ..."
    },
    {
      "id": "init-audio",
      "type": "inline",
      "data": "AAAAHGZ0eXBjbWYyAAAAAGNtZjJpc282bXA0MQ..."
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="drm-protected-video-with-audio">
        <name>DRM-protected video with audio</name>
        <t>This example shows a catalog for a single DRM-protected video track and an
unprotected audio track. The video track is encrypted using CBCS and
references three content protection entries: Widevine, PlayReady, and
FairPlay.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "1",
  "generatedAt": 1746104606044,
  "contentProtections": [
    {
      "refID": "1",
      "defaultKID": [
        "01234567-89ab-cdef-0123-456789abcdef"
      ],
      "scheme": "cbcs",
      "drmSystem": {
        "systemID": "edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",
        "laURL": {
          "url": "https://widevine-license.example.com/proxy"
        },
        "pssh": "AAAAP3Bzc2gAAAAA7e+LqXnWSs6jy..."
      }
    },
    {
      "refID": "2",
      "defaultKID": [
        "01234567-89ab-cdef-0123-456789abcdef"
      ],
      "scheme": "cbcs",
      "drmSystem": {
        "systemID": "9a04f079-9840-4286-ab92-e65be0885f95",
        "laURL": {
          "url": "https://playready-license.example.com/auth"
        },
        "pssh": "AAACvnBzc2gAAAAAmgTweZhAQoar..."
      }
    },
    {
      "refID": "3",
      "defaultKID": [
        "01234567-89ab-cdef-0123-456789abcdef"
      ],
      "scheme": "cbcs",
      "drmSystem": {
        "systemID": "94ce86fb-07ff-4f43-adb8-93d2fa968ca2",
        "laURL": {
          "url": "https://fps-license.example.com/api/licenses"
        },
        "certURL": {
          "url": "https://fps-license.example.com/cert"
        }
      }
    }
  ],
  "tracks": [
    {
      "name": "video_protected",
      "packaging": "cmaf",
      "isLive": true,
      "buffers": {"target":1500},
      "role": "video",
      "renderGroup": 1,
      "altGroup": 1,
      "initRef": "1",
      "codec": "avc3.4D401F",
      "framerate": 25,
      "bitrate": 581905,
      "width": 1280,
      "height": 720,
      "contentProtectionRefIDs": ["1", "2", "3"]
    },
    {
      "name": "audio",
      "packaging": "cmaf",
      "isLive": true,
      "buffers": {"target":1500},
      "role": "audio",
      "renderGroup": 1,
      "initRef": "2",
      "codec": "mp4a.40.5",
      "samplerate": 48000,
      "channelConfig": "2",
      "bitrate": 67071
    }
  ],
  "initDataList": [
    {
      "id": "1",
      "type": "inline",
      "data": "AAAAHGZ0eXBjbWYyAAAAAGNtZjJpc282bXA0MQAA..."
    },
    {
      "id": "2",
      "type": "inline",
      "data": "AAAAHGZ0eXBjbWYyAAAAAGNtZjJpc282bXA0MQAA..."
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="clearkey-protected-video">
        <name>ClearKey-protected video</name>
        <t>This example shows a catalog using ClearKey content protection following
the ECCP model, suitable for testing and development.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "1",
  "generatedAt": 1746104606044,
  "contentProtections": [
    {
      "refID": "1",
      "defaultKID": [
        "01234567-89ab-cdef-0123-456789abcdef"
      ],
      "scheme": "cenc",
      "drmSystem": {
        "systemID": "1077efec-c0b2-4d02-ace3-3c1e52e2fb4b",
        "laURL": {
          "url": "https://clearkey-server.example.com/clearkey",
          "type": "EME-1.0"
        },
        "pssh": "AAAANHBzc2gBAAAAEHfv7MCyTQKs4..."
      }
    }
  ],
  "tracks": [
    {
      "name": "video",
      "packaging": "cmaf",
      "isLive": true,
      "buffers": {"target":1500},
      "role": "video",
      "renderGroup": 1,
      "initRef": "init-video",
      "codec": "avc1.640028",
      "framerate": 30,
      "bitrate": 5000000,
      "width": 1920,
      "height": 1080,
      "contentProtectionRefIDs": ["1"]
    }
  ],
  "initDataList": [
    {
      "id": "init-video",
      "type": "inline",
      "data": "AAAAHGZ0eXBjbWYyAAAAAGNtZjJpc282bXA0MQAA..."
    }
  ]
}
]]></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-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MoQTransport">
          <front>
            <title>Media over QUIC Transport</title>
            <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>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <date day="12" month="May" year="2026"/>
            <abstract>
              <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-18"/>
        </reference>
        <reference anchor="MSF">
          <front>
            <title>MOQT Streaming Format</title>
            <author fullname="Will Law" initials="W." surname="Law">
              <organization>Akamai</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies the MOQT Streaming Format, designed to
   operate on Media Over QUIC Transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-msf-01"/>
        </reference>
        <reference anchor="LOC">
          <front>
            <title>Low Overhead Media Container</title>
            <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Peter Thatcher" initials="P." surname="Thatcher">
              <organization>Microsoft</organization>
            </author>
            <date day="15" month="March" year="2026"/>
            <abstract>
              <t>   This specification describes a Low Overhead Media Container (LOC)
   format for encoded and encrypted audio and video media data to be
   used primarily for interactive Media over QUIC Transport (MOQT).  It
   may be used in the MOQT Streaming Format (MSF) specification, which
   defines a catalog format for publishers to declare and describe their
   LOC tracks and for subscribers to consume them.  Examples are also
   provided for building media applications using LOC and MOQT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-loc-02"/>
        </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="CENC">
          <front>
            <title>Information technology — MPEG systems technologies — Part 7: Common encryption in ISO base media file format files</title>
            <author initials="I. O. for" surname="Standardization" fullname="International Organization for Standardization">
              <organization>ISO</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="ISO/IEC" value="23001-7:2024"/>
        </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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="DASH">
          <front>
            <title>Information technology — Dynamic adaptive streaming over HTTP (DASH) — Part 1: Media presentation description and segment formats.</title>
            <author initials="I. O. for" surname="Standardization" fullname="International Organization for Standardization">
              <organization>ISO</organization>
            </author>
            <date year="2022" month="August"/>
          </front>
          <seriesInfo name="ISO/IEC" value="23009-1:2022"/>
        </reference>
        <reference anchor="DASHIF-ECCP" target="https://dashif.org/docs/DASH-IF-ECCP-v1.0.0.pdf">
          <front>
            <title>DASH-IF Implementation Guidelines: Encryption and Content Protection (ECCP)</title>
            <author initials="D. I." surname="Forum" fullname="DASH Industry Forum">
              <organization>DASH-IF</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 702?>

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

-->

</rfc>
