<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-msf-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>MOQT Streaming Format</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-msf-00"/>
    <author fullname="Will Law">
      <organization>Akamai</organization>
      <address>
        <email>wilaw@akamai.com</email>
      </address>
    </author>
    <date year="2026" month="January" day="19"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>MoQ</keyword>
    <keyword>MoQTransport</keyword>
    <keyword>MSF</keyword>
    <abstract>
      <?line 57?>

<t>This document specifies the MOQT Streaming Format, designed to operate on Media Over QUIC Transport.</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/msf/draft-ietf-moq-msf.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-moq-msf/"/>.
      </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/msf"/>.</t>
    </note>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>MOQT Streaming Format (MSF) is a media format designed to deliver LOC <xref target="LOC"/>
compliant media content over Media Over QUIC Transport (MOQT) <xref target="MoQTransport"/>.
MSF works by fragmenting the bitstream into objects that can be independently
transmitted. MSF leverages a catalog format to describe the output of the
original publisher. MSF specifies how content should be packaged and signaled,
defines how the catalog communicates the content, specifies prioritization
strategies for real-time and workflows for beginning and terminating broadcasts.
MSF also details how end-subscribers may perform adaptive bitrate switching.
MSF is targeted at real-time and interactive levels of live latency, as well as
VOD content.</t>
      <t>This document describes version 1 of the streaming format.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the conventions detailed in Section 1.3 of <xref target="RFC9000"/> when
describing the binary encoding.</t>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>The purpose of MSF is to provide an interoperable media streaming format
operating over <xref target="MoQTransport"/>. Interoperability implies that:</t>
      <ul spacing="normal">
        <li>
          <t>An original publisher can package incoming media content into tracks, prepare
a catalog and announce the availability of the content to an MOQT relay. Media
content refers to audio and video data, as well as ancillary data such as
captions, subtitles, accessibility and other timed-text data.</t>
        </li>
        <li>
          <t>An MOQT relay can process the announcement as well as cache and propagate the
tracks, both to other relays or to the final subscriber.</t>
        </li>
        <li>
          <t>A final subscriber can parse the catalog, request tracks, decode and render
the received media data.</t>
        </li>
      </ul>
      <t>MSF is intended to provide a format for delivering commercial media content. To
that end, the following features are within scope:</t>
      <ul spacing="normal">
        <li>
          <t>Video codecs - all codecs supported by <xref target="LOC"/></t>
        </li>
        <li>
          <t>Audio codecs  - all audio codecs supported by <xref target="LOC"/></t>
        </li>
        <li>
          <t>Catalog track - describes the availability and characteristics of content
produced by the original publisher.</t>
        </li>
        <li>
          <t>Timeline track - describes the relationship between MOQT Group and Object IDs
to media time.</t>
        </li>
        <li>
          <t>Token-based authorization and access control</t>
        </li>
        <li>
          <t>Captions + Subtitles - support for <xref target="WEBVTT"/> and <xref target="IMSC1"/> transmission</t>
        </li>
        <li>
          <t>Latency support across multiple regimes (thresholds are informative only and
describe the delay between the original publisher placing the content on the
wire and the final subscriber rendering it)</t>
        </li>
        <li>
          <t>Real-time - less than 500ms</t>
        </li>
        <li>
          <t>Interactive - between 500ms and 2500ms</t>
        </li>
        <li>
          <t>Standard  - above 2500ms</t>
        </li>
        <li>
          <t>VOD latency - content that was previously produced, is no longer live and is
available indefinitely.</t>
        </li>
        <li>
          <t>Content encryption</t>
        </li>
        <li>
          <t>ABR between time-synced tracks - subscribers may switch between tracks
at different quality levels in order to maximize visual or audio quality under
conditions of throughput variability.</t>
        </li>
        <li>
          <t>Capable of delivering interstitial advertising.</t>
        </li>
        <li>
          <t>Logs and analytics management - support for the reporting of client-side QoE
 and relay delivery actions.</t>
        </li>
      </ul>
      <t>Initial versions of MSF will prioritize basic features necessary to exercise
interoperability across delivery systems. Later versions will add commercially
necessary features.</t>
    </section>
    <section anchor="mediapackaging">
      <name>Media packaging</name>
      <t>MSF delivers LOC <xref target="LOC"/> packaged media bitstreams.</t>
      <section anchor="loc-packaging">
        <name>LOC packaging</name>
        <t>This specification references Low Overhead Container (LOC) <xref target="LOC"/> to define
how audio and video content is packaged. With this packaging mode, each
EncodedAudioChunk or EncodedVideoChunk sample is placed in a separate MOQT
Object. Samples that belong to the same Group of Pictures (GOP) <bcp14>MUST</bcp14> be placed
within the same MOQT Group.</t>
        <t>When LOC packaging is used for a track, the catalog packaging attribute
(<xref target="packaging"/>) <bcp14>MUST</bcp14> be present and it <bcp14>MUST</bcp14> be populated with a value of "loc".</t>
      </section>
      <section anchor="timealignment">
        <name>Time-alignment</name>
        <t>MSF Tracks <bcp14>MAY</bcp14> be time-aligned. Those that are, are subject to the following
requirements:</t>
        <ul spacing="normal">
          <li>
            <t>Tracks advertised in the catalog as belonging to a common render group <bcp14>MUST</bcp14>
be time-aligned.</t>
          </li>
          <li>
            <t>The render duration of the first media object of each equally numbered MOQT
Group, after decoding, <bcp14>MUST</bcp14> have overlapping presentation time.</t>
          </li>
        </ul>
        <t>A consequence of this restriction is that an MSF receiver <bcp14>SHOULD</bcp14> be able to
cleanly switch between time-aligned media tracks at group boundaries.</t>
      </section>
      <section anchor="contentprotection">
        <name>Content protection and encryption</name>
        <t>ToDo - content protection for LOC-packaged content.</t>
      </section>
    </section>
    <section anchor="catalog">
      <name>Catalog</name>
      <t>A Catalog is an MOQT Track that provides information about the other tracks being
produced by a MSF publisher. A Catalog is used by MSF 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>The catalog track <bcp14>MUST</bcp14> have a case-sensitive Track Name of "catalog".</t>
      <t>A catalog object <bcp14>MAY</bcp14> be independent of other catalog objects or it <bcp14>MAY</bcp14> represent
a delta update of a prior catalog object. The first catalog object published
within a new group <bcp14>MUST</bcp14> be independent.  A catalog object <bcp14>SHOULD</bcp14> be
published only when the availability of tracks changes.</t>
      <t>Each catalog update <bcp14>MUST</bcp14> be mapped to an MOQT Object.</t>
      <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 <bcp14>MUST</bcp14> provide all mandatory fields. A
producer <bcp14>MAY</bcp14> add additional fields to the ones described in this draft. Custom
field names <bcp14>MUST NOT</bcp14> collide with field names described in this draft. The order
of field names within the JSON document is not important.</t>
        <t>A parser <bcp14>MUST</bcp14> 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">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">MSF version</td>
              <td align="left">version</td>
              <td align="left">
                <xref target="msfversion"/></td>
            </tr>
            <tr>
              <td align="left">Delta update</td>
              <td align="left">deltaUpdate</td>
              <td align="left">
                <xref target="deltaupdate"/></td>
            </tr>
            <tr>
              <td align="left">Add tracks</td>
              <td align="left">addTracks</td>
              <td align="left">
                <xref target="addtracks"/></td>
            </tr>
            <tr>
              <td align="left">Remove tracks</td>
              <td align="left">removeTracks</td>
              <td align="left">
                <xref target="removetracks"/></td>
            </tr>
            <tr>
              <td align="left">Clone tracks</td>
              <td align="left">cloneTracks</td>
              <td align="left">
                <xref target="clonetracks"/></td>
            </tr>
            <tr>
              <td align="left">Generated at</td>
              <td align="left">generatedAt</td>
              <td align="left">
                <xref target="generatedat"/></td>
            </tr>
            <tr>
              <td align="left">Is Complete</td>
              <td align="left">isComplete</td>
              <td align="left">
                <xref target="iscomplete"/></td>
            </tr>
            <tr>
              <td align="left">Tracks</td>
              <td align="left">tracks</td>
              <td align="left">
                <xref target="tracks"/></td>
            </tr>
            <tr>
              <td align="left">Track namespace</td>
              <td align="left">namespace</td>
              <td align="left">
                <xref target="tracknamespace"/></td>
            </tr>
            <tr>
              <td align="left">Track name</td>
              <td align="left">name</td>
              <td align="left">
                <xref target="trackname"/></td>
            </tr>
            <tr>
              <td align="left">Packaging</td>
              <td align="left">packaging</td>
              <td align="left">
                <xref target="packaging"/></td>
            </tr>
            <tr>
              <td align="left">Event timeline type</td>
              <td align="left">eventType</td>
              <td align="left">
                <xref target="eventtype"/></td>
            </tr>
            <tr>
              <td align="left">Is Live</td>
              <td align="left">isLive</td>
              <td align="left">
                <xref target="islive"/></td>
            </tr>
            <tr>
              <td align="left">Target latency</td>
              <td align="left">targetLatency</td>
              <td align="left">
                <xref target="targetlatency"/></td>
            </tr>
            <tr>
              <td align="left">Track role</td>
              <td align="left">role</td>
              <td align="left">
                <xref target="trackrole"/></td>
            </tr>
            <tr>
              <td align="left">Track label</td>
              <td align="left">label</td>
              <td align="left">
                <xref target="tracklabel"/></td>
            </tr>
            <tr>
              <td align="left">Render group</td>
              <td align="left">renderGroup</td>
              <td align="left">
                <xref target="rendergroup"/></td>
            </tr>
            <tr>
              <td align="left">Alternate group</td>
              <td align="left">altGroup</td>
              <td align="left">
                <xref target="altgroup"/></td>
            </tr>
            <tr>
              <td align="left">Initialization data</td>
              <td align="left">initData</td>
              <td align="left">
                <xref target="initdata"/></td>
            </tr>
            <tr>
              <td align="left">Dependencies</td>
              <td align="left">depends</td>
              <td align="left">
                <xref target="dependencies"/></td>
            </tr>
            <tr>
              <td align="left">Temporal ID</td>
              <td align="left">temporalId</td>
              <td align="left">
                <xref target="temporalid"/></td>
            </tr>
            <tr>
              <td align="left">Spatial ID</td>
              <td align="left">spatialId</td>
              <td align="left">
                <xref target="spatialid"/></td>
            </tr>
            <tr>
              <td align="left">Codec</td>
              <td align="left">codec</td>
              <td align="left">
                <xref target="codec"/></td>
            </tr>
            <tr>
              <td align="left">Mime type</td>
              <td align="left">mimeType</td>
              <td align="left">
                <xref target="mimetype"/></td>
            </tr>
            <tr>
              <td align="left">Framerate</td>
              <td align="left">framerate</td>
              <td align="left">
                <xref target="framerate"/></td>
            </tr>
            <tr>
              <td align="left">Timescale</td>
              <td align="left">timescale</td>
              <td align="left">
                <xref target="timescale"/></td>
            </tr>
            <tr>
              <td align="left">Bitrate</td>
              <td align="left">bitrate</td>
              <td align="left">
                <xref target="bitrate"/></td>
            </tr>
            <tr>
              <td align="left">Width</td>
              <td align="left">width</td>
              <td align="left">
                <xref target="width"/></td>
            </tr>
            <tr>
              <td align="left">Height</td>
              <td align="left">height</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">
                <xref target="audiosamplerate"/></td>
            </tr>
            <tr>
              <td align="left">Channel configuration</td>
              <td align="left">channelConfig</td>
              <td align="left">
                <xref target="channelconfiguration"/></td>
            </tr>
            <tr>
              <td align="left">Display width</td>
              <td align="left">displayWidth</td>
              <td align="left">
                <xref target="displaywidth"/></td>
            </tr>
            <tr>
              <td align="left">Display height</td>
              <td align="left">displayHeight</td>
              <td align="left">
                <xref target="displayheight"/></td>
            </tr>
            <tr>
              <td align="left">Language</td>
              <td align="left">lang</td>
              <td align="left">
                <xref target="language"/></td>
            </tr>
            <tr>
              <td align="left">Parent name</td>
              <td align="left">parentName</td>
              <td align="left">
                <xref target="parentname"/></td>
            </tr>
            <tr>
              <td align="left">Track duration</td>
              <td align="left">trackDuration</td>
              <td align="left">
                <xref target="trackduration"/></td>
            </tr>
          </tbody>
        </table>
        <t>Table 2 defines the allowed locations for these fields within the document</t>
        <table>
          <thead>
            <tr>
              <th align="left">Location</th>
              <th align="left">Allowed locations for the field</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">R</td>
              <td align="left">The Root of the JSON object</td>
            </tr>
            <tr>
              <td align="left">T</td>
              <td align="left">Track object</td>
            </tr>
          </tbody>
        </table>
        <section anchor="msfversion">
          <name>MSF version</name>
          <t>Location: R    Required: Yes    JSON Type: Number</t>
          <t>Specifies the version of MSF referenced by this catalog. There is no guarantee
that future catalog versions are backwards compatible and field definitions and
interpretation may change between versions. A subscriber <bcp14>MUST NOT</bcp14> attempt to
parse a catalog version which it does not understand.</t>
        </section>
        <section anchor="deltaupdate">
          <name>Delta update</name>
          <t>Location: R    Required: Optional    JSON Type: Boolean</t>
          <t>A Boolean that if true indicates that this catalog object represents a delta
(or partial) update. A delta update has a restricted set of fields and special
processing rules - see <xref target="deltaupdates"/>. This value <bcp14>SHOULD NOT</bcp14> be added to a
catalog if it is false.</t>
        </section>
        <section anchor="addtracks">
          <name>Add tracks</name>
          <t>Location: R    Required: Optional    JSON Type: Array</t>
          <t>Indicates a delta processing instruction to add new tracks. The value of this
field is an Array of track objects <xref target="trackobject"/>.</t>
        </section>
        <section anchor="removetracks">
          <name>Remove tracks</name>
          <t>Location: R    Required: Optional    JSON Type: Array</t>
          <t>Indicates a delta processing instruction to remove new tracks. The value of this
field is an Array of track objects <xref target="trackobject"/>. Each track object <bcp14>MUST</bcp14> include
a Track Name <xref target="trackname"/> field, <bcp14>MAY</bcp14> include a Track Namespace <xref target="tracknamespace"/>
field and <bcp14>MUST NOT</bcp14> hold any other fields.</t>
        </section>
        <section anchor="clonetracks">
          <name>Clone tracks</name>
          <t>Location: R    Required: Optional    JSON Type: Array</t>
          <t>Indicates a delta processing instruction to clone new tracks from previously declared
tracks. The value of this field is an Array of track objects <xref target="trackobject"/>. Each
track object <bcp14>MUST</bcp14> include a Parent Name <xref target="parentname"/> field.</t>
        </section>
        <section anchor="generatedat">
          <name>Generated at</name>
          <t>Location: R    Required: Optional    JSON Type: Number</t>
          <t>The wallclock time at which this catalog instance was generated, expressed as the
number of milliseconds that have elapsed since January 1, 1970 (midnight UTC/GMT).
This field <bcp14>SHOULD NOT</bcp14> be included if the isLive field is false.</t>
        </section>
        <section anchor="iscomplete">
          <name>Is Complete</name>
          <t>Location: R    Required: Optional    JSON Type: Boolean</t>
          <t>Issued once a previously live broadcast is complete. This is a commitment that all
tracks are complete, no new tracks will be added and no new content will be
published. This field <bcp14>MUST NOT</bcp14> be included if it is FALSE. This field <bcp14>MUST NOT</bcp14> be
removed from a catalog once it has been added.</t>
        </section>
        <section anchor="tracks">
          <name>Tracks</name>
          <t>Location: R    Required: Yes    JSON Type: Array</t>
          <t>An array of track objects <xref target="trackobject"/>.</t>
        </section>
        <section anchor="trackobject">
          <name>Tracks object</name>
          <t>A track object is JSON Object containing a collection of fields whose location
is specified 'T' in Table 2.</t>
        </section>
        <section anchor="tracknamespace">
          <name>Track namespace</name>
          <t>Location: T    Required: Optional    JSON Type: String</t>
          <t>The name space under which the track name is defined. See section 2.3 of
<xref target="MoQTransport"/>. The track namespace is optional. If it is not declared within
a track, then each track <bcp14>MUST</bcp14> inherit the namespace of the catalog track. A
namespace declared in a track object overwrites any inherited name space.</t>
        </section>
        <section anchor="trackname">
          <name>Track name</name>
          <t>Location: T    Required: Yes   JSON Type: String</t>
          <t>A string defining the name of the track. See section 2.3 of <xref target="MoQTransport"/>.
Within the catalog, track names <bcp14>MUST</bcp14> be unique per namespace.</t>
        </section>
        <section anchor="packaging">
          <name>Packaging</name>
          <t>Location: T    Required: Yes   JSON Type: String</t>
          <t>A string defining the type of payload encapsulation. Allowed values are strings
as defined in Table 3.</t>
          <t>Table 3: Allowed packaging values</t>
          <table>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">LOC</td>
                <td align="left">loc</td>
                <td align="left">See RFC XXXX</td>
              </tr>
              <tr>
                <td align="left">Media Timeline</td>
                <td align="left">mediatimeline</td>
                <td align="left">See <xref target="mediatimelinetrack"/></td>
              </tr>
              <tr>
                <td align="left">Event Timeline</td>
                <td align="left">eventtimeline</td>
                <td align="left">See <xref target="eventtimelinetrack"/></td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="eventtype">
          <name>Event timeline type</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A String defining the type &amp; structure of the data contained within the data
field of the Event timeline track. Types are defined by the application provider
and are not centrally registered. Implementers are encouraged to use a unique
naming scheme, such as Reverse Domain Name Notation, to avoid naming collisions.
This field is required if the <xref target="packaging"/> value is "eventtimeline".
This field <bcp14>MUST NOT</bcp14> be used if the packaging value is not "eventtimeline".</t>
        </section>
        <section anchor="trackrole">
          <name>Track role</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the role of content carried by the track. Specified roles
are described in Table 4. These role values are case-sensitive.</t>
          <t>This role field <bcp14>MAY</bcp14> be used in conjunction with the Mimetype <xref target="mimetype"/> to
fully describe the content of the track.</t>
          <t>Table 4: Reserved track roles</t>
          <table>
            <thead>
              <tr>
                <th align="left">Role</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">audiodescription</td>
                <td align="left">An audio description for visually impaired users</td>
              </tr>
              <tr>
                <td align="left">video</td>
                <td align="left">Visual content</td>
              </tr>
              <tr>
                <td align="left">audio</td>
                <td align="left">Audio content</td>
              </tr>
              <tr>
                <td align="left">mediatimeline</td>
                <td align="left">An MSF media timeline <xref target="mediatimelinetrack"/></td>
              </tr>
              <tr>
                <td align="left">eventtimeline</td>
                <td align="left">An MSF event timeline <xref target="eventtimelinetrack"/></td>
              </tr>
              <tr>
                <td align="left">caption</td>
                <td align="left">A textual representation of the audio track</td>
              </tr>
              <tr>
                <td align="left">subtitle</td>
                <td align="left">A transcription of the spoken dialogue</td>
              </tr>
              <tr>
                <td align="left">signlanguage</td>
                <td align="left">A visual track for hearing impaired users.</td>
              </tr>
            </tbody>
          </table>
          <t>Custom roles <bcp14>MAY</bcp14> be used as long as they do not collide with the specified roles.</t>
        </section>
        <section anchor="islive">
          <name>Is Live</name>
          <t>Location: T    Required: Yes  JSON Type: Boolean</t>
          <t>True if new Objects will be added to the track.
False if no new Objects will be added to the track. This is sent under two
possible conditions:
* the publisher of a previously live track has ended the track.
* the track is Video-On-Demand (VOD) and was never live.</t>
        </section>
        <section anchor="targetlatency">
          <name>Target latency</name>
          <t>Location: T    Required: Optional  JSON Type: Number</t>
          <t>The target latency in milliseconds. Target latency is defined as the offset in
wallclock time between when content was encoded and when it is displayed to the
end user. For example, if a frame of video is encoded at 10:08:32.638 UTC and the
target latency is 5000, then that frame should be rendered to the end-user at
10:08:37.638 UTC. This field <bcp14>MUST NOT</bcp14> be included if isLive is FALSE. All tracks
belonging to the same render group <bcp14>MUST</bcp14> have identical target latencies. All tracks
belonging to the same alternate group <bcp14>MUST</bcp14> have identical target latencies. If this
field is absent from the track definition, then the player <bcp14>MAY</bcp14> choose the latency
with which it renders the content.</t>
        </section>
        <section anchor="tracklabel">
          <name>Track label</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <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>Location: T    Required: Optional   JSON Type: Number</t>
          <t>An integer specifying a group of tracks which are designed to be rendered
together. Tracks with the same group number <bcp14>SHOULD</bcp14> be rendered simultaneously,
are 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>Location: T    Required: Optional   JSON Type: Number</t>
          <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 <bcp14>MUST</bcp14> have matching 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>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string holding Base64 <xref target="BASE64"/> encoded initialization data for the track.</t>
        </section>
        <section anchor="dependencies">
          <name>Dependencies</name>
          <t>Location: T    Required: Optional   JSON Type: Array</t>
          <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>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number identifying the temporal layer/sub-layer encoding of the track,
starting with 0 for the base layer, and increasing by 1 for the next higher
temporal fidelity.</t>
        </section>
        <section anchor="spatialid">
          <name>Spatial ID</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number identifying the spatial layer encoding of the track, starting with 0
for the base layer, and increasing by 1 for the next higher fidelity.</t>
        </section>
        <section anchor="codec">
          <name>Codec</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <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"/>.</t>
        </section>
        <section anchor="mimetype">
          <name>Mimetype</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the mime type <xref target="MIME"/> of the track.</t>
        </section>
        <section anchor="framerate">
          <name>Framerate</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number defining the video framerate of the track, expressed as frames per
second.</t>
        </section>
        <section anchor="timescale">
          <name>Timescale</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>The number of time units that pass per second.</t>
        </section>
        <section anchor="bitrate">
          <name>Bitrate</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number defining the bitrate of track, expressed in bits per second.</t>
        </section>
        <section anchor="width">
          <name>Width</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the encoded width of the video frames in pixels.</t>
        </section>
        <section anchor="height">
          <name>Height</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the encoded height of the video frames in pixels.</t>
        </section>
        <section anchor="audiosamplerate">
          <name>Audio sample rate</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>The number of audio frame samples per second. This property <bcp14>SHOULD</bcp14> only
accompany audio codecs.</t>
        </section>
        <section anchor="channelconfiguration">
          <name>Channel configuration</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string specifying the audio channel configuration. This property <bcp14>SHOULD</bcp14> 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>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the intended display width of the track content in pixels.</t>
        </section>
        <section anchor="displayheight">
          <name>Display height</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the intended display height of the track content in pixels.</t>
        </section>
        <section anchor="language">
          <name>Language</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the dominant language of the track. The string <bcp14>MUST</bcp14> be one of
the standard Tags for Identifying Languages as defined by <xref target="LANG"/>.</t>
        </section>
        <section anchor="parentname">
          <name>Parent name</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the parent track name <xref target="trackname"/> to be cloned. This field
<bcp14>MUST</bcp14> only be included inside a Clone tracks <xref target="clonetracks"/> object.</t>
        </section>
        <section anchor="trackduration">
          <name>Track duration</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>The duration of the track expressed in integer milliseconds. This field <bcp14>MUST NOT</bcp14>
be included if the isLive <xref target="islive"/> field value is true.</t>
        </section>
      </section>
      <section anchor="deltaupdates">
        <name>Delta updates</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 delta update to describe these changes.
Changes are described incrementally, meaning that a delta update can itself modify
a prior delta update.</t>
        <t>A restricted set of operations are allowed with each delta update:
* Add a new track that has not previously been declared.
* Add a new track by cloning a previously declared track.
* Remove a track that has been previously declared.</t>
        <t>The following rules are to be followed in constructing and processing delta updates:</t>
        <ul spacing="normal">
          <li>
            <t>A delta update <bcp14>MUST</bcp14> include the Delta Update <xref target="deltaupdate"/> field set to true.</t>
          </li>
          <li>
            <t>A delta update catalog <bcp14>MUST</bcp14> contain at least one instance of Add tracks
<xref target="addtracks"/>, Remove tracks <xref target="removetracks"/> or Clone Tracks <xref target="clonetracks"/>
fields and <bcp14>MAY</bcp14> contain more. It <bcp14>MUST NOT</bcp14> contain an instance of a Tracks
<xref target="tracks"/> field or an MSF version <xref target="msfversion"/> field.</t>
          </li>
          <li>
            <t>The Add, Delete and Clone operations are applied sequentially in the order they
are declared in the document. 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.</t>
          </li>
          <li>
            <t>A Cloned track inherits all the attributes of the track defined by the Parent Name
<xref target="parentname"/>, except the Track Name which <bcp14>MUST</bcp14> be new. Attributes redefined
in the cloning Object overwrite inherited values.</t>
          </li>
          <li>
            <t>The tuple of Track Namespace and Track Name defines a fixed set of Track attributes
which <bcp14>MUST NOT</bcp14> be modified after being declared. To modify any attribute, a new
track with a different Namespace|Name tuple is created by Adding or Cloning and then
the old track is removed.</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 a catalog for a media producer capable of sending LOC
packaged, time-aligned audio and video tracks.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "1080p-video",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 2000,
      "role": "video",
      "renderGroup": 1,
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "framerate":30,
      "bitrate":1500000
    },
    {
      "name": "audio",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 2000,
      "role": "audio",
      "renderGroup": 1,
      "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.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks":[
    {
      "name": "hd",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 1500,
      "role": "video",
      "codec":"av01",
      "width":1920,
      "height":1080,
      "bitrate":5000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "md",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 1500,
      "role": "video",
      "codec":"av01",
      "width":720,
      "height":640,
      "bitrate":3000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "sd",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 1500,
      "role": "video",
      "codec":"av01",
      "width":192,
      "height":144,
      "bitrate":500000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "audio",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 1500,
      "role": "audio",
      "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,
  "generatedAt": 1746104606044,
  "tracks":[
    {
      "name": "480p15",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.01M.10.0.110.09",
      "width":640,
      "height":480,
      "bitrate":3000000,
      "framerate":15
    },
    {
      "name": "480p30",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.04M.10.0.110.09",
      "width":640,
      "height":480,
      "bitrate":3000000,
      "framerate":30,
      "depends": ["480p15"]
    },
    {
      "name": "1080p15",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.05M.10.0.110.09",
      "width":1920,
      "height":1080,
      "bitrate":3000000,
      "framerate":15,
      "depends":["480p15"]
    },

    {
      "name": "1080p30",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "bitrate":5000000,
      "framerate":30,
      "depends": ["480p30", "1080p15"]
    },
    {
      "name": "audio",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "audio",
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="delta-update-adding-two-tracks">
          <name>Delta update  - adding two tracks</name>
          <t>This example shows the catalog delta update for a media producer adding
two tracks to an established video conference. One track is newly declared,
the other is cloned from a previous track.</t>
          <sourcecode type="json"><![CDATA[
{
  "deltaUpdate": true,
  "generatedAt": 1746104606044,
  "addTracks": [
      {
        "name": "slides",
        "isLive": true,
        "role": "video",
        "codec": "av01.0.08M.10.0.110.09",
        "width": 1920,
        "height": 1080,
        "framerate": 15,
        "bitrate": 750000,
        "renderGroup": 1
      }
   ],
   "cloneTracks": [
      {
        "parentName": "video-1080",
        "name": "video-720",
        "width":1280,
        "height":720,
        "bitrate":600000
      }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="delta-update-removing-tracks">
          <name>Delta update removing tracks</name>
          <t>This example shows a delta update for a media producer removing two tracks
from an established video conference.</t>
          <sourcecode type="json"><![CDATA[
{
  "deltaUpdate": true,
  "generatedAt": 1746104606044,
  "removeTracks": [{"name": "video"},{"name": "slides"}]
}
]]></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,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "1080p-video",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "renderGroup": 1,
      "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",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "role": "audio",
      "renderGroup": 1,
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="time-aligned-vod-audiovideo-tracks">
          <name>Time-aligned VOD Audio/Video Tracks</name>
          <t>This example shows catalog for a media producer offering VOD (video on-demand)
non-live content. The content is LOC packaged, and includes time-aligned audio
and video tracks.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "tracks": [
    {
      "name": "video",
      "namespace": "movies.example.com/assets/boy-meets-girl-season3/episode5",
      "packaging": "loc",
      "isLive": false,
      "trackDuration": 8072340,
      "renderGroup": 1,
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "framerate":30,
      "bitrate":1500000
    },
    {
      "name": "audio",
      "namespace": "movies.example.com/assets/boy-meets-girl-season3/episode5",
      "packaging": "loc",
      "isLive": false,
      "trackDuration": 8072340,
      "renderGroup": 1,
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="media-timeline-and-event-timeline">
          <name>Media timeline and Event timeline</name>
          <t>This example shows a catalog for a media producer capable of sending LOC
packaged, time-aligned audio and video tracks, along with a Media Timeline
which describes the history of those tracks and an Event Timeline providing
synchronized data.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "history",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "mediatimeline",
      "mimetype": "application/json",
      "depends": ["1080p-video","audio"]
    },
    {
      "name": "identified-objects",
      "namespace": "another-provider/time-synchronized-data",
      "packaging": "eventtimeline",
      "eventType": "com.ai-extraction/appID/v3",
      "mimetype": "application/json",
      "depends": ["1080p-video"]
    },
    {
      "name": "1080p-video",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 2000,
      "role": "video",
      "renderGroup": 1,
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "framerate":30,
      "bitrate":1500000
    },
    {
      "name": "audio",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "targetLatency": 2000,
      "role": "audio",
      "renderGroup": 1,
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="terminating-a-live-broadcast">
          <name>Terminating a live broadcast</name>
          <t>This example shows catalog for a media producer terminating a previously
live broadcast containing a video and an audio track.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "isComplete": true,
  "tracks": []
}

]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="media-transmission">
      <name>Media transmission</name>
      <t>The MOQT Groups and MOQT Objects need to be mapped to MOQT Streams. Irrespective
of the <xref target="mediapackaging"/> in place, each MOQT Object <bcp14>MUST</bcp14> be mapped to a new
MOQT Stream.</t>
      <section anchor="group-numbering">
        <name>Group numbering</name>
        <t>The Group ID of the first Group published in a track at application startup <bcp14>MUST</bcp14> be
a unique integer that will not repeat in the future. One approach to achieve this
is to set the initial Group ID to the creation time of the first Object in the
group, represented as the number of milliseconds since the Unix epoch, rounded to
the nearest millisecond. This ensures that republishing the same track in the
future, such as after a loss of connectivity or an encoder restart, will not result
in smaller or duplicate Group IDs for the same track name. Note that this method
does not prevent duplication if more than 1000 groups are published per second.</t>
        <t>Each subsequent Group ID <bcp14>MUST</bcp14> increase by 1.</t>
        <t>If a publisher is able to maintain state across a republish, it <bcp14>MUST</bcp14> signal the gap
in Group IDs using the MOQT Prior Group ID Gap Extension header.</t>
      </section>
    </section>
    <section anchor="mediatimelinetrack">
      <name>Media Timeline track</name>
      <t>The media timeline track provides data about the previously published groups and their
relationship to wallclock time and media time. Media timeline tracks allow players to
seek to precise points behind the live head in a live broadcast, or for random access
in a VOD asset. Media timeline tracks are optional. Multiple media timeline tracks
can exist inside a catalog.</t>
      <section anchor="mediatimelinepayload">
        <name>Media Timeline track payload</name>
        <t>A media timeline track is a JSON <xref target="JSON"/> document. This document <bcp14>MAY</bcp14> be compressed
using GZIP <xref target="GZIP"/>. The document contains an array of records. Each record consists of
an array of three required items, whose ordinal position defines their type:</t>
        <ul spacing="normal">
          <li>
            <t>The first item holds the media presentation timestamp, expressed as a JSON Number.
This value <bcp14>MUST</bcp14> match the media presentation timestamp, rounded to the nearest
millisecond, of the first media sample in the referenced Object</t>
          </li>
          <li>
            <t>The second item holds the MOQT Location of the entry, defined as a tuple of the MOQT
Group ID and MOQT Object ID, and expressed as a JSON Array of Numbers, where the
first number is the Group ID and the second number is the Object ID.</t>
          </li>
          <li>
            <t>The third time holds the wallclock time at which the media was encoded, defined as
the number of milliseconds that have elapsed since January 1, 1970
(midnight UTC/GMT) and expressed as a JSON Number. For VOD assets, or if the
wallclock time is not known, the value <bcp14>SHOULD</bcp14> be 0.</t>
          </li>
        </ul>
        <t>An example media timeline is shown below:</t>
        <sourcecode type="json"><![CDATA[
[
  [0, [0,0], 1759924158381],
  [2002, [1,0], 1759924160383],
  [4004, [2,0], 1759924162385],
  [6006, [3,0], 1759924164387],
  [8008, [4,0], 1759924166389]
]
]]></sourcecode>
      </section>
      <section anchor="media-timeline-catalog-requirements">
        <name>Media Timeline Catalog requirements</name>
        <t>A media timeline track <bcp14>MUST</bcp14> carry a 'type' identifier in the Catalog with a value
of "mediatimeline". A media timeline track <bcp14>MUST</bcp14> carry a 'depends' attribute which
contains an array of all track names to which the media timeline track applies.
The mime-type of a media timeline track <bcp14>MUST</bcp14> be specified as "application/json".</t>
      </section>
      <section anchor="media-timeline-track-updating">
        <name>Media Timeline track updating</name>
        <t>The publisher <bcp14>MUST</bcp14> publish an independent media timeline in the first MOQT Object
of each MOQT Group of a media timeline track. The publisher <bcp14>MAY</bcp14> publish incremental
updates in the second and subsequent Objects within each Group. Incremental updates
only contain media timeline records since the last media timeline Object.</t>
      </section>
    </section>
    <section anchor="eventtimelinetrack">
      <name>Event Timeline track</name>
      <t>The event timeline track provides a mechanism to associate ad-hoc event metadata with
the broadcast. Use-case examples include live sports score data, GPS coordinates of race
cars, SAP-types for media segments or active speaker notifications in web conferences.</t>
      <t>To allow the client to bind this event metadata with the broadcast content described by
the media timeline track, each event record <bcp14>MUST</bcp14> contain a reference to one of
Media PTS, wallclock time or MOQT Location.</t>
      <t>Event timeline tracks are optional. Multiple event timeline tracks can exist inside a
catalog. The type &amp; structure of the data contained within each event timeline track is
declared in the catalog, to facilitate client selection and parsing.</t>
      <section anchor="eventtimelineformat">
        <name>Event Timeline data format</name>
        <t>An event timeline track is a JSON <xref target="JSON"/> document. This document <bcp14>MAY</bcp14> be compressed
using GZIP <xref target="GZIP"/>. The document contains an array of records. Each record consists of
a JSON Object containing the following required fields:</t>
        <ul spacing="normal">
          <li>
            <t>An index reference, which <bcp14>MUST</bcp14> be either 't' for wallclock time, 'l' for Location or
'm' for Media PTS. Only one of these index values may be used within each record. Event
timelines <bcp14>SHOULD</bcp14> use the same index reference type for each record. The definitions for
wallclock time, Location and Media PTS are identical to those defined for media timeline
payload <xref target="mediatimelinepayload"/>. Wallclock time and media PTS values are JSON Number,
while Location value is an Array of Numbers, where the first item represents the MOQT
GroupID and the second item the MOQT Object ID.</t>
          </li>
          <li>
            <t>A 'data' Object, whose structure is defined by the <xref target="eventtype"/> value declared for this
track in the Catalog.</t>
          </li>
        </ul>
      </section>
      <section anchor="event-timeline-catalog-requirements">
        <name>Event Timeline Catalog requirements</name>
        <t>An event timeline track <bcp14>MUST</bcp14> carry:</t>
        <ul spacing="normal">
          <li>
            <t>a <xref target="packaging"/> attribute with a value of "eventtimeline".</t>
          </li>
          <li>
            <t>a <xref target="dependencies"/> attribute which contains an array of all track names to which the event
timeline track applies.</t>
          </li>
          <li>
            <t>a <xref target="mimetype"/> attribute with a value of "application/json".</t>
          </li>
          <li>
            <t>an <xref target="eventtype"/> attribute declaring the type &amp; structure of data contained in the
event timeline track.</t>
          </li>
        </ul>
      </section>
      <section anchor="event-timeline-track-updating">
        <name>Event Timeline track updating</name>
        <t>The publisher <bcp14>MUST</bcp14> publish an independent event timeline in the first MOQT Object
of each MOQT Group of an event timeline track. The publisher <bcp14>MAY</bcp14> publish incremental
updates in the second and subsequent Objects within each Group. Incremental updates
only contain event timeline records since the last event timeline Object.</t>
      </section>
      <section anchor="event-timeline-track-examples">
        <name>Event timeline track examples</name>
        <section anchor="event-timeline-track-with-wallclock-time-indexing">
          <name>Event timeline track with wallclock time indexing</name>
          <t>This example shows how sports scores and game information might be defined in a live
sports broadcast.</t>
          <sourcecode type="json"><![CDATA[
[
    {
        "t": 1756885678361,
        "data": {
            "status": "in_progress",
            "period": 1,
            "clock": "12:00",
            "homeScore": 0,
            "awayScore": 0,
            "lastPlay": "Game Start"
        }
    },
    {
        "t": 1756885981542,
        "data": {
            "status": "in_progress",
            "period": 1,
            "clock": "09:25",
            "homeScore": 2,
            "awayScore": 0,
            "lastPlay": "Team A: #23 makes 2-pt jump shot"
        }
    }
]

]]></sourcecode>
        </section>
        <section anchor="event-timeline-track-with-moqt-location-indexing">
          <name>Event timeline track with MOQT Location indexing</name>
          <t>This example shows drone GPS coordinates synched with the start of each Group.</t>
          <sourcecode type="json"><![CDATA[
[
    {
        "l": [0,0],
        "data": [47.1812,8.4592]
    },
    {
        "l": [1,0],
        "data": [47.1662,8.5155]
    }
]

]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="workflow">
      <name>Workflow</name>
      <section anchor="initiating-a-broadcast">
        <name>Initiating a broadcast</name>
        <t>An MSF publisher <bcp14>MUST</bcp14> publish a catalog track object before publishing any media
track objects.</t>
      </section>
      <section anchor="ending-a-live-broadcast">
        <name>Ending a live broadcast</name>
        <t>After publishing a catalog and defining tracks carrying live content, an original
publisher can deliver a deterministic signal to all subscribers that the broadcast
is complete by taking the following steps:</t>
        <ul spacing="normal">
          <li>
            <t>Send a SUBSCRIBE_DONE (See MOQT Sect 8.1.2) message for all active tracks using
status code 0x2 Track Ended.</t>
          </li>
          <li>
            <t>If the live stream is being converted instantly to a VOD asset, then publish an
independent (non-delta) catalog update which, for each track, sets isLive <xref target="islive"/>
to FALSE and adds a track duration <xref target="trackduration"/> field.</t>
          </li>
          <li>
            <t>If the live stream is being terminated permanently without conversion to VOD, then
publish an independent catalog update which signals isComplete <xref target="iscomplete"/> as
TRUE and which contains an empty Tracks <xref target="tracks"/> field.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>ToDo</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document creates a new entry in the "MoQ Streaming Format" Registry
(see <xref target="MoQTransport"/> Sect 8).  The type value is 0x001, the name is
"MOQT Streaming Format" and the RFC is XXX.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="MoQTransport">
        <front>
          <title>Media over QUIC Transport</title>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
            <organization>Google</organization>
          </author>
          <author fullname="Ian Swett" initials="I." surname="Swett">
            <organization>Google</organization>
          </author>
          <author fullname="Alan Frindell" initials="A." surname="Frindell">
            <organization>Meta</organization>
          </author>
          <date day="28" month="April" year="2025"/>
          <abstract>
            <t>   This document defines the core behavior for Media over QUIC Transport
   (MOQT), a media transport protocol designed to operate over QUIC and
   WebTransport, which have similar functionality.  MOQT allows a
   producer of media to publish data and have it consumed via
   subscription by a multiplicity of endpoints.  It supports
   intermediate content distribution networks and is designed for high
   scale and low latency distribution.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-11"/>
      </reference>
      <reference anchor="LOC">
        <front>
          <title>Low Overhead Media Container</title>
          <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
            <organization>Cisco</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Peter Thatcher" initials="P." surname="Thatcher">
            <organization>Microsoft</organization>
          </author>
          <date day="3" month="March" year="2025"/>
          <abstract>
            <t>   This specification describes a media container format for encoded and
   encrypted audio and video media data to be used primarily for
   interactive Media over QUIC Transport (MOQT) [MoQTransport], with the
   goal of it being a low-overhead format.  It further defines the LOC
   Streaming Format for the MOQ Common Catalog format [MoQCatalog] for
   publishers to annouce and describe their LOC tracks and for
   subscribers to consume them.  The specification also provides
   examples to aid application developers for building media
   applications over MOQT and intending to use LOC as the streaming
   format.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mzanaty-moq-loc-05"/>
      </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="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="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="RFC9000">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="RFC4180">
        <front>
          <title>Common Format and MIME Type for Comma-Separated Values (CSV) Files</title>
          <author fullname="Y. Shafranovich" initials="Y." surname="Shafranovich"/>
          <date month="October" year="2005"/>
          <abstract>
            <t>This RFC documents the format used for Comma-Separated Values (CSV) files and registers the associated MIME type "text/csv". This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4180"/>
        <seriesInfo name="DOI" value="10.17487/RFC4180"/>
      </reference>
      <reference anchor="GZIP">
        <front>
          <title>GZIP file format specification version 4.3</title>
          <author fullname="P. Deutsch" initials="P." surname="Deutsch"/>
          <date month="May" year="1996"/>
          <abstract>
            <t>This specification defines a lossless compressed data format that is compatible with the widely used GZIP utility. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="1952"/>
        <seriesInfo name="DOI" value="10.17487/RFC1952"/>
      </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="2024" month="September"/>
        </front>
      </reference>
      <reference anchor="WEBVTT" target="https://www.w3.org/TR/webvtt1/">
        <front>
          <title>World Wide Web Consortium (W3C), WebVTT: The Web Video Text Tracks Format</title>
          <author>
            <organization/>
          </author>
          <date year="2019" month="April"/>
        </front>
      </reference>
      <reference anchor="IMSC1" target="https://www.w3.org/TR/ttml-imsc1/">
        <front>
          <title>W3C, TTML Profiles for Internet Media Subtitles and Captions 1.0 (IMSC1)</title>
          <author>
            <organization/>
          </author>
          <date year="2016" month="April"/>
        </front>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 1203?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <ul spacing="normal">
        <li>
          <t>the MoQ Workgroup and mailing lists.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>The following persons where the co-authors of the individual draft (draft-law-moq-warpstreamingformat) this document is based on:</t>
      <ul spacing="normal">
        <li>
          <t>Luke Curley</t>
        </li>
        <li>
          <t>Victor Vasiliev</t>
        </li>
        <li>
          <t>Suhas Nandakumar</t>
        </li>
        <li>
          <t>Kirill Pugin</t>
        </li>
        <li>
          <t>Will Law</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19a3fbRpbgd/yKWuqcjZ0maVIvy9qZnpEl2a0Z23IsJu6e
nPQciCyKiEGADYCS2bT7t+xv2V+291UvAJRlW0knZ9fnJDZRwK2qW7fuu271
er2oSqpUH6rOy/PvRuqiKnQ8T7Ir9Swv5nHVicZxpa/yYnWokmyaR9EkH2fx
HD6YFPG06iW6mvbm+d9683LaGwyicnk5T8oyybNqtYC3zk5Hz5TaUnFa5tBJ
kk30QsP/sqrTVZ2zo6fwV17Av96MnnWibDm/1MVhNIFOD6NxnpU6K5floaqK
pY6uD9VOFMMAAdDRYpEmMDboqFRxNlFvdJz2Rslcd6KbvHh3VeTLBc5KT5JY
nV/rQn33/dlxJ3qnV9A+OYxUT73Mv5O/RkWclYu8qOj3xbPoWmdLGIJSGwEp
xTPsvIXuEGPP8U18Po+TFJ4DVv4d0dPPiyt8HBfjGTyeVdWiPHz0CN/CR8m1
7pvXHuGDR5dFflPqR/D9I/zuKqlmy0sG2Lu5egSYxscp4KisfIDU3OfX+0mO
Lz5qrlJ/Vs3TThTFy2qWF4gHAKbUdJmmvLBvkzRVL+IbegyDirPk74ToQ3X0
LoZhU4PmWd7AJG7+Pabn/XE+j6KMCAdmhdjzUQvE0Dvp1wZUmdbecAjvvzg/
9l+b/z3O4mpFb6b5uDfYg3eeHl2c7u8eqjfPjnf3dw/gyX9cnL+i3wfbe08Q
ytGr5/R7b393H0dx9vKUfu8f7OD78K8ng8Hg0PyDH+0OD/gR/gMePf+vs9f0
e/hkbxt+vz19enx+cnp80aO/em9On59djN785ZDwYbbRW315nE/0uFT0F9Dl
VVJWxapDbxFhqwu9qDRSutoebO/y53FxpQFFZjFvbm76NztEE6M3j2705ZiA
9uivXiFAH/GwfhiNaoPIi3QCCznRCsYDI8lKQHGynKsHb3eOH3bxKX6kRjN+
4wd4NVcj/b5SsF7jd6Xd/27UR4siSWHEwyd3G/F1VQ1xgGcvL46HtfHtHHfV
aPTyhXpd5NMk1aWaAhc4yypdZLpSvNkulpf0AW/w43jBu33YH6gHBPRh6/D2
7zC8CvZAL5mXYxhhhIzN0mwU9Xo9FV8CeuNxFUWjWVIqYHrLOfAsVS70OJkm
MKQKMNfKMrtqosvkKtMTVeUqX+gChqfyTNU4iLIboy+dzpPJJNVRtIWIKPLJ
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

-->

</rfc>
