<?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.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wilaw-moq-catalogformat-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title>Common Catalog Format for moq-transport</title>
    <seriesInfo name="Internet-Draft" value="draft-wilaw-moq-catalogformat-01"/>
    <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="2023" month="September" day="26"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>moq</keyword>
    <keyword>warp</keyword>
    <keyword>catalog</keyword>
    <abstract>
      <?line 64?>

<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://wilaw.github.io/catalog-format/draft-wilaw-moq-catalogformat.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wilaw-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/wilaw/catalog-format"/>.</t>
    </note>
  </front>
  <middle>
    <?line 69?>

<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">Catalog sequence number</td>
              <td align="left">sequence</td>
              <td align="left">yes</td>
              <td align="left">R</td>
              <td align="left">Number</td>
              <td align="left">
                <xref target="sequencenumber"/></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">Parent sequence number</td>
              <td align="left">parentSequence</td>
              <td align="left">opt</td>
              <td align="left">R</td>
              <td align="left">Array</td>
              <td align="left">
                <xref target="parentsequence"/></td>
            </tr>
            <tr>
              <td align="left">Track namespace</td>
              <td align="left">namespace</td>
              <td align="left">yes</td>
              <td align="left">RTC</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">TC</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">RT</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">RT</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">RT</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">RT</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">RT</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">RT</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">RT</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">RT</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, 'opt' indicates an optional field</t>
        <t>Location:</t>
        <ul spacing="normal">
          <li>'R' - the field is located in the Root of the JSON object.</li>
          <li>'RC' - the field may be located in either the Root or a Catalog object.</li>
          <li>'RTC' - the field may be located in either the Root, or a Track object or a Catalog object.</li>
          <li>'TC' - the field may be located in either a Track object or a Catalog object.</li>
          <li>'RT' - the field may be located in either the Root or a Track object.</li>
          <li>'T' - the field is located in a Track object.</li>
          <li>'S' - the field is located in the Selection Parameters object.</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="iana"/> 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="sequencenumber">
          <name>Catalog sequence number</name>
          <t>An integer indicating the sequence of this catalog object update. The first catalog object produced under a given name|namespace carries a sequence number of zero. Each successive update of that catalog, either as an independent or delta update, increments the sequence number by one.</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', 'TC' or 'RTC' 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 'RT', 'TC' or 'RTC' in Table 1.</t>
        </section>
        <section anchor="parentsequence">
          <name>Parent sequence number</name>
          <t>An optional integer specifying the catalog sequence number <xref target="sequencenumber"/> number from which this catalog represents a delta update. See <xref target="deltaupdate"/> for additional details. Absence of this parent sequence number indicates that this catalog is independent and completely describes the content available in the broadcast.</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"/>. The track namespace is required to be specified for each track object. 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.</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>Add: Indicates the track is added to the catalog and the consumers of the
 catalog may subscribe to the track.</li>
            <li>Delete: Indicates that media producer is no longer producing media on the
associated track. Subscribers SHOULD terminate their subscriptions.</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="deltaupdate">
        <name>Catalog Delta Updates</name>
        <t>A catalog 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 delta update to describe these small changes. Changes are described incrementally, meaning that a delta-update can itself depend on a previous delta update.</t>
        <t>The following rules MUST be followed in processing delta updates:</t>
        <ul spacing="normal">
          <li>If a catalog is received without the parent sequence number field <xref target="parentsequence"/> defined, then it is an independent catalog and no delta update processing is required.</li>
          <li>If a catalog is received with the parent sequence number field present, then the contents of the catalog MUST be parsed as if the catalog contents had been added to the state represented by the catalog whose sequence number matches the parent sequence number. Newer field definitions overwrite older field definitions.</li>
          <li>Track namespaces may not be changed across delta updates.</li>
          <li>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.</li>
          <li>Track names may not be changed across delta updates. To change a track name, remove the track and then add a new track with the new name and matching properties.</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,
  "sequence": 0,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "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.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "sequence": 0,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "namespace": "conference.example.com/conference123/alice",
  "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,
  "sequence": 0,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "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="delta-update-adding-a-track">
          <name>Delta 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[
{
  "sequence": 1,
  "parentSequence":0,
  "tracks": [
    {
      "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="delta-update-removing-a-track">
          <name>Delta update removing a track</name>
          <t>This example shows delta catalog update for a media producer removing a slide track from an established video conference</t>
          <sourcecode type="json"><![CDATA[
{
  "sequence": 2,
  "parentSequence":1,
  "tracks": [
    {
      "name": "slides",
      "operation": "delete"
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="delta-update-removing-all-tracks-and-terminating-the-broadcast">
          <name>Delta update removing all tracks and terminating the broadcast</name>
          <t>This example shows a delta catalog update for a media producer removing all tracks and terminating the broadcast.</t>
          <sourcecode type="json"><![CDATA[
{
  "sequence": 3,
  "parentSequence":2,
  "operation": "delete",
  "tracks": [{"name": "audio"},{"name": "video"}]
}

]]></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,
  "sequence": 0,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "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
    },
    {
      "altGroup": "video_1080",
      "selectionParams":{"codec":"avc1.640028","mimeType":"video/mp4","width":1920,"height":1080,"framerate":30,"bitrate":9914554},
      "initTrack":"init_video_1080",
      "altGroup": 1
    },
    {
      "altGroup": "video_720",
      "selectionParams":{"codec":"avc1.64001f","mimeType":"video/mp4","width":1280,"height":720,"framerate":30,"bitrate":4952892},
      "initTrack":"init_video_720",
      "altGroup": 1
    },
    {
      "altGroup": "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,
  "sequence": 0,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "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.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "sequence": 0,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "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":"AAAAGGZ0eXBpc282AAAAAWlzbzZkYXNoAAAARWZyZWVJc29NZWRpYSBGaWxlIFByb2R1Y2VkIHdpdGggR1BBQyAxLjAuMS1yZXYwLWdkODUzOGU4YS1tYXN0ZXIAAAADLW1vb3YAAABsbXZoZAAAAADfdnly33Z5cgABX5AAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA4bXZleAAAABBtZWhkAAAAAAPwOXgAAAAgdHJleAAAAAAAAAABAAAAAQAAA+gAAAAAAAEAAAAAAkd0cmFrAAAAXHRraGQAAAAB33Y1w992eXIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAABQAAAAIWAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAAAAAAD6AABAAAAAAG/bWRpYQAAACBtZGhkAAAAAN92NcPfdnlyAABdwAAAAAAVxwAAAAAAQGhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAAAfTWFpbmNvbmNlcHQgVmlkZW8gTWVkaWEgSGFuZGxlcgAAAVdtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADkc3RibAAAAJhzdHNkAAAAAAAAAAEAAACIYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAUAAhYASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADJhdmNDAU1AH//hABpnTUAfllKAoAi/NNQYGBkAAAMAAQAAAwAwhAEABWjpCTUgAAAAEHN0dHMAAAAAAAAAAAAAABBzdHNjAAAAAAAAAAAAAAAUc3RzegAAAAAAAAAAAAAAAAAAABBzdGNvAAAAAAAAAAAAAAAzaGRscgAAAAAAAAAAYWxpcwAAAAAAAAAAAAAAAEFsaWFzIERhdGEgSGFuZGxlcgAAAAA6dWR0YQAAABepVElNAAsAADAwOjAwOjAwOjAwAAAADqlUU0MAAgAAMjQAAAANqVRTWgABAAAx"
    },
    {
      "name": "audio_aac",
      "selectionParams":{"codec":"mp4a.40.5","mimeType":"audio/mp4","samplerate":48000,"channelConfig":"2","bitrate":67071},
"initData":"AAAAGGZ0eXBpc282AAAAAWlzbzZkYXNoAAAARWZyZWVJc29NZWRpYSBGaWxlIFByb2R1Y2VkIHdpdGggR1BBQyAxLjAuMS1yZXYwLWdkODUzOGU4YS1tYXN0ZXIAAAACzG1vb3YAAABsbXZoZAAAAADfdnly33Z5cgABX5AAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAA4bXZleAAAABBtZWhkAAAAAAPwSAAAAAAgdHJleAAAAAAAAAACAAAAAQAABAAAAAAAAgAAAAAAAeZ0cmFrAAAAXHRraGQAAAAB33Y1w992eXIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAGCbWRpYQAAACBtZGhkAAAAAN92NcPfdnlyAAC7gAAAAAAVxwAAAAAARGhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAAAjTWFpbmNvbmNlcHQgTVA0IFNvdW5kIE1lZGlhIEhhbmRsZXIAAAEWbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAACnc3RibAAAAFtzdHNkAAAAAAAAAAEAAABLbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAALuAAAAAAAAnZXNkcwAAAAADGQAAAAQRQBUABgAACBXTAATXtwUCEZAGAQIAAAAQc3R0cwAAAAAAAAAAAAAAEHN0c2MAAAAAAAAAAAAAABRzdHN6AAAAAAAAAAAAAAAAAAAAEHN0Y28AAAAAAAAAAAAAADNoZGxyAAAAAAAAAABhbGlzAAAAAAAAAAAAAAAAQWxpYXMgRGF0YSBIYW5kbGVyAAAAADp1ZHRhAAAAF6lUSU0ACwAAMDA6MDA6MDA6MDAAAAAOqVRTQwACAAAyNAAAAA2pVFNaAAEAADE="
    }
   ]
}
]]></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,
  "sequence": 0,
  "streamingFormat": 1,
  "streamingFormatVersion": "0.2",
  "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.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "sequence": 0,
  "catalogs": [
    {
      "name": "catalog-for-format-one",
      "namespace": "sports.example.com/games/08-08-23/live",
      "streamingFormat":1,
      "streamingFormatVersion": "0.2"
    },
    {
      "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="iana">
      <name>IANA Considerations</name>
      <t>This section details how the MoQ Streaming Format Type can be registered. The type registry can be updated by incrementally expanding the type space, i.e., by allocating and reserving new type identifiers. As per [RFC8126], this section details the creation of the "MoQ Streaming Format Type" registry.</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". The registry policy is "RFC Required". The Type value is 2 octets. The range is 0x0000-0xFFFF.The initial entry in the registry is:</t>
        <artwork><![CDATA[
     +--------+-------------+----------------------------------+
     | Type   |     Name    |            RFC                   |
     +--------+-------------+----------------------------------+
     | 0x0000 |   Reserved  |                                  |
     +--------+-------------+----------------------------------+
]]></artwork>
        <t>Every MoQ streaming format draft normatively referencing this catalog format MUST register itself a unique type identifier.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <ul spacing="normal">
        <li>Suhas Nandakumar &amp; Mo Zanaty - this <eref target="https://github.com/suhasHere/moq-drafts/tree/master/moq-catalog">draft</eref>.</li>
        <li>The IETF MoQ mailing lists and discussion groups.</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="MoQTransport">
        <front>
          <title>Media over QUIC Transport</title>
          <author fullname="Luke Curley" initials="L." surname="Curley">
            <organization>Twitch</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>
          <date day="5" month="July" year="2023"/>
          <abstract>
            <t>   This document defines the core behavior for Media over QUIC Transport
   (MOQT), a media transport protocol over QUIC.  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-00"/>
      </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="26" month="July" year="2023"/>
          <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-15"/>
      </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>
    </references>
  </back>
  <!-- ##markdown-source:
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
cN9u/X0AAA==

-->

</rfc>
