<?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.24 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mzanaty-moq-loc-05" category="info" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="media container">Low Overhead Media Container</title>
    <seriesInfo name="Internet-Draft" value="draft-mzanaty-moq-loc-05"/>
    <author fullname="Mo Zanaty">
      <organization>Cisco</organization>
      <address>
        <email>mzanaty@cisco.com</email>
      </address>
    </author>
    <author fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <author fullname="Peter Thatcher">
      <organization>Microsoft</organization>
      <address>
        <email>pthatcher@microsoft.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <abstract>
      <?line 40?>

<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) <xref target="MoQTransport"/>,
with the goal of it being a low-overhead format. It further defines the
LOC Streaming Format for the MOQ Common Catalog format <xref target="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>
  <middle>
    <?line 53?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification describes a low-overhead media container format for
encoded and encrypted audio and video media data, as well as a MOQ Common Catalog streaming format called LOC to describe such tracks.</t>
      <t>"Low-overhead" refers to minimal extra encapsulation as well as minimal application overhead when interfacing with WebCodecs <xref target="WebCodecs"/>.</t>
      <t>The container format description is specified for all audio and video codecs defined in the
WebCodecs Codec Registry <xref target="WEBCODECS-CODEC-REGISTRY"/>.
The audio and video payload bitstream is identical to the "internal data"
inside an EncodedAudioChunk and EncodedVideoChunk, respectively, specified in the registry.</t>
      <t>(Note: Do we need to support timed text tracks such as Web Video Text Tracks (WebVTT) ?)</t>
      <t>In addition to the media payloads, critical metadata is also specified for audio and video payloads.
(Note: Align with MOQT terminology of either "metadata" or "header".)</t>
      <t>A primary motivation is to align with media formats used in WebCodecs to minimize
extra encapsulation and application overhead when interfacing with WebCodecs.
Other container formats like CMAF or RTP would require
more extensive application overhead in format conversions, as well as larger encapsultion overhead
which may burden some use cases like low bitrate audio scenarios.</t>
      <t>This specification can also be used by applications outside the context of WebCodecs or a web browser.
While the media payloads are defined by referring to the "internal data" of an
EncodedAudioChunk or EncodedVideoChunk in the WebCodecs Codec Registry, this "internal data"
is the elementary bitstream format of codecs without any encapsulation. Referring to the WebCodecs
Codec Registry avoids duplicating it in an identical IANA registry.</t>
      <ul spacing="normal">
        <li>
          <t><xref target="payload"/> defines the core media payload formats.</t>
        </li>
        <li>
          <t><xref target="headers"/> defines the metadata associated with audio and video payloads.</t>
        </li>
        <li>
          <t><xref target="catalog"/> describes the LOC Streaming Format bindings to the MoQ Common Catalog format including examples.</t>
        </li>
      </ul>
      <section anchor="requirements-notation-and-conventions">
        <name>Requirements Notation and Conventions</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 <xref target="RFC2119"/>.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>Track, Group, Subgroup, Object, and their corresponding identifiers (ID or alias)
are defined in <xref target="MoQTransport"/> and used here to refer to those aspects of the
MOQT Object Model.</t>
      </section>
    </section>
    <section anchor="payload">
      <name>Payload Format</name>
      <t>The WebCodecs Codec Registry defines the contents of an EncodedAudioChunk and
EncodedVideoChunk for the audio and video codec formats in the registry. The
"internal data" in these chunks is used directly in this specification as
the "LOC Payload" bitstream. This "internal data" is the elementary bitstream format
of each codec without any encapsulation.</t>
      <section anchor="video">
        <name>Video Payload Format</name>
        <t>For video formats with multiple bitstream formats in the WebCodecs Registry, such as H.264/AVC or H.265/HEVC, the LOC Payload can use either the "canonical" format ("avc" or "hevc") often used in storage containers like MP4 / ISO BMFF, or the "annexB" format used in some non-MP4 applications. These formats differ in how they carry initialization and configuration information called parameter sets as well as how parts of a video frame are delimited with length prefixes or start codes.</t>
        <section anchor="parameter-sets-in-payload">
          <name>Parameter Sets In Payload</name>
          <t>Parameter sets can be sent in the bitstream payload before key frames, similar to "annexB" formats. Newer "canonical" formats such as "avc3" and "hev1" codec strings also support parameter sets in the bitstream payload or outside it in "extradata" metadata headers.</t>
        </section>
        <section anchor="parameter-sets-in-headers">
          <name>Parameter Sets in Headers</name>
          <t>Parameter sets can be sent in headers before key frames, as described in the Config LOC Header Extension <xref target="config"/>, similar to the original "canonical" formats such as "avc1" and "hvc1" codec strings. The Config contents are the "extradata" bytes defined by the corresponding codec specification, which map to the WebCodecs VideoDecoderConfig description property in the EncodedVideoChunkMetadata.</t>
        </section>
        <section anchor="length-prefixes-in-payload">
          <name>Length Prefixes in Payload</name>
          <t>A 4-byte length prefix can be sent before each NAL Unit, similar to "canonical" ("avc" or "hevc") formats. A length value of 1 should be interpreted as a start code rather than a length. The length is in network byte order, i.e. big endian, and SHOULD be 4 bytes long to disambiguate from start code prefixes. A length prefix less than 4 bytes long, which is uncommon, MAY be specified in the Config <xref target="config"/>.</t>
        </section>
        <section anchor="start-code-prefixes-in-payload">
          <name>Start Code Prefixes in Payload</name>
          <t>A 4-byte start code can be sent before each NAL Unit, similar to "annexB" formats. The start code value is 1 in network byte order, i.e. big endian, and SHOULD be 4 bytes long to disambiguate from length prefixes. A 3-byte start code, which is uncommon, MAY be used if the track never uses length prefixes or any Config <xref target="config"/>.</t>
        </section>
      </section>
      <section anchor="moq-object-mapping">
        <name>MOQ Object Mapping</name>
        <t>An application object when transported as a <xref target="MoQTransport"/> object is composed of
a MOQ Object Header, with optional Extensions, and a Payload. 
Media objects encoded using the container format defined in this
specification populate the MOQ Object Payload with the LOC Payload, and 
the MOQ Object Header Extensions with the LOC Header Extensions, as shown below.</t>
        <t>The LOC Payload is the "internal data" of an EncodedAudioChunk or EncodedVideoChunk.</t>
        <t>The LOC Header Extensions carry optional metadata related to the Payload.</t>
        <artwork type="ascii-art"><![CDATA[
<-----------  MOQ Object  ------------>
+----------+--------------+-----------+
|   MOQ    |  MOQ Header  |    MOQ    |
|  Header  |  Extensions  |  Payload  |
+----------+--------------+-----------+
                  |             |
                  |             |
           +--------------+-----------+
           |  LOC Header  |    LOC    |
           |  Extensions  |  Payload  |
           +--------------+-----------+

LOC Header Extensions = some MOQ Object Header Extensions
LOC Payload = all MOQ Object Payload
LOC Payload = "internal data" of EncodedAudio/VideoChunk

]]></artwork>
      </section>
      <section anchor="headers">
        <name>LOC Header Extensions</name>
        <t>The LOC Header Extensions carry optional metadata for the corresponding LOC Payload.
The LOC Header Extensions are contained within the MOQ Object Header Extensions.
This metadata provides necessary information for 
end subscribers, relays and other intermediaries
to perform their operations without accessing the media payload. For example, 
media switches can use this metadata to perform their media switching decisions
without accessing the payload which may be encrypted end-to-end
(from original publisher to end subscribers).</t>
        <t>The following sections define specific metadata as LOC Header Extensions and
register them in the IANA registry for MOQ Object Header Extensions.</t>
        <t>Other specifications can define other metadata as LOC Header Extensions and
register them in the same registry. Each extension must specify the following
information in the IANA registry.</t>
        <ul spacing="normal">
          <li>
            <t>Name: Short name for the metadata. (Not sent on the wire.)</t>
          </li>
          <li>
            <t>Description: Detailed description for the metadata. (Not sent on the wire.)</t>
          </li>
          <li>
            <t>ID: Identifier assigned by the registry. (varint)</t>
          </li>
          <li>
            <t>Length: Length of metadata Value in bytes. (varint if ID is even, omitted if ID is odd)</t>
          </li>
          <li>
            <t>Value: Value of metadata. (varint if ID is odd, Length bytes if ID is even)</t>
          </li>
        </ul>
        <section anchor="common-header-data">
          <name>Common Header Data</name>
          <section anchor="capture-timestamp">
            <name>Capture Timestamp</name>
            <ul spacing="normal">
              <li>
                <t>Name: Capture Timestamp</t>
              </li>
              <li>
                <t>Description: Wall-clock time in microseconds since the Unix epoch
when the encoded media frame was captured, encoded as a 64 bit unsigned integer
in network byte order (big endian).</t>
              </li>
              <li>
                <t>ID: 2 (IANA, please assign from the MOQ Header Extensions Registry)</t>
              </li>
              <li>
                <t>Length: 8 (bytes)</t>
              </li>
              <li>
                <t>Value: Varies</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="video-header-data">
          <name>Video Header Data</name>
          <section anchor="config">
            <name>Video Config</name>
            <ul spacing="normal">
              <li>
                <t>Name: Video Config</t>
              </li>
              <li>
                <t>Description: Video codec configuration "extradata", as defined by the corresponding codec specification, which maps to the WebCodecs VideoDecoderConfig description property in the EncodedVideoChunkMetadata.</t>
              </li>
              <li>
                <t>ID: 16 (IANA, please assign from the MOQ Header Extensions Registry)</t>
              </li>
              <li>
                <t>Length: Varies</t>
              </li>
              <li>
                <t>Value: Varies</t>
              </li>
            </ul>
          </section>
          <section anchor="video-frame-marking">
            <name>Video Frame Marking</name>
            <ul spacing="normal">
              <li>
                <t>Name: Video Frame Marking</t>
              </li>
              <li>
                <t>Description: Flags for video frames which are independent, discardable, or
base layer sync points, as well as temporal and spatial layer
identification, as defined in <xref target="Framemarking"/>.</t>
              </li>
              <li>
                <t>ID: 4 (IANA, please assign from the MOQ Header Extensions Registry)</t>
              </li>
              <li>
                <t>Length: Varies (1-3 bytes)</t>
              </li>
              <li>
                <t>Value: Varies</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="audio-header-data">
          <name>Audio Header Data</name>
          <section anchor="audio-level">
            <name>Audio Level</name>
            <ul spacing="normal">
              <li>
                <t>Name: Audio Level</t>
              </li>
              <li>
                <t>Description: The magnitude of the audio level of the corresponding audio frame
encoded in 7 bits as defined in section 3 of <xref target="RFC6464"/>.</t>
              </li>
              <li>
                <t>ID: 6 (IANA, please assign from the MOQ Header Extensions Registry)</t>
              </li>
              <li>
                <t>Length: 1 (byte)</t>
              </li>
              <li>
                <t>Value: Varies</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="catalog">
      <name>Catalog</name>
      <t>A catalog track provides information about tracks from a given publisher. A catalog is used by subscribers for consuming tracks and by publishers
to advertise and describe the tracks. The content of a catalog is opaque to the relays and may be end to end encrypted. A catalog describes the details of tracks such as Track IDs and corresponding media configuration details, for example, audio/video codec details.</t>
      <t>The LOC Streaming Format uses the MoQ Common Catalog Format <xref target="MoQCatalog"/> to describe the content being produced by a publisher.</t>
      <t>Per Sect 5.1 of <xref target="MoQCatalog"/>, this document registers an entry in the "MoQ Streaming Format Type" table, with the type value 2, the name "LOC Streaming Format", and the RFC XXX.</t>
      <t>Every LOC catalog track MUST declare a streaming format type (See Sect 3.2.1 of <xref target="MoQCatalog"/>) value of 2.</t>
      <t>Every LOC catalog track MUST declare a streaming format version (See Sect 3.2.1 of <xref target="MoQCatalog"/>) value of 1, which is the version described in this document.</t>
      <t>Every LOC catalog track MUST declare a packaging type (See Sect 3.2.9 of <xref target="MoQCatalog"/>) of "loc".</t>
      <t>The catalog track MUST have a track name of "catalog". A catalog object MAY be independent of other catalog objects or it MAY represent a delta update of a prior catalog object. The first catalog object published within a new group MUST be independent. A catalog object SHOULD only be published only when the availability of tracks changes.</t>
      <t>Each catalog update MUST be mapped to a discreet moq-transport object.</t>
      <section anchor="catalog-fields">
        <name>Catalog Fields</name>
        <t>The MOQ Common Catalog defines the required base fields and optional extensions.</t>
        <section anchor="video-ext">
          <name>Optional Extensions for Video</name>
          <t>The LOC Streaming Format allows the following optional extensions for video media.</t>
          <ul spacing="normal">
            <li>
              <t>temporalId: Identifies the temporal layer/sub-layer encoded, starting with 0 for the base layer, and increasing with higher temporal fidelity.</t>
            </li>
            <li>
              <t>spatialId: Identifies the spatial and quality layer encoded, starting with 0 for the base layer, and increasing with higher fidelity.</t>
            </li>
            <li>
              <t>depends: Identifies track dependencies for a given track, usually for video media with scalable layers in separate tracks.</t>
            </li>
            <li>
              <t>renderGroup: Identifies a group of time-aligned tracks which should be rendered simultaneously.</t>
            </li>
            <li>
              <t>selectionParams: Selection parameters for media quality, fidelity, etc.; see next section.</t>
            </li>
          </ul>
        </section>
        <section anchor="profile">
          <name>Selection Parameters for Video</name>
          <t>Each video track can have the following associated Selection Parameters.</t>
          <ul spacing="normal">
            <li>
              <t>codec: Codec information (including profile, level, tier, etc.), as defined by the codec registrations listed in <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>framerate: As defined in section 7.8 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>bitrate: As defined in section 7.7 and 7.8 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>width, height: As defined in section 7.8 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>displayWidth, displayheight: As defined in section 7.7 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="optional-extensions-for-audio">
          <name>Optional Extensions for Audio</name>
          <t>The LOC Streaming Format allows the following optional extensions for audio media.</t>
          <ul spacing="normal">
            <li>
              <t>renderGroup: Identifies a group of time-aligned tracks which should be rendered simultaneously.</t>
            </li>
            <li>
              <t>selectionParams: Selection parameters for media quality, fidelity, etc.; see next section.</t>
            </li>
          </ul>
        </section>
        <section anchor="audioprofile">
          <name>Selection Parameters for Audio</name>
          <t>Each audio track can have the following associated Selection Parameters.</t>
          <ul spacing="normal">
            <li>
              <t>codec: Codec information as defined by the codec registrations listed in <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>bitrate: As defined in section 7.7 and 7.8 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>samplerate: As defined in section 7.7 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>chanelConfig: As defined in section 7.7 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
            </li>
            <li>
              <t>lang: The primary language of the track, using standard tags from <xref target="RFC5646"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="catalog-examples">
        <name>Catalog Examples</name>
        <t>See section 3.4 of the MOQ Common Catalog <xref target="MoQCatalog"/>.</t>
      </section>
    </section>
    <section anchor="payload-encryption">
      <name>Payload Encryption</name>
      <t>When end to end encryption is supported, the encoded payload is encrypted
with symmetric keys derived from key establishment mechanisms, such as <xref target="MOQ-MLS"/>, and the payload itself is protected using mechanisms defined in <xref target="SecureObjects"/>.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section provides examples with details for building audio and video applications
using MOQ and LOC; more specifically, it provides information on:</t>
      <ul spacing="normal">
        <li>
          <t>Using a catalog to describe track information,</t>
        </li>
        <li>
          <t>Packaging media into LOC streaming format, and</t>
        </li>
        <li>
          <t>Mapping application media objects to the MOQT object model and transport.</t>
        </li>
      </ul>
      <t>The figure below shows the conceptual model for mapping media application data
to the MOQT object model and underlying QUIC transport.</t>
      <artwork type="ascii-art"><![CDATA[
+------------------------------+
|     Media Application        |
|    Audio, Video Frames       |
+---------------+--------------+
                |
                |
+---------------v--------------------+
|        MOQT Object Model           |
| Tracks, Groups, Subgroups, Objects |
+---------------+--------------------+
                |
                |
+---------------v--------------+
|             QUIC             |
|        Streams, Datagrams    |
+------------------------------+

]]></artwork>
      <section anchor="app-audio">
        <name>Application with one audio track</name>
        <t>An example is shown below for an Opus mono channel audio track at 48Khz.</t>
        <sourcecode type="psuedocode"><![CDATA[
codec: "opus"
bitrate: 24000
samplerate: 480000
channelConfig: "mono"
lang: "en"
]]></sourcecode>
        <t>When ready for publishing, each encoded audio chunk, say 10ms, represents a
MOQT Object. In this setup, there is one <tt>MOQT Object</tt>
per <tt>MOQT Group</tt>, where the <tt>GroupID</tt> in the object header is
increment by one for each encoded audio chunk and the <tt>ObjectID</tt>
is defaulted to value 0.</t>
        <t>These objects can be sent as QUIC streams or datagrams. When mapped to
QUIC datagrams, each object must fit entirely within a QUIC datagram, and
when mapped to QUIC Streams, each such unitary group is sent over
an individual unidirectional QUIC stream since there is just one <tt>SubGroup</tt> per
each <tt>MOQT Group</tt>.</t>
      </section>
      <section anchor="app-1-video">
        <name>Application with one single quality video track</name>
        <t>An example is shown below for an H.264 video track with 1280x720p resolution
and 30 fps frame rate at 1 Mbps bitrate.</t>
        <sourcecode type="psuedocode"><![CDATA[
codec: "avc3.42E01E"
bitrate: 1000000
framerate: 30
width: 1280
height: 720
]]></sourcecode>
        <t>When ready for publishing, each encoded video chunk is considered as input
to MOQT Object payload. If encrypted, the output of encryption will serve as
the object's payload. The <tt>GroupID</tt> is incremented by 1 at IDR Frame boundaries.
The <tt>ObjectID</tt> is increment by 1 for each encoded video frame, starting at 0
and resetting to 0 at the start of a new group. The first encoded video frame,
MOQT Object with <tt>ObjectID</tt> 0, shall be the Independent (IDR) frame and
the rest of the encoded video frames corresponds to dependent (delta) frames,
organized in the decode order.</t>
        <t>When mapping to QUIC for sending, one unidirectional QUIC stream is setup to
deliver all the encoded video chunks within a MOQT group.</t>
        <t>When decoding at the 'End Consumer', the objects from each of the QUIC
streams are fed in the GroupID then ObjectID order to the decoder for
the track.</t>
      </section>
      <section anchor="app-2-temp-video">
        <name>Application with single video track with temporal layers</name>
        <t>An example is shown below for an H.264 video track with 1280x720p resolution and
2 temporal layers at 30 fps and 60 fps frame rate.</t>
        <sourcecode type="psuedocode"><![CDATA[
codec: "avc3.42E01F"
bitrate: 1500000
framerate: 60
width: 1280
height: 720
]]></sourcecode>
        <t>When ready for publishing, each encoded video chunk is considered as input
to MOQT Object payload. If encrypted, the output of encryption will serve as
the object's payload. The <tt>GroupID</tt> is incremented by 1 at Independent (IDR)
frame  boundaries. Each MOQT group shall contain 2 SubGroups corresponding
to the 2 temporal layers as shown below:</t>
        <sourcecode type="psuedocode"><![CDATA[
Layer:0/30fps Subgroup: 0 ObjectID: even
Layer:1/60fps Subgroup: 1 ObjectID: odd
]]></sourcecode>
        <t>Within the MOQT group, <tt>ObjectID</tt> is increment by 1 for each encoded video
frame, starting at 0 and resetting to 0 at the start of a new group. The
first encoded video frame, MOQT Object with <tt>ObjectID</tt> 0, shall be the
Indepedent (IDR) frame and the rest of the encoded video frames corresponds to
dependent (delta) frames, organized in the decode order. When mapping to
QUIC for sending, one unidirectional QUIC stream is used per SubGroup,
thus resulting in 2 QUIC streams per MOQT group.</t>
        <t>When decoding at the 'End Consumer' for a given MOQT group, the objects
must be fed in the GroupID then ObjectID order. This implies that the consumer
media application needs to order objects across the SubGroup QUIC
streams.</t>
      </section>
      <section anchor="application-with-mutiple-dependent-video-tracks">
        <name>Application with mutiple dependent video tracks</name>
        <t>An example is shown below for an H.264 video track with 2 spatial qualities
at 360p and 720p each at 30 fps</t>
        <sourcecode type="psuedocode"><![CDATA[
Video Track 1
codec: "avc3.42E01E"
bitrate: 500000
framerate: 30
width: 640
height: 360

Video Track 2
codec: "svc1.56401F"
bitrate: 1000000
framerate: 30
width: 1280
height: 720

]]></sourcecode>
        <t>When ready for publishing, the mapping to the MOQT object model and
to underlying QUIC, follows the same procedures as described in
<xref target="app-1-video"/> for each video track.</t>
        <t>When decoding at the 'End Consumer' for a given MOQT group, the objects
must be fed in the GroupID then ObjectID order in the ascending quality
track order.</t>
        <t>For the example in the section, this would imply following
pattern when decoding group 5.</t>
        <sourcecode type="pseudocode"><![CDATA[
Track 1 Group 5 Object 0
Track 2 Group 5 Object 0
Track 1 Group 5 Object 1
Track 2 Group 5 Object 1
....
]]></sourcecode>
      </section>
      <section anchor="application-with-mutiple-dependent-video-tracks-with-dyadic-framerate-levels">
        <name>Application with mutiple dependent video tracks with dyadic framerate levels.</name>
        <t>An example is shown below for an H.264 video track with 2 spatial qualities
at 360p and 720p, however, the framerate between tracks vary dyadically.</t>
        <sourcecode type="pseudocode"><![CDATA[
Video Track 1
codec: "avc3.42E01E"
bitrate: 500000
framerate: 30
width: 640
height: 360

Video Track 2
codec: "svc1.56E01F"
bitrate: 1000000
framerate: 60
width: 1280
height: 720

]]></sourcecode>
        <t>When ready for publishing, the mapping to the MOQT object model and
to underlying QUIC, follows the same procedures as described in
<xref target="app-1-video"/> for each video track.</t>
        <t>When decoding at the 'End Consumer' for a given MOQT group, the objects
from across the tracks must be fed in the timestamp order to the decoder,
if no frame reordering is present in the encoding.</t>
        <t>If the encoding uses frame reordering, or if timestamp cannot be obtained, the
object to choose next shall follow the below formula.</t>
        <sourcecode type="pseudocode"><![CDATA[
Object Decode Order = ObjectID * multiplier + offset

multiplier = 2^(maxlayer-max(0,layer-1))
offset = 2^(maxlayer-layer) MOD multiplier

]]></sourcecode>
      </section>
      <section anchor="app-2-video">
        <name>Application with multiple simulcast qualities video tracks</name>
        <t>An example is shown below for an H.264 video track with 2 simulcast
spatial qualities at 360p and 720p each at 30 fps.</t>
        <sourcecode type="psuedocode"><![CDATA[
Video Track 1
codec: "avc3.42E01E"
bitrate: 500000
framerate: 30
width: 640
height: 360

Video Track 2
codec: "avc3.42E01F"
bitrate: 1000000
framerate: 30
width: 1280
height: 720

]]></sourcecode>
        <t>When ready for publishing, the mapping to the MOQT object model and
to underlying QUIC, follows the same procedures as described in
<xref target="app-1-video"/> for each video track.</t>
        <t>When decoding at the 'End Consumer', the objects from the QUIC stream
are fed in the GroupID then ObjectID order to the decoders setup for the
corresponding video tracks.</t>
      </section>
    </section>
    <section anchor="security-and-privacy-considerations">
      <name>Security and Privacy Considerations</name>
      <t>The metadata in LOC Header Extensions is visible to relays, since the
MOQ Object Header Extensions are often not encrypted end-to-end
(from original publisher to end subscribers) in common schemes.
In some cases, this may be an intentional design intent for proper relay
operation. In other cases, this may be unintentional or undesirable leaking
of the metadata to relays. Each metadata that is defined should consider
the security and privacy aspects of granting relays visibility to the metadata.
End-to-end encyption schemes should support end-to-end encryption of sensitive
metadata.</t>
      <t>The metadata defined and registered in this specification
(Capture Timestamp, Video Frame Marking, and Audio Level) may be sensitive
metadata that should be encrypted end-to-end. They are used by media switches,
which are not merely relays, and likely have access to some media keys.
This may require end-to-end encryption schemes with multiple different
security key contexts for payload versus metadata.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>The IANA registry for MOQ Object Header Extensions is populated with
the entries specified in section <xref target="headers"/>, referencing this specification.</t>
      <t>This document creates a new entry in the "MoQ Streaming Format" Registry (see <xref target="MoQTransport"/> Sect 8). The type value is 0x002, the name is "LOC 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="Luke Curley" initials="L." surname="Curley">
            <organization>Discord</organization>
          </author>
          <author fullname="Kirill Pugin" initials="K." surname="Pugin">
            <organization>Meta</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
            <organization>Google</organization>
          </author>
          <author fullname="Ian Swett" initials="I." surname="Swett">
            <organization>Google</organization>
          </author>
          <date day="3" month="March" year="2025"/>
          <abstract>
            <t>   This document defines the core behavior for Media over QUIC Transport
   (MOQT), a media transport protocol designed to operate over QUIC and
   WebTransport, which have similar functionality.  MOQT allows a
   producer of media to publish data and have it consumed via
   subscription by a multiplicity of endpoints.  It supports
   intermediate content distribution networks and is designed for high
   scale and low latency distribution.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-10"/>
      </reference>
      <reference anchor="MoQCatalog">
        <front>
          <title>Common Catalog Format for moq-transport</title>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Will Law" initials="W." surname="Law">
            <organization>Akamai</organization>
          </author>
          <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
            <organization>Cisco</organization>
          </author>
          <date day="30" month="November" year="2023"/>
          <abstract>
            <t>   This specification defines a Common Catalog specification for
   streaming formats implementing the MOQ Transport Protocol
   [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>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-wilaw-moq-catalogformat-02"/>
      </reference>
      <reference anchor="Framemarking">
        <front>
          <title>Video Frame Marking RTP Header Extension</title>
          <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
            <organization>Cisco Systems</organization>
          </author>
          <author fullname="Espen Berger" initials="E." surname="Berger">
            <organization>Cisco Systems</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco Systems</organization>
          </author>
          <date day="4" month="March" year="2024"/>
          <abstract>
            <t>   This document describes a Video Frame Marking RTP header extension
   used to convey information about video frames that is critical for
   error recovery and packet forwarding in RTP middleboxes or network
   nodes.  It is most useful when media is encrypted, and essential when
   the middlebox or node has no access to the media decryption keys.  It
   is also useful for codec-agnostic processing of encrypted or
   unencrypted media, while it also supports extensions for codec-
   specific information.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-avtext-framemarking-16"/>
      </reference>
      <reference anchor="SecureObjects">
        <front>
          <title>End-to-End Secure Objects for Media over QUIC Transport</title>
          <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
            <organization>Cisco</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Richard Barnes" initials="R." surname="Barnes">
            <organization>Cisco</organization>
          </author>
          <date day="28" month="February" year="2025"/>
          <abstract>
            <t>   This document describes an end-to-end authenticated encryption scheme
   for application objects intended to be delivered over Media over QUIC
   Transport (MOQT).  We reuse the SFrame scheme for authenticated
   encryption of media objects, while suppressing data that would be
   redundant between SFrame and MOQT, for an efficient on-the-wire
   representation.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-jennings-moq-secure-objects-02"/>
      </reference>
      <reference anchor="MOQ-MLS">
        <front>
          <title>Secure Group Key Agreement with MLS over MoQ</title>
          <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
            <organization>Cisco</organization>
          </author>
          <author fullname="Richard Barnes" initials="R." surname="Barnes">
            <organization>Cisco</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <date day="7" month="July" year="2024"/>
          <abstract>
            <t>   This specification defines a mechanism to use Message Layer Security
   (MLS) to provide end-to-end group key agreement for Media over QUIC
   (MOQ) applications.  Almost all communications are done via the MOQ
   transport.  MLS requires a small degree of synchronization, which is
   provided by a simple counter service.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-jennings-moq-e2ee-mls-01"/>
      </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="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="RFC6464">
        <front>
          <title>A Real-time Transport Protocol (RTP) Header Extension for Client-to-Mixer Audio Level Indication</title>
          <author fullname="J. Lennox" initials="J." role="editor" surname="Lennox"/>
          <author fullname="E. Ivov" initials="E." surname="Ivov"/>
          <author fullname="E. Marocco" initials="E." surname="Marocco"/>
          <date month="December" year="2011"/>
          <abstract>
            <t>This document defines a mechanism by which packets of Real-time Transport Protocol (RTP) audio streams can indicate, in an RTP header extension, the audio level of the audio sample carried in the RTP packet. In large conferences, this can reduce the load on an audio mixer or other middlebox that wants to forward only a few of the loudest audio streams, without requiring it to decode and measure every stream that is received. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6464"/>
        <seriesInfo name="DOI" value="10.17487/RFC6464"/>
      </reference>
      <reference anchor="RFC5646">
        <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>
    </references>
    <?line 592?>

<section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Cullen Jennings for suggestions and review.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
