<?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.15 (Ruby 3.3.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-catalogformat-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title>Common Catalog Format for moq-transport</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-catalogformat-00"/>
    <author fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <author fullname="Will Law">
      <organization>Akamai</organization>
      <address>
        <email>wilaw@akamai.com</email>
      </address>
    </author>
    <author fullname="Mo Zanaty">
      <organization>Cisco</organization>
      <address>
        <email>mzanaty@cisco.com</email>
      </address>
    </author>
    <date year="2024" month="June" day="17"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>moq</keyword>
    <keyword>warp</keyword>
    <keyword>catalog</keyword>
    <abstract>
      <?line 66?>

<t>This specification defines a Common Catalog specification for streaming formats implementing the MOQ Transport Protocol <xref target="MoQTransport"/>. Media over QUIC Transport (MOQT) defines a publish/subscribe based unified media delivery protocol for delivering media for streaming and interactive applications over QUIC. The catalog describes the content made available by a publisher, including information necessary for subscribers to select, subscribe and initialize tracks.</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/catalog-format/draft-ietf-moq-catalogformat.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-moq-catalogformat/"/>.
      </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/catalog-format"/>.</t>
    </note>
  </front>
  <middle>
    <?line 71?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>MOQT <xref target="MoQTransport"/> defines a transport protocol that utilizes the QUIC network protocol [QUIC] and WebTransport[WebTrans] to move objects between publishers, subscribers and intermediaries. Tracks are identified using a tuple of the Track Namespace and the Track Name. A MOQT Catalog is a specialized track which captures details of all the tracks output by a publisher, including the identities, media profiles, initialization data and inter-track relationships. The mapping of media characteristics of objects with the tracks, as well as relative prioritization of those objects, are captured in separate MoQ Streaming Format specifications. This specification defines a JSON encoded catalog.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].</t>
    </section>
    <section anchor="catalog">
      <name>Catalog</name>
      <t>A Catalog is a MOQT Object that provides information about tracks from a given publisher. A Catalog is used by publishers for advertising their output and for subscribers in consuming that output. The payload of the Catalog object is opaque to Relays and can be end-to-end encrypted. The Catalog provides the names and namespaces of the tracks being produced, along with the relationship between tracks, properties of the tracks that consumers may use for selection and any relevant initialization data.</t>
      <t>A special case of the catalog exists which describes other catalogs instead of tracks. A catalog might describe tracks, or catalogs, but never both at the same time.</t>
      <section anchor="catalogversion">
        <name>Catalog version</name>
        <t>Versions of this catalog specification are defined using monotonically increasing integers. There is no guarantee that future catalog versions are backwards compatible and field definitions and interpretation may change between versions. A subscriber MUST NOT attempt to parse a catalog version which it does not understand.</t>
        <t>This document defines version 1.</t>
      </section>
      <section anchor="catalog-fields">
        <name>Catalog Fields</name>
        <t>A catalog is a JSON <xref target="JSON"/> document, comprised of a series of mandatory and optional fields. At a minimum, a catalog MUST provide all mandatory fields and one of either a 'tracks' field or a 'catalogs' field.  A producer MAY add additional fields to the ones described in this draft. Custom field names MUST NOT collide with field names described in this draft. To prevent custom field name collisions with future versions, custom field names SHOULD be prefixed using reverse domain name notation e.g "com.example-size". The order of field names within the JSON document is not important. Any track or catalog field declared at the root level is inherited by all tracks or catalogs. Any track or catalog field declared within a track or catalog object overwrites any inherited value.</t>
        <t>A parser MUST ignore fields it does not understand.</t>
        <t>Table 1 provides an overview of all fields defined by this document.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Name</th>
              <th align="left">Required</th>
              <th align="left">Location</th>
              <th align="left">JSON type</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Catalog version</td>
              <td align="left">version</td>
              <td align="left">yes</td>
              <td align="left">R</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="catalogversion"/></td>
            </tr>
            <tr>
              <td align="left">Streaming format</td>
              <td align="left">streamingFormat</td>
              <td align="left">yes</td>
              <td align="left">RC</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="streamingformat"/></td>
            </tr>
            <tr>
              <td align="left">Streaming format version</td>
              <td align="left">streamingFormatVersion</td>
              <td align="left">yes</td>
              <td align="left">RC</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="streamingformatversion"/></td>
            </tr>
            <tr>
              <td align="left">Supports delta updates</td>
              <td align="left">supportsDeltaUpdates</td>
              <td align="left">opt</td>
              <td align="left">RC</td>
              <td align="left">Boolean</td>
              <td align="left">
                <xref target="supportsdeltaupdates"/></td>
            </tr>
            <tr>
              <td align="left">Common Track Fields</td>
              <td align="left">commonTrackFields</td>
              <td align="left">opt</td>
              <td align="left">R</td>
              <td align="left">Object</td>
              <td align="left">
                <xref target="commontrackfields"/></td>
            </tr>
            <tr>
              <td align="left">Tracks</td>
              <td align="left">tracks</td>
              <td align="left">opt</td>
              <td align="left">R</td>
              <td align="left">Array</td>
              <td align="left">
                <xref target="tracks"/></td>
            </tr>
            <tr>
              <td align="left">Catalogs</td>
              <td align="left">catalogs</td>
              <td align="left">opt</td>
              <td align="left">R</td>
              <td align="left">Array</td>
              <td align="left">
                <xref target="catalogs"/></td>
            </tr>
            <tr>
              <td align="left">Track namespace</td>
              <td align="left">namespace</td>
              <td align="left">opt</td>
              <td align="left">TFC</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="tracknamespace"/></td>
            </tr>
            <tr>
              <td align="left">Track name</td>
              <td align="left">name</td>
              <td align="left">yes</td>
              <td align="left">TFC</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="trackname"/></td>
            </tr>
            <tr>
              <td align="left">Packaging</td>
              <td align="left">packaging</td>
              <td align="left">yes</td>
              <td align="left">TF</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="packaging"/></td>
            </tr>
            <tr>
              <td align="left">Track operation</td>
              <td align="left">operation</td>
              <td align="left">yes</td>
              <td align="left">TF</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="trackoperations"/></td>
            </tr>
            <tr>
              <td align="left">Track label</td>
              <td align="left">label</td>
              <td align="left">opt</td>
              <td align="left">TF</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="tracklabel"/></td>
            </tr>
            <tr>
              <td align="left">Render group</td>
              <td align="left">renderGroup</td>
              <td align="left">opt</td>
              <td align="left">TF</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="rendergroup"/></td>
            </tr>
            <tr>
              <td align="left">Alternate group</td>
              <td align="left">altGroup</td>
              <td align="left">opt</td>
              <td align="left">TF</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="altgroup"/></td>
            </tr>
            <tr>
              <td align="left">Initialization data</td>
              <td align="left">initData</td>
              <td align="left">opt</td>
              <td align="left">TF</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="initdata"/></td>
            </tr>
            <tr>
              <td align="left">Initialization track</td>
              <td align="left">initTrack</td>
              <td align="left">opt</td>
              <td align="left">TF</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="inittrack"/></td>
            </tr>
            <tr>
              <td align="left">Selection parameters</td>
              <td align="left">selectionParams</td>
              <td align="left">opt</td>
              <td align="left">TF</td>
              <td align="left">Object</td>
              <td align="left">
                <xref target="selectionparameters"/></td>
            </tr>
            <tr>
              <td align="left">Dependencies</td>
              <td align="left">depends</td>
              <td align="left">opt</td>
              <td align="left">T</td>
              <td align="left">Array</td>
              <td align="left">
                <xref target="dependencies"/></td>
            </tr>
            <tr>
              <td align="left">Temporal ID</td>
              <td align="left">temporalId</td>
              <td align="left">opt</td>
              <td align="left">T</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="temporalid"/></td>
            </tr>
            <tr>
              <td align="left">Spatial ID</td>
              <td align="left">spatialId</td>
              <td align="left">opt</td>
              <td align="left">T</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="spatialid"/></td>
            </tr>
            <tr>
              <td align="left">Codec</td>
              <td align="left">codec</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="codec"/></td>
            </tr>
            <tr>
              <td align="left">Mime type</td>
              <td align="left">mimeType</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="mimetype"/></td>
            </tr>
            <tr>
              <td align="left">Framerate</td>
              <td align="left">framerate</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="framerate"/></td>
            </tr>
            <tr>
              <td align="left">Bitrate</td>
              <td align="left">bitrate</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="bitrate"/></td>
            </tr>
            <tr>
              <td align="left">Width</td>
              <td align="left">width</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="width"/></td>
            </tr>
            <tr>
              <td align="left">Height</td>
              <td align="left">height</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="height"/></td>
            </tr>
            <tr>
              <td align="left">Audio sample rate</td>
              <td align="left">samplerate</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="audiosamplerate"/></td>
            </tr>
            <tr>
              <td align="left">Channel configuration</td>
              <td align="left">channelConfig</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="channelconfiguration"/></td>
            </tr>
            <tr>
              <td align="left">Display width</td>
              <td align="left">displayWidth</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="displaywidth"/></td>
            </tr>
            <tr>
              <td align="left">Display height</td>
              <td align="left">displayHeight</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="displayheight"/></td>
            </tr>
            <tr>
              <td align="left">Language</td>
              <td align="left">lang</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">
                <xref target="language"/></td>
            </tr>
          </tbody>
        </table>
        <t>Required: 'yes' indicates a mandatory field  in non-patch catalogs, 'opt' indicates an optional field</t>
        <t>Location:</t>
        <ul spacing="normal">
          <li>
            <t>'R' - the field is located in the Root of the JSON object.</t>
          </li>
          <li>
            <t>'RC' - the field may be located in either the Root or a Catalog object.</t>
          </li>
          <li>
            <t>'TFC' - the field may be located in either a Track object, the Common Track Fields object or a Catalog object.</t>
          </li>
          <li>
            <t>'TF' - the field may be located in either a Track object or a Common Track Fields object</t>
          </li>
          <li>
            <t>'T' - the field is located in a Track object</t>
          </li>
          <li>
            <t>'S' - the field is located in the Selection Parameters object.</t>
          </li>
        </ul>
        <section anchor="streamingformat">
          <name>Streaming format</name>
          <t>A number indicating the streaming format type. Every MoQ Streaming Format normatively referencing this catalog format MUST register itself in the "MoQ Streaming Format Type" table. See <xref target="ianaconsiderations"/> for additional details.</t>
        </section>
        <section anchor="streamingformatversion">
          <name>Streaming format version</name>
          <t>A string indicating the version of the streaming format to which this catalog applies. The structure of the version string is defined by the streaming format.</t>
        </section>
        <section anchor="supportsdeltaupdates">
          <name>Supports delta updates</name>
          <t>A boolean that if true indicates that the publisher MAY issue incremental (delta) updates - see <xref target="patch"/>. If false or absent, then the publisher gaurantees that they will NOT issue any incremental updates and that any future updates to the catalog will be independent. The default value is false. This field MUST be present if its value is true, but may be omitted if the value is false.</t>
        </section>
        <section anchor="commontrackfields">
          <name>Common track fields</name>
          <t>An object holding a collection of Track Fields (objects with a location of TF or TFC in table 1) which are to be inherited by all tracks. A field defined at the Track object level always supercedes any value inherited from the Common Track Fields object.</t>
        </section>
        <section anchor="tracks">
          <name>Tracks</name>
          <t>An array of track objects <xref target="trackobject"/>. If the 'tracks' field is present then the 'catalog' field MUST NOT be present.</t>
        </section>
        <section anchor="catalogs">
          <name>Catalogs</name>
          <t>An array of catalog objects <xref target="catalogobject"/>. If the 'catalogs' field is present then the 'tracks' field MUST NOT be present. A catalog MUST NOT list itself in the catalog array.</t>
        </section>
        <section anchor="catalogobject">
          <name>Catalog object</name>
          <t>A catalog object is a collection of fields whose location is specified as 'RC' or 'TFC' in Table 1.</t>
        </section>
        <section anchor="trackobject">
          <name>Tracks object</name>
          <t>A track object is a collection of fields whose location is specified as 'TFC', 'TF' or 'T' in Table 1.</t>
        </section>
        <section anchor="tracknamespace">
          <name>Track namespace</name>
          <t>The name space under which the track name is defined. See section 2.3 of <xref target="MoQTransport"/>. If the track namespace is declared in the root of the JSON document, then its value is inherited by all tracks and catalogs and it does not need to be re-declared within each track or catalog object. A namespace declared in a track object or catalog object overwrites any inherited name space. The track namespace is optional. If it is not declared at the root or track level, then each track MUST inherit the namespace of the catalog track.</t>
        </section>
        <section anchor="trackname">
          <name>Track name</name>
          <t>A string defining the name of the track. See section 2.3 of <xref target="MoQTransport"/>. Within the catalog, track names MUST be unique per namespace.</t>
        </section>
        <section anchor="packaging">
          <name>Packaging</name>
          <t>A string defining the type of payload encapsulation. Allowed values are strings as defined in Table 2.</t>
          <t>Table 2: Allowed packaging values</t>
          <table>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Draft</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">CMAF</td>
                <td align="left">"cmaf"</td>
                <td align="left">See RFC XXXX</td>
              </tr>
              <tr>
                <td align="left">LOC</td>
                <td align="left">"loc"</td>
                <td align="left">See RFC XXXX</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="trackoperations">
          <name>Track operations</name>
          <t>Each track description can specify an optional operation value that identifies
the catalog producer's intent. Track operation is an enumeration of values
as defined below.</t>
          <ul spacing="normal">
            <li>
              <t>Add: Indicates the track is added to the catalog and the consumers of the
 catalog may subscribe to the track.</t>
            </li>
            <li>
              <t>Delete: Indicates that media producer is no longer producing media on the
associated track. Subscribers SHOULD terminate their subscriptions.</t>
            </li>
          </ul>
          <t>A catalog update in which all previously added tracks are deleted SHOULD be interpreted by a subscriber to indicate that the publisher has terminated the broadcast.</t>
          <t>Table 3 defines the numerical values for the track operations.</t>
          <t>Table 3: Allowed track operations</t>
          <table>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Default value</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Add</td>
                <td align="left">add</td>
                <td align="left">yes</td>
              </tr>
              <tr>
                <td align="left">Delete</td>
                <td align="left">delete</td>
                <td align="left"> </td>
              </tr>
            </tbody>
          </table>
          <t>The default track operation is 'add'. This value does not need to be declared in the track object.</t>
        </section>
        <section anchor="tracklabel">
          <name>Track label</name>
          <t>A string defining a human-readable label for the track. Examples might be "Overhead camera view" or "Deutscher Kommentar". Note that the <xref target="JSON"/> spec requires UTF-8 support by decoders.</t>
        </section>
        <section anchor="rendergroup">
          <name>Render group</name>
          <t>An integer specifying a group of tracks which are designed to be rendered together. Tracks with the same group number SHOULD be rendered simultaneously, are usually time-aligned and are designed to accompany one another. A common example would be tying together audio and video tracks.</t>
        </section>
        <section anchor="altgroup">
          <name>Alternate group</name>
          <t>An integer specifying a group of tracks which are alternate versions of one-another. Alternate tracks represent the same media content, but differ in their selection properties. Alternate tracks SHOULD have matching framerate <xref target="framerate"/> and media time sequences. A subscriber typically subscribes to one track from a set of tracks specifying the same alternate group number. A common example would be a set video tracks of the same content offered in alternate bitrates.</t>
        </section>
        <section anchor="initdata">
          <name>Initialization data</name>
          <t>A string holding Base64 <xref target="BASE64"/> encoded initialization data for the track.</t>
        </section>
        <section anchor="inittrack">
          <name>Initialization track</name>
          <t>A string specifying the track name of another track which holds initialization data for the current track. Initialization tracks MUST NOT be added to the tracks array <xref target="tracks"/>. They are referenced only via the initialization track field of the track which they initialize.</t>
        </section>
        <section anchor="selectionparameters">
          <name>Selection parameters</name>
          <t>An object holding a series of name/value pairs which a subscriber can use to select tracks for subscription. If present, the selection parameters object MUST NOT be empty. Any selection parameters declared at the root level are inherited by all tracks. A selection parameters object may exist at both the root and track level. Any declaration of a selection parameter at the track level overrides the inherited root value.</t>
        </section>
        <section anchor="dependencies">
          <name>Dependencies</name>
          <t>Certain tracks may depend on other tracks for decoding. Dependencies holds an array of track names <xref target="trackname"/> on which the current track is dependent. Since only the track name is signaled, the namespace of the dependencies is assumed to match that of the track declaring the dependencies.</t>
        </section>
        <section anchor="temporalid">
          <name>Temporal ID</name>
          <t>A number identifying the temporal layer/sub-layer encoding of the track, starting with 0 for the base layer, and increasing with higher temporal fidelity.</t>
        </section>
        <section anchor="spatialid">
          <name>Spatial ID</name>
          <t>A number identifying the spatial layer encoding of the track, starting with 0 for the base layer, and increasing with higher fidelity.</t>
        </section>
        <section anchor="codec">
          <name>Codec</name>
          <t>A string defining the codec used to encode the track.
For LOC packaged content, the string codec registrations are defined in Sect 3 and Section 4 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.
For CMAF packaged content, the string codec registrations are defined in XXX.</t>
        </section>
        <section anchor="mimetype">
          <name>Mimetype</name>
          <t>A string defining the mime type <xref target="MIME"/> of the track. This parameter is typically supplied with CMAF packaged content.</t>
        </section>
        <section anchor="framerate">
          <name>Framerate</name>
          <t>A number defining the framerate of the track, expressed as frames per second.</t>
        </section>
        <section anchor="bitrate">
          <name>Bitrate</name>
          <t>A number defining the bitrate of track, expressed in bits second.</t>
        </section>
        <section anchor="width">
          <name>Width</name>
          <t>A number expressing the encoded width of the track content in pixels.</t>
        </section>
        <section anchor="height">
          <name>Height</name>
          <t>A number expressing the encoded height of the video frames in pixels.</t>
        </section>
        <section anchor="audiosamplerate">
          <name>Audio sample rate</name>
          <t>The number of audio frame samples per second. This property SHOULD only accompany audio codecs.</t>
        </section>
        <section anchor="channelconfiguration">
          <name>Channel configuration</name>
          <t>A string specifying the audio channel configuration. This property SHOULD only accompany audio codecs. A string is used in order to provide the flexibility to describe complex channel configurations for multi-channel and Next Generation Audio schemas.</t>
        </section>
        <section anchor="displaywidth">
          <name>Display width</name>
          <t>A number expressing the intended display width of the track content in pixels.</t>
        </section>
        <section anchor="displayheight">
          <name>Display height</name>
          <t>A number expressing the intended display height of the track content in pixels.</t>
        </section>
        <section anchor="language">
          <name>Language</name>
          <t>A string defining the dominant language of the track. The string MUST be one of the standard Tags for Identifying Languages as defined by <xref target="LANG"/>.</t>
        </section>
      </section>
      <section anchor="patch">
        <name>Catalog Patch</name>
        <t>A catalog update might contain incremental changes. This is a useful property if many tracks may be initially declared but then there are small changes to a subset of tracks. The producer can issue a patch to describe these small changes. Changes are described incrementally, meaning that a patch can itself modify a prior patch. Patching leverages JSON PATCH <xref target="JSON-PATCH"/> to modify the catalog.   JSON Patch is a format for expressing a sequence of operations to apply to a target JSON document.</t>
        <t>The following rules MUST be followed in processing patches:</t>
        <ul spacing="normal">
          <li>
            <t>The target JSON to be modified is the JSON document described by the preceding <xref target="MoQTransport"/> Object in the Catalog track, post any patching that may have been applied to that Object.</t>
          </li>
          <li>
            <t>A Catalog Patch is identified by having a single array at the root level, holding a series of JSON objects, each object representing a single operation to be applied to the target JSON document.</t>
          </li>
          <li>
            <t>Operations are applied sequentially in the order they appear in the array.  Each operation in the sequence is applied to the target document; the resulting document becomes the target of the next operation.  Evaluation continues until all operations are successfully applied or until an error condition is encountered.</t>
          </li>
          <li>
            <t>Track namespaces and track names may not be changed across patch updates. To change either namespace or name, remove the track and then add a new track with matching properties and the new namespace and name.</t>
          </li>
          <li>
            <t>Contents of the track selection properties object may not be varied across updates. To adjust a track selection property, the track must first be removed and then added with the new selection properties and a different name.</t>
          </li>
        </ul>
      </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="time-aligned-audiovideo-tracks-with-single-quality">
          <name>Time-aligned Audio/Video Tracks with single quality</name>
          <t>This example shows catalog for a media producer capable of sending LOC packaged, time-aligned audio and video tracks.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "commonTrackFields": {
     "namespace": "conference.example.com/conference123/alice",
     "packaging": "loc",
     "renderGroup": 1
  },
  "tracks": [
    {
      "name": "video",
      "selectionParams":{"codec":"av01.0.08M.10.0.110.09","width":1920,"height":1080,"framerate":30,"bitrate":1500000}
    },
    {
      "name": "audio",
      "selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":32000}
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="simulcast-video-tracks-3-alternate-qualities-along-with-audio">
          <name>Simulcast video tracks - 3 alternate 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. In this example the namespace is absent, which infers that each track must inherit the namespace of the catalog.
Additionally this example shows the presence of the supportsDeltaUpdates flag.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "supportsDeltaUpdates": true,
  "commonTrackFields": {
     "renderGroup": 1,
     "packaging": "loc"
  },
  "tracks":[
    {
      "name": "hd",
      "selectionParams": {"codec":"av01","width":1920,"height":1080,"bitrate":5000000,"framerate":30},
      "altGroup":1
    },
    {
      "name": "md",
      "selectionParams": {"codec":"av01","width":720,"height":640,"bitrate":3000000,"framerate":30},
      "altGroup":1
    },
    {
      "name": "sd",
      "selectionParams": {"codec":"av01","width":192,"height":144,"bitrate":500000,"framerate":30},
      "altGroup":1
    },
    {
      "name": "audio",
      "selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":32000}
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="svc-video-tracks-with-2-spatial-and-2-temporal-qualities">
          <name>SVC video tracks with 2 spatial and 2 temporal qualities</name>
          <t>This example shows catalog for a media producer capable
of sending scalable video codec with 2 spatial and 2 temporal
layers with a dependency relation as shown below:</t>
          <sourcecode type="ascii-figure"><![CDATA[
                  +----------+
     +----------->|  S1T1    |
     |            | 1080p30  |
     |            +----------+
     |                  ^
     |                  |
+----------+            |
|  S1TO    |            |
| 1080p15  |            |
+----------+      +-----+----+
      ^           |  SOT1    |
      |           | 480p30   |
      |           +----------+
      |               ^
+----------+          |
|  SOTO     |         |
| 480p15    |---------+
+----------+
]]></sourcecode>
          <t>The corresponding catalog uses "depends" attribute to
express the track relationships.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "supportsDeltaUpdates": true,
  "commonTrackFields": {
     "namespace": "conference.example.com/conference123/alice",
     "renderGroup": 1,
     "packaging": "loc"
  },
  "tracks":[
    {
      "name": "480p15",
      "selectionParams": {"codec":"av01.0.01M.10.0.110.09","width":640,"height":480,"bitrate":3000000,"framerate":15}
    },
    {
      "name": "480p30",
      "selectionParams": {"codec":"av01.0.04M.10.0.110.09","width":640,"height":480,"bitrate":3000000,"framerate":30},
      "depends": ["480p15"]
    },
    {
      "name": "1080p15",
      "selectionParams": {"codec":"av01.0.05M.10.0.110.09","width":1920,"height":1080,"bitrate":3000000,"framerate":15},
      "depends":["480p15"]
    },

    {
      "name": "1080p30",
      "selectionParams": {"codec":"av01.0.08M.10.0.110.09","width":1920,"height":1080,"bitrate":5000000,"framerate":30},
      "depends": ["480p30", "1080p15"]
    },
    {
      "name": "audio",
      "selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":32000}
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="patch-update-adding-a-track">
          <name>Patch update adding a track</name>
          <t>This example shows catalog for the media producer adding a slide track to an established video conference.</t>
          <sourcecode type="json"><![CDATA[
[
    {
        "op": "add",
        "path": "/tracks/-",
        "value": {
            "name": "slides",
            "selectionParams": {
                "codec": "av01.0.08M.10.0.110.09",
                "width": 1920,
                "height": 1080,
                "framerate": 15,
                "Bitrate": 750000
            },
            "renderGroup": 1
        }
    }
]


]]></sourcecode>
        </section>
        <section anchor="patch-update-removing-a-track">
          <name>Patch update removing a track</name>
          <t>This example shows patch catalog update for a media producer removing the track from an established video conference.</t>
          <sourcecode type="json"><![CDATA[
[
  { "op": "remove", "path": "/tracks/2"}
]
]]></sourcecode>
        </section>
        <section anchor="patch-update-removing-all-tracks-and-terminating-the-broadcast">
          <name>Patch update removing all tracks and terminating the broadcast</name>
          <t>This example shows a patch catalog update for a media producer removing all tracks and terminating the broadcast.</t>
          <sourcecode type="json"><![CDATA[
[
  { "op": "remove", "path": "/tracks/2"},
  { "op": "remove", "path": "/tracks/1"},
  { "op": "remove", "path": "/tracks/0"},
]

]]></sourcecode>
        </section>
        <section anchor="cmaf-tracks-with-multiple-qualities-of-audio-and-video">
          <name>CMAF Tracks with multiple qualities of audio and video</name>
          <t>This example shows catalog for a sports broadcast sending time-aligned audio and video tracks using CMAF packaging. Init segments are delivered as separate tracks.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "supportsDeltaUpdates": true,
  "commonTrackFields": {
     "namespace": "sports.example.com/games/08-08-23/12345",
     "packaging": "cmaf",
     "renderGroup":1
  },
  "tracks": [
    {
      "name": "video_4k",
      "selectionParams":{"codec":"avc1.640033","mimeType":"video/mp4","width":3840,"height":2160,"framerate":30,"bitrate":14931538},
      "initTrack":"init_video_4k",
      "altGroup": 1
    },
    {
      "name": "video_1080",
      "selectionParams":{"codec":"avc1.640028","mimeType":"video/mp4","width":1920,"height":1080,"framerate":30,"bitrate":9914554},
      "initTrack":"init_video_1080",
      "altGroup": 1
    },
    {
      "name": "video_720",
      "selectionParams":{"codec":"avc1.64001f","mimeType":"video/mp4","width":1280,"height":720,"framerate":30,"bitrate":4952892},
      "initTrack":"init_video_720",
      "altGroup": 1
    },
    {
      "name": "audio_aac",
      "selectionParams":{"codec":"mp4a.40.5","mimeType":"audio/mp4","samplerate":48000,"channelConfig":"2","bitrate":67071},
      "initTrack":"init_audio_aac",
      "altGroup": 2
    },
    {
      "name": "audio_ec3",
      "selectionParms":{"codec":"ec-3","mimeType":"audio/mp4","samplerate":48000,"channelConfig":"F801","bitrate":256000},
      "initTrack":"init_audio_ec3",
      "altGroup": 2
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="mixed-format-example-cmaf-and-loc-packaging-in-the-same-catalog">
          <name>Mixed format example - CMAF and LOC packaging in the same catalog</name>
          <t>This example shows catalog describing a broadcast with CMAF packaged video and LOC packaged audio.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "commonTrackFields": {
     "namespace": "output.example.com/event/12345",
     "renderGroup":1
  },
  "tracks": [
    {
      "name": "video0",
      "selectionParams":{"codec":"avc1.64001f","mimeType":"video/mp4","width":1280,"height":720,"framerate":30,"bitrate":4952892},
      "initTrack":"init_video_720",
      "packaging":"cmaf"
    },
    {
      "name": "audio",
      "selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":32000},
      "packaging": "loc"
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="cmaf-tracks-with-inband-init-segments">
          <name>CMAF Tracks with inband init segments</name>
          <t>This example shows catalog for a sports broadcast sending time-aligned audio and video tracks using CMAF packaging. Init segments are delivered as inband data. The data has been truncated for clarity.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "commonTrackFields": {
     "namespace": "sports.example.com/games/08-08-23/12345",
     "packaging": "cmaf",
     "renderGroup":1
  },
  "tracks": [
    {
      "name": "video_1080",
      "selectionParams":{"codec":"avc1.640028","mimeType":"video/mp4","width":1920,"height":1080,"framerate":30,"bitrate":9914554},
      "initData":"AAAAGG...BAAAx"
    },
    {
      "name": "audio_aac",
      "selectionParams":{"codec":"mp4a.40.5","mimeType":"audio/mp4","samplerate":48000,"channelConfig":"2","bitrate":67071},
      "initData":"AAAAGG...EAADE="
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="time-aligned-audiovideo-tracks-with-custom-field-values">
          <name>Time-aligned Audio/Video Tracks with custom field values</name>
          <t>This example shows catalog for a media producer capable of sending LOC packaged, time-aligned audio and video tracks along with custom fields in each track description.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "commonTrackFields": {
     "namespace": "conference.example.com/conference123/alice",
     "packaging": "loc",
     "renderGroup": 1
  },
  "tracks": [
    {
      "name": "video",
      "selectionParams":{"codec":"av01.0.08M.10.0.110.09","width":1920,"height":1080,"framerate":30,"bitrate":1500000},
      "com.example-billing-code": 3201,
      "com.example-tier": "premium",
      "com.example-debug": "h349835bfkjfg82394d945034jsdfn349fns"
    },
    {
      "name": "audio",
      "selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":32000}
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="a-catalog-referencing-catalogs-for-two-different-formats">
          <name>A catalog referencing catalogs for two different formats</name>
          <t>This example shows the catalog for a media producer that is outputting two streaming formats simultaneously under different namespaces. Note that each track name referenced points at another catalog object and that only the first catalog supports incremental delta updates.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "catalogs": [
    {
      "name": "catalog-for-format-one",
      "namespace": "sports.example.com/games/08-08-23/live",
      "streamingFormat":1,
      "streamingFormatVersion": "0.2",
      "supportsDeltaUpdates": true,
    },
    {
      "name": "catalog-for-format-five",
      "namespace": "chat.example.com/games/08-08-23/chat",
      "streamingFormat":5,
      "streamingFormatVersion": "1.6.2"
    }
  ]
}

]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The catalog contents MAY be encrypted. The mechanism of encryption and the signaling of the keys are left to the Streaming Format referencing this catalog format.</t>
    </section>
    <section anchor="ianaconsiderations">
      <name>IANA Considerations</name>
      <t>This section details how the MoQ Streaming Format Type and new fields can be registered for inclusion in a catalog.</t>
      <section anchor="moq-streaming-format-type-registry">
        <name>MoQ Streaming Format Type Registry</name>
        <t>This document creates a new registry, "MoQ Streaming Format Type". This registry is managed by the IANA according to the RFC Required  policy of <xref target="RFC5226"/>. The Type value is 2 octets. The range is 0x0000-0xFFFF. The initial entry in the registry is:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">RFC</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">Reserved</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
          </tbody>
        </table>
        <t>No RFC is provided for the initial entry as it is reserved for Every MoQ streaming format draft normatively referencing this catalog format MUST register itself a unique type identifier. The type registry can be updated by incrementally expanding by allocating and reserving new type identifiers.</t>
      </section>
      <section anchor="common-catalog-field-registry">
        <name>Common Catalog Field Registry</name>
        <t>This document creates a new IANA registry for the Common Catalog fields.  The registry is called "MoQ Common Catalog Fields".  This registry is managed by the IANA according to the Specification Required policy of <xref target="RFC5226"/>. The initial entries in the registry are:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Descriptive Name</th>
              <th align="left">Field Name</th>
              <th align="left">Required</th>
              <th align="left">Location</th>
              <th align="left">JSON type</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Catalog version</td>
              <td align="left">version</td>
              <td align="left">yes</td>
              <td align="left">R</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Streaming format</td>
              <td align="left">streamingFormat</td>
              <td align="left">yes</td>
              <td align="left">RC</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Streaming format version</td>
              <td align="left">streamingFormatVersion</td>
              <td align="left">yes</td>
              <td align="left">RC</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Tracks</td>
              <td align="left">tracks</td>
              <td align="left">opt</td>
              <td align="left">R</td>
              <td align="left">Array</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Catalogs</td>
              <td align="left">catalogs</td>
              <td align="left">opt</td>
              <td align="left">R</td>
              <td align="left">Array</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Track namespace</td>
              <td align="left">namespace</td>
              <td align="left">opt</td>
              <td align="left">RTC</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Track name</td>
              <td align="left">name</td>
              <td align="left">yes</td>
              <td align="left">TC</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Packaging</td>
              <td align="left">packaging</td>
              <td align="left">yes</td>
              <td align="left">RT</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Track operation</td>
              <td align="left">operation</td>
              <td align="left">yes</td>
              <td align="left">RT</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Track label</td>
              <td align="left">label</td>
              <td align="left">opt</td>
              <td align="left">RT</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Render group</td>
              <td align="left">renderGroup</td>
              <td align="left">opt</td>
              <td align="left">RT</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Alternate group</td>
              <td align="left">altGroup</td>
              <td align="left">opt</td>
              <td align="left">RT</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Initialization data</td>
              <td align="left">initData</td>
              <td align="left">opt</td>
              <td align="left">RT</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Initialization track</td>
              <td align="left">initTrack</td>
              <td align="left">opt</td>
              <td align="left">RT</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Selection parameters</td>
              <td align="left">selectionParams</td>
              <td align="left">opt</td>
              <td align="left">RT</td>
              <td align="left">Object</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Dependencies</td>
              <td align="left">depends</td>
              <td align="left">opt</td>
              <td align="left">T</td>
              <td align="left">Array</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Temporal ID</td>
              <td align="left">temporalId</td>
              <td align="left">opt</td>
              <td align="left">T</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Spatial ID</td>
              <td align="left">spatialId</td>
              <td align="left">opt</td>
              <td align="left">T</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Codec</td>
              <td align="left">codec</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Mime type</td>
              <td align="left">mimeType</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Framerate</td>
              <td align="left">framerate</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Bitrate</td>
              <td align="left">bitrate</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Width</td>
              <td align="left">width</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Height</td>
              <td align="left">height</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Audio sample rate</td>
              <td align="left">samplerate</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Channel configuration</td>
              <td align="left">channelConfig</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Display width</td>
              <td align="left">displayWidth</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Display height</td>
              <td align="left">displayHeight</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">Number</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
            <tr>
              <td align="left">Language</td>
              <td align="left">lang</td>
              <td align="left">opt</td>
              <td align="left">S</td>
              <td align="left">String</td>
              <td align="left">https://datatracker.ietf.org/doc/draft-wilaw-moq-catalogformat/</td>
            </tr>
          </tbody>
        </table>
        <t>Any registration for a new Field name MUST provide the following information:</t>
        <ul spacing="normal">
          <li>
            <t>Descriptive Name - a descriptive name for the field.</t>
          </li>
          <li>
            <t>Field Name - the JSON field name, as will be used inside the JSON catalog.</t>
          </li>
          <li>
            <t>Required - the string "yes" if the field is required in all catalogs and "opt" if it is not.</t>
          </li>
          <li>
            <t>Location - a string defining the permissible locations for the field within the catalog:
            </t>
            <ul spacing="normal">
              <li>
                <t>'R' - the field is located in the Root of the JSON object.</t>
              </li>
              <li>
                <t>'RC' - the field may be located in either the Root or a Catalog object.</t>
              </li>
              <li>
                <t>'RTC' - the field may be located in either the Root, or a Track object or a Catalog object.</t>
              </li>
              <li>
                <t>'TC' - the field may be located in either a Track object or a Catalog object.</t>
              </li>
              <li>
                <t>'RT' - the field may be located in either the Root or a Track object.</t>
              </li>
              <li>
                <t>'T' - the field is located in a Track object.</t>
              </li>
              <li>
                <t>'S' - the field is located in the Selection Parameters object.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>JSON Type  - the JSON type of the field value, which must be one of String, Array, Number, Object or Boolean.</t>
          </li>
          <li>
            <t>Specification - a URL to the specification which defines the usage of the field within the catalog, per the Specification Required policy of <xref target="RFC5226"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <ul spacing="normal">
        <li>
          <t>Suhas Nandakumar &amp; Mo Zanaty - this <eref target="https://github.com/suhasHere/moq-drafts/tree/master/moq-catalog">draft</eref>.</t>
        </li>
        <li>
          <t>The IETF MoQ mailing lists and discussion groups.</t>
        </li>
      </ul>
    </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="29" month="May" year="2024"/>
          <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-04"/>
      </reference>
      <reference anchor="Framemarking">
        <front>
          <title>Video Frame Marking RTP Header Extension</title>
          <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
            <organization>Cisco Systems</organization>
          </author>
          <author fullname="Espen Berger" initials="E." surname="Berger">
            <organization>Cisco Systems</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco Systems</organization>
          </author>
          <date day="4" month="March" year="2024"/>
          <abstract>
            <t>   This document describes a Video Frame Marking RTP header extension
   used to convey information about video frames that is critical for
   error recovery and packet forwarding in RTP middleboxes or network
   nodes.  It is most useful when media is encrypted, and essential when
   the middlebox or node has no access to the media decryption keys.  It
   is also useful for codec-agnostic processing of encrypted or
   unencrypted media, while it also supports extensions for codec-
   specific information.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-avtext-framemarking-16"/>
      </reference>
      <reference anchor="WebCodecs" target="https://www.w3.org/TR/webcodecs/">
        <front>
          <title>WebCodecs</title>
          <author>
            <organization/>
          </author>
          <date year="2023" month="July"/>
        </front>
      </reference>
      <reference anchor="WEBCODECS-CODEC-REGISTRY" target="https://www.w3.org/TR/webcodecs-codec-registry/">
        <front>
          <title>WebCodecs Codec Registry</title>
          <author>
            <organization/>
          </author>
          <date year="2023" month="July"/>
        </front>
      </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>
            <organization/>
          </author>
          <date year="2020" month="March"/>
        </front>
      </reference>
      <reference anchor="JSON">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
          <date month="December" year="2017"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </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="LANG">
        <front>
          <title>Tags for Identifying Languages</title>
          <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
          <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
          <date month="September" year="2009"/>
          <abstract>
            <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange. 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="47"/>
        <seriesInfo name="RFC" value="5646"/>
        <seriesInfo name="DOI" value="10.17487/RFC5646"/>
      </reference>
      <reference anchor="MIME">
        <front>
          <title>Media Type Specifications and Registration Procedures</title>
          <author fullname="N. Freed" initials="N." surname="Freed"/>
          <author fullname="J. Klensin" initials="J." surname="Klensin"/>
          <author fullname="T. Hansen" initials="T." surname="Hansen"/>
          <date month="January" year="2013"/>
          <abstract>
            <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="13"/>
        <seriesInfo name="RFC" value="6838"/>
        <seriesInfo name="DOI" value="10.17487/RFC6838"/>
      </reference>
      <reference anchor="JSON-PATCH">
        <front>
          <title>JavaScript Object Notation (JSON) Patch</title>
          <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
          <date month="April" year="2013"/>
          <abstract>
            <t>JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JavaScript Object Notation (JSON) document; it is suitable for use with the HTTP PATCH method. The "application/json-patch+json" media type is used to identify such patch documents.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6902"/>
        <seriesInfo name="DOI" value="10.17487/RFC6902"/>
      </reference>
      <reference anchor="RFC5226">
        <front>
          <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
          <author fullname="T. Narten" initials="T." surname="Narten"/>
          <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
          <date month="May" year="2008"/>
          <abstract>
            <t>Many protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t>
            <t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t>
            <t>This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5226"/>
        <seriesInfo name="DOI" value="10.17487/RFC5226"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
