<?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.31 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-loc-02" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="media-container">Low Overhead Media Container</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-loc-02"/>
    <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="config"/>, 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="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 <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 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 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 wi</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: 0x06</t>
              </li>
              <li>
                <t>Length: Omitted (ID is even)</t>
              </li>
              <li>
                <t>Value: vi64 (1-8 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-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: 13 (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 in the least
significant bits of a vi64.</t>
              </li>
              <li>
                <t>ID: 4 (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-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
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: 6 (IANA, please assign from the MOQ Properties Registry)</t>
              </li>
              <li>
                <t>Length: Varies (1-2 bytes)</t>
              </li>
              <li>
                <t>Value: Varies</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="2" month="March" year="2026"/>
            <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-17"/>
        </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>
            <date day="19" month="January" 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-00"/>
        </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="8" month="February" 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 to securely share
   a symmetric key with end subscribers, 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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jennings-moq-secure-objects-04"/>
        </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 687?>

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

-->

</rfc>
