<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-loc-03" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="media-container">Low Overhead Media Container</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-loc-03"/>
    <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/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>LOC</keyword>
    <keyword>MOQ</keyword>
    <keyword>MOQT</keyword>
    <keyword>QUIC</keyword>
    <keyword>media</keyword>
    <abstract>
      <?line 55?>

<t>This specification describes a Low Overhead Media Container (LOC) format for
encoded and encrypted audio and video media data to be used
primarily for interactive Media over QUIC Transport (MOQT).
It may be used in the MOQT Streaming Format (MSF) specification,
which defines a catalog format
for publishers to declare and describe their LOC tracks and for
subscribers to consume them. Examples are also provided
for building media applications using LOC and MOQT.</t>
    </abstract>
    <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/loc/draft-ietf-moq-loc.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-moq-loc/"/>.
      </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/loc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 67?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification describes a low-overhead media container (LOC) format for
encoded and encrypted audio and video media data.</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 called properties are also specified for audio and video payloads.</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, called properties, associated with audio and video payloads.</t>
        </li>
        <li>
          <t><xref target="encryption"/> defines the usage of end-to-end encrypted LOC payloads.</t>
        </li>
        <li>
          <t><xref target="examples"/> provides examples with details for building audio and video applications
using LOC over MOQ.</t>
        </li>
      </ul>
      <section anchor="requirements-notation-and-conventions">
        <name>Requirements Notation and Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
      <section anchor="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 Video Config LOC Property <xref target="vconfig"/>, similar to the original "canonical" formats such as "avc1" and "hvc1" codec strings. The Video 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 <bcp14>SHOULD</bcp14> be interpreted as a start code rather than a length. The length is in network byte order, i.e. big endian, and <bcp14>SHOULD</bcp14> be 4 bytes long to disambiguate from start code prefixes. A length prefix less than 4 bytes long, which is uncommon, <bcp14>MAY</bcp14> be specified in the Video Config <xref target="vconfig"/>.</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 <bcp14>SHOULD</bcp14> be 4 bytes long to disambiguate from length prefixes. A 3-byte start code, which is uncommon, <bcp14>MAY</bcp14> be used if the track never uses length prefixes or any Video Config <xref target="vconfig"/>.</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 Properties, and a Payload.
Media objects encoded using the container format defined in this
specification populate the MOQ Object Properties with the LOC Public Properties,
and populate the MOQ Object Payload with LOC Private Properties
followed by the LOC Payload, as shown below.</t>
        <t>The LOC Payload is the "internal data" of an EncodedAudioChunk or EncodedVideoChunk.</t>
        <t>The LOC Public and Private Properties carry optional metadata related to the Payload,
where Public Properties are visible to relays while Private Properties can be encypted
end to end with the Payload.</t>
        <artwork type="ascii-art"><![CDATA[
<-----------  MOQ Object  ------------>
+----------+--------------+-----------+
|   MOQ    |  MOQ Header  |    MOQ    |
|  Header  |  Properties  |  Payload  |
+----------+--------------+-----------+
                  |             |
                  |             |
           +--------------+---------------------------+
           |  LOC Public  |  LOC Private  |    LOC    |
           |  Properties  |  Properties   |  Payload  |
           +--------------+---------------+-----------+

LOC Public Properties                = some MOQ Object Properties
LOC Private Properties + LOC Payload = all  MOQ Object Payload
LOC Payload = "internal data" of EncodedAudio/VideoChunk

]]></artwork>
      </section>
      <section anchor="headers">
        <name>LOC Properties</name>
        <t>The LOC Public and Private Properties carry optional metadata for the corresponding LOC Payload.
The LOC Public Properties are contained within the MOQ Object Properties.
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).
The LOC Private Properties are contained within the MOQ Object Payload,
and are not intended to be processed by relays.</t>
        <t>The following sections define specific metadata as LOC Public and Private Properties and
register them in the IANA registry for MOQ Object Properties.</t>
        <t>Other specifications can define other metadata as LOC Public and Private Properties and
register them in the same registry. Each property 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 (not sent on the wire)</t>
          </li>
          <li>
            <t>ID: Identifier assigned by the registry (vi64)</t>
          </li>
          <li>
            <t>Length: Length of metadata Value in bytes (vi64 if ID is odd, omitted if ID is even)</t>
          </li>
          <li>
            <t>Value: Value of metadata (vi64 if ID is even, Length bytes if ID is odd)</t>
          </li>
        </ul>
        <section anchor="common-properties">
          <name>Common Properties</name>
          <section anchor="timestamp">
            <name>Timestamp</name>
            <ul spacing="normal">
              <li>
                <t>Name: Timestamp</t>
              </li>
              <li>
                <t>Description: Timestamp of the encoded media frame encoded as vi64.
The unit of the timestamp is determined by the Timescale property
<xref target="timescale"/>. If no timescale property is present,
the timestamp is interpreted as wall-clock time in microseconds since
the Unix epoch.</t>
              </li>
              <li>
                <t>ID: 0x0A</t>
              </li>
              <li>
                <t>Length: Omitted (ID is even)</t>
              </li>
              <li>
                <t>Value: vi64 (1-9 bytes)</t>
              </li>
            </ul>
          </section>
          <section anchor="timescale">
            <name>Timescale</name>
            <ul spacing="normal">
              <li>
                <t>Name: Timescale</t>
              </li>
              <li>
                <t>Description: The number of Timestamp units per second, encoded as vi64.
This property defines the unit for interpreting timestamp values in the
Timestamp property. Common values include 1000000 for microseconds,
48000 for audio at 48kHz sample rate, 90000 for video at 90kHz clock rate.
When this property is present, the Timestamp represents media time rather than
wall-clock time. The epoch or anchor point for the timestamp is
application-defined. If this property is not present, timestamps default
to microseconds since Unix epoch.</t>
              </li>
              <li>
                <t>ID: 0x08</t>
              </li>
              <li>
                <t>Length: Omitted (ID is even)</t>
              </li>
              <li>
                <t>Value: vi64 (1-9 bytes)</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="video-properties">
          <name>Video Properties</name>
          <section anchor="vconfig">
            <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: 0x0D (IANA, please assign from the MOQ Properties 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="RFC9626"/>, encoded with a length prefix.</t>
              </li>
              <li>
                <t>ID: 0x09 (IANA, please assign from the MOQ Properties Registry)</t>
              </li>
              <li>
                <t>Length: Varies (1-4 bytes)</t>
              </li>
              <li>
                <t>Value: Varies</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="audio-properties">
          <name>Audio Properties</name>
          <section anchor="aconfig">
            <name>Audio Config</name>
            <ul spacing="normal">
              <li>
                <t>Name: Audio Config</t>
              </li>
              <li>
                <t>Description: Audio codec configuration, as defined by the
corresponding codec specification, which maps to the WebCodecs AudioDecoderConfig
description property in the EncodedAudioChunkMetadata.</t>
              </li>
              <li>
                <t>ID: 0x0F (IANA, please assign from the MOQ Properties Registry)</t>
              </li>
              <li>
                <t>Length: Varies</t>
              </li>
              <li>
                <t>Value: Varies</t>
              </li>
            </ul>
          </section>
          <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
as well as a voice activity indicator as defined in section 3 of <xref target="RFC6464"/>,
encoded in the least significant 8 bits of a vi64.</t>
              </li>
              <li>
                <t>ID: 0x0C (IANA, please assign from the MOQ Properties Registry)</t>
              </li>
              <li>
                <t>Length: Omitted (ID is even)</t>
              </li>
              <li>
                <t>Value: vi64 (1-2 bytes to encode values 0x00-0xFF)</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="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 anchor="secure-objects-integration">
        <name>Secure Objects Integration</name>
        <t><xref target="SecureObjects"/> defines a comprehensive framework for end-to-end encryption of
MOQT objects. When using Secure Objects with LOC, the following considerations apply:</t>
        <section anchor="key-identification">
          <name>Key Identification</name>
          <t>The Secure Object Key ID property (type 0x2 in <xref target="SecureObjects"/>) <bcp14>MUST</bcp14> be included
as an immutable property to identify the keying material used for encryption.
This property is authenticated but not encrypted, allowing relays to forward
objects without decryption while ensuring subscribers can identify the correct
decryption key.</t>
        </section>
        <section anchor="immutable-properties">
          <name>Immutable Properties</name>
          <t>LOC Properties that should be immutable but visible to relays <bcp14>SHOULD</bcp14> be encoded
as Immutable Properties as defined in <xref target="MoQTransport"/> to ensure they cannot be
modified by relays and are included in the authenticated associated data (AAD)
during encryption. This specification does not define any Immutable Properties,
but other specifications may define some for use with LOC.</t>
        </section>
        <section anchor="private-properties">
          <name>Private Properties for Sensitive Metadata</name>
          <t>Some LOC metadata may be sensitive and should not be visible to relays.
<xref target="SecureObjects"/> defines a Private properties mechanism (type 0xA) that allows
metadata to be encrypted alongside the payload.</t>
          <t>The following LOC properties <bcp14>MAY</bcp14> be carried as Private properties when end-to-end
confidentiality is required:</t>
          <ul spacing="normal">
            <li>
              <t>Timestamp and Timescale - reveals timing information about the source</t>
            </li>
            <li>
              <t>Audio Level - reveals voice activity and audio characteristics</t>
            </li>
            <li>
              <t>Video Frame Marking - reveals encoding structure details</t>
            </li>
            <li>
              <t>Video Config - reveals encoding configuration details</t>
            </li>
          </ul>
          <t>When using Private properties:</t>
          <ol spacing="normal" type="1"><li>
              <t>The LOC property is encoded as a key-value pair within the Private
properties payload</t>
            </li>
            <li>
              <t>The Private properties are concatenated with the media payload before
encryption</t>
            </li>
            <li>
              <t>Upon decryption, the receiver extracts the Private properties and
reconstructs the LOC metadata</t>
            </li>
          </ol>
          <t>This approach allows sensitive metadata to remain confidential from relays
while still being available to authorized end subscribers.</t>
        </section>
        <section anchor="cipher-suite-requirements">
          <name>Cipher Suite Requirements</name>
          <t>Implementations using LOC with Secure Objects <bcp14>MUST</bcp14> support the
AES_128_GCM_SHA256_128 cipher suite (0x0004). Other cipher suites defined
in <xref target="SecureObjects"/> <bcp14>MAY</bcp14> be used based on application requirements for
authentication tag size versus bandwidth overhead.</t>
        </section>
        <section anchor="aad-construction">
          <name>AAD Construction</name>
          <t>The authenticated associated data (AAD) for AEAD encryption includes:</t>
          <ul spacing="normal">
            <li>
              <t>Key ID</t>
            </li>
            <li>
              <t>Group ID and Object ID</t>
            </li>
            <li>
              <t>Track namespace and name</t>
            </li>
            <li>
              <t>Serialized immutable properties</t>
            </li>
          </ul>
          <t>This binding ensures objects cannot be replayed across different tracks
or contexts.</t>
        </section>
      </section>
    </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 MSF catalog <xref target="MoQCatalog"/> 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 Properties is visible to relays, since the
MOQ Object Properties 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.</t>
      <section anchor="protecting-sensitive-metadata">
        <name>Protecting Sensitive Metadata</name>
        <t>The metadata defined and registered in this specification
(Timestamp, Timescale, Config, Video Frame Marking, and Audio Level) may be sensitive
metadata that should be encrypted end-to-end. Applications requiring
confidentiality of this metadata <bcp14>SHOULD</bcp14> use the Private properties mechanism
described in <xref target="private-properties"/> to encrypt sensitive metadata alongside
the payload.</t>
        <t>When using <xref target="SecureObjects"/> for end-to-end encryption:</t>
        <ul spacing="normal">
          <li>
            <t>Sensitive metadata (timestamps, audio levels, frame marking) can be
encrypted using Private properties</t>
          </li>
          <li>
            <t>Immutable properties are authenticated but visible to relays</t>
          </li>
          <li>
            <t>Media switches that need metadata access require appropriate key material</t>
          </li>
        </ul>
      </section>
      <section anchor="immutable-property-considerations">
        <name>Immutable Property Considerations</name>
        <t>Properties marked as immutable via the IMMUTABLE_PROPERTIES mechanism in
<xref target="MoQTransport"/> provide integrity protection - relays cannot modify these
values without detection. However, immutable properties are NOT encrypted
and remain visible to relays. Applications must carefully consider which
properties require:</t>
        <ul spacing="normal">
          <li>
            <t>Confidentiality (use Private properties)</t>
          </li>
          <li>
            <t>Integrity without confidentiality (use Immutable properties)</t>
          </li>
          <li>
            <t>Neither (standard mutable properties suitable for relay operation)</t>
          </li>
        </ul>
      </section>
      <section anchor="relay-trust-model">
        <name>Relay Trust Model</name>
        <t>Different deployment scenarios have different trust models for relays:</t>
        <ul spacing="normal">
          <li>
            <t>Untrusted relays: Use Private properties for all sensitive metadata</t>
          </li>
          <li>
            <t>Semi-trusted relays (media switches): May have access to metadata keys
but not payload keys, enabling switching decisions without content access</t>
          </li>
          <li>
            <t>Trusted relays: May have full key access for transcoding or processing</t>
          </li>
        </ul>
        <t>Applications should select the appropriate protection mechanisms based on
their relay trust model and privacy requirements.</t>
      </section>
      <section anchor="deletion-detection">
        <name>Deletion Detection</name>
        <t>When using end-to-end encryption, relays cannot modify encrypted payloads
but could selectively delete or withhold objects. <xref target="MoQTransport"/> defines
PRIOR_GROUP_ID_GAP and PRIOR_OBJECT_ID_GAP properties that publishers can
include to indicate intentional gaps in sequences. Subscribers can use these
to distinguish between publisher-intended gaps and potential relay deletion.
<xref target="SecureObjects"/> provides additional mechanisms for detecting such attacks.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="moq-properties-registry">
        <name>MOQ Properties Registry</name>
        <t>This document registers the following entries in the "MOQ property Headers"
registry established by <xref target="MoQTransport"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">Scope</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x06</td>
              <td align="left">TIMESTAMP</td>
              <td align="left">Object</td>
              <td align="left">
                <xref target="timestamp"/></td>
            </tr>
            <tr>
              <td align="left">0x08</td>
              <td align="left">TIMESCALE</td>
              <td align="left">Track or Object</td>
              <td align="left">
                <xref target="timescale"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="moq-streaming-format-registry">
        <name>MoQ Streaming Format Registry</name>
        <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>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MoQTransport">
          <front>
            <title>Media over QUIC Transport</title>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <date day="12" month="May" year="2026"/>
            <abstract>
              <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-18"/>
        </reference>
        <reference anchor="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="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>
        <reference anchor="RFC9626">
          <front>
            <title>Video Frame Marking RTP Header Extension</title>
            <author fullname="M. Zanaty" initials="M." surname="Zanaty"/>
            <author fullname="E. Berger" initials="E." surname="Berger"/>
            <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"/>
            <date month="March" year="2025"/>
            <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="RFC" value="9626"/>
          <seriesInfo name="DOI" value="10.17487/RFC9626"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="MoQCatalog">
          <front>
            <title>MOQT Streaming Format</title>
            <author fullname="Will Law" initials="W." surname="Law">
              <organization>Akamai</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies the MOQT Streaming Format, designed to
   operate on Media Over QUIC Transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-msf-01"/>
        </reference>
        <reference anchor="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="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies an end-to-end authenticated encryption scheme
   for application objects transmitted via Media over QUIC (MoQ)
   Transport.  The scheme enables original publishers that share a
   symmetric key with end subscribers, to ensuring that MoQ relays are
   unable to decrypt object contents.  Additionally, subscribers can
   verify the integrity and authenticity of received objects, confirming
   that the content has not been modified in transit.  Additionally it
   allows MoQ parameters to be protected so the publisher can select if
   they are readable and/or modifiable by relays.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-secure-objects-00"/>
        </reference>
        <reference anchor="MOQ-MLS">
          <front>
            <title>End-to-end Security for Media over QUIC</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="30" month="June" year="2025"/>
            <abstract>
              <t>   The Media over QUIC system allows relays to assist in the delivery of
   real-time media.  While these relays are trusted to facilitate media
   delivery, they are not trusted to access the media content.  The
   document describes an end-to-end security system that prevents relays
   from accessing media content.  MLS is used to establish keys that are
   available only to legitimate participants in a session, which are
   then used to protect media data using SFrame.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jennings-moq-e2ee-mls-03"/>
        </reference>
      </references>
    </references>
    <?line 696?>

<section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Cullen Jennings, Luke Curley, Upendra Sharma, and Yu You for suggestions and review.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ARAEF5BeZQAA

-->

</rfc>
