<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cenzano-moq-media-interop-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="moq-mi">MoQ Media Interop</title>
    <seriesInfo name="Internet-Draft" value="draft-cenzano-moq-media-interop-03"/>
    <author fullname="Jordi Cenzano-Ferret">
      <organization>Meta</organization>
      <address>
        <email>jcenzano@meta.com</email>
      </address>
    </author>
    <author fullname="Alan Frindell">
      <organization>Meta</organization>
      <address>
        <email>afrind@meta.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>Media over QUIC</keyword>
    <abstract>
      <?line 39?>

<t>This protocol can be used to send and receive video and audio over Media over
QUIC Transport [MOQT], using LOC[loc] packaging.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://afrind.github.io/draft-cenzano-media-interop/draft-cenzano-moq-media-interop.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-cenzano-moq-media-interop/"/>.
      </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/afrind/draft-cenzano-media-interop"/>.</t>
    </note>
  </front>
  <middle>
    <?line 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This protocol specifies a simple mechanism for sending media (video and audio)
over LOC[loc] for both live-streaming and video conference (VC) style use cases.</t>
      <t>moq-mi allows updating encoding parameters in the middle of a track (ex: frame
rate, resolution, codec, etc)</t>
      <t>The protocol refers to [loc] to define the specific media wire format.</t>
    </section>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <section anchor="track-names">
        <name>Track Names</name>
        <t>The publisher selects a namespace of their choosing, and sends an ANNOUNCE
message for this namespace.</t>
        <t>Within the publisher namespace the publisher will offer media tracks named as
<tt>videoX</tt> and <tt>audioX</tt> where X will be an integer starting at 0.</t>
        <t>So in case the publisher issues 2 audio tracks and 1 video track, the track
names available will be <tt>video0</tt>, <tt>audio0</tt>, and <tt>audio1</tt>.</t>
        <t>The subscriber will consider all of those tracks belonging to the same
namespace as part of the same synchronization group (timestamps aligned to the
same timeline).</t>
      </section>
      <section anchor="mapping-tracks-to-moqt-object-model">
        <name>Mapping Tracks to MoQT Object Model</name>
        <t>For the video track, the publisher begins a new group at the start of each IDR
(so object 0 will be always an IDR Keyframe), and each group contains a single
subgroup.  Each object has the format described in <xref target="object-format"/>.</t>
        <t>For the audio track, the publisher begins a new group with each audio object,
and each group contains a single subgroup.  Each object has the format described
in <xref target="object-format"/>.</t>
        <t>TODO: Datagram forwarding preference could be used, but has problems if audio
frame does not fit in a single UDP payload.</t>
      </section>
      <section anchor="timestamps">
        <name>Timestamps</name>
        <t>To avoid using fractional numbers and having to deal with rounding errors,
timestamps will be expressed with two integers:
- timestamp numerator (ex: PTS, DTS, duration)
- timebase</t>
        <t>To convert a timestamp into seconds you just need to:
timestamp(s) = timestamp numerator / timebase</t>
        <t>Example:</t>
        <t>PTS = 11, timebase = 30</t>
        <t>PTS(s) = 11/30 = 0.366666s</t>
      </section>
      <section anchor="object-format">
        <name>Object Format</name>
        <t>MoQ-MI uses MOQT extension headers to provide metadata that identifies
and augemts the media information found in the object payload.</t>
        <section anchor="media-type-header-extension-header-extension-type-0x0a">
          <name>Media type header extension (header extension type = 0x0A)</name>
          <t>It defines the media type inside object payload (see section IANA in MOQ TODO),
and it <bcp14>MUST</bcp14> be present in all objects</t>
          <table>
            <thead>
              <tr>
                <th align="right">Value</th>
                <th align="left">Media type</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="right">0x0</td>
                <td align="left">Video H264 in AVCC</td>
              </tr>
              <tr>
                <td align="right">0x1</td>
                <td align="left">Audio Opus bitsream</td>
              </tr>
              <tr>
                <td align="right">0x2</td>
                <td align="left">UTF-8 text</td>
              </tr>
              <tr>
                <td align="right">0x3</td>
                <td align="left">Audio AAC-LC in MPEG4</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="video-h264-in-avcc-metadata-header-extension-header-extension-type-0x15">
          <name>Video H264 in AVCC metadata header extension (header extension type = 0x15)</name>
          <t>It provides video metadata useful to consume the video carried in the payload of
the object. The following table specifies the data inside this extesion header.</t>
          <figure anchor="media-object-header-0b-video-h264-avcc">
            <name>MOQT Media video h264data header extension</name>
            <artwork><![CDATA[
{
  Seq ID (i)
  PTS Timestamp (i)
  DTS Timestamp (i)
  Timebase (i)
  Duration (i)
  Wallclock (i)
}
]]></artwork>
          </figure>
          <t>It <bcp14>MUST</bcp14> be present in all objects where "media type header extension" is equal
to "Video H264 in AVCC"(0x0)</t>
          <section anchor="seq-id">
            <name>Seq ID</name>
            <t>Monotonically increasing counter for this media track</t>
          </section>
          <section anchor="pts-timestamp">
            <name>PTS Timestamp</name>
            <t>Indicates PTS in timebase</t>
            <t>TODO: Varint does NOT accept easily negative, so it could be challenging to
encode at start (priming)</t>
          </section>
          <section anchor="dts-timestamp">
            <name>DTS Timestamp</name>
            <t>Not needed if B frames are NOT used, in that case should be same value as PTS.</t>
            <t>TODO: Varint does NOT accept easily negative, so it could be challenging to
encode at start (priming)</t>
          </section>
          <section anchor="timebase">
            <name>Timebase</name>
            <t>Units used in PTS, DTS, and duration.</t>
          </section>
          <section anchor="duration">
            <name>Duration</name>
            <t>Duration in timebase.
It will be 0 if not set</t>
          </section>
          <section anchor="wall-clock">
            <name>Wall Clock</name>
            <t>EPOCH time in ms when this frame started being captured.
It will be 0 if not set</t>
          </section>
        </section>
        <section anchor="video-h264-in-avcc-extradata-header-extension-header-extension-type-0x0d">
          <name>Video H264 in AVCC extradata header extension (Header extension type = 0x0D)</name>
          <t>Provides extradata needed to start decoding the video stream</t>
          <t>It <bcp14>MUST</bcp14> be present in all object 0 (start of group) where "media type header
extension" is equal to "Video H264 in AVCC"(0x0) AND there has been an update on
the encoding paramets (or very start of the stream)</t>
          <figure anchor="media-object-header-0d-video-h264-avcc">
            <name>MOQT Media video h264 extradata header extension</name>
            <artwork><![CDATA[
{
  Extradata (..)
}
]]></artwork>
          </figure>
          <section anchor="extradata">
            <name>Extradata</name>
            <t>This will be  <tt>AVCDecoderConfigurationRecord</tt> as described in
[ISO14496-15:2019] section 5.3.3.1, with field <tt>lengthSizeMinusOne</tt> = 3
(So length = 4). If any other size length is indicated
(in <tt>AVCDecoderConfigurationRecord</tt>) we should error with “Protocol violation”</t>
          </section>
        </section>
        <section anchor="audio-opus-bitsream-data-header-extension-header-extension-type-0x0f">
          <name>Audio Opus bitsream data header extension (Header extension type = 0x0F)</name>
          <t>It provides audio metadata useful to consume the audio carried in the payload
of the object. Following table specifies the data inside this extesion header.</t>
          <t>It <bcp14>MUST</bcp14> be present in all objects where "media type header extension" is equal
to "Audio Opus bitsream"(0x1)</t>
          <figure anchor="media-object-header-audio-opus">
            <name>MOQT Media data audio Opus header extension</name>
            <artwork><![CDATA[
{
  Seq ID (i)
  PTS Timestamp (i)
  Timebase (i)
  Sample Freq (i)
  Num Channels (i)
  Duration (i)
  Wall Clock (i)
}
]]></artwork>
          </figure>
          <section anchor="seq-id-1">
            <name>Seq Id</name>
            <t>Monotonically increasing counter for this media track</t>
          </section>
          <section anchor="pts-timestamp-1">
            <name>PTS Timestamp</name>
            <t>Indicates PTS in timebase</t>
            <t>TODO: Varint does NOT accept easily negative, so it could be challenging to
encode at start (priming)</t>
          </section>
          <section anchor="timebase-1">
            <name>Timebase</name>
            <t>Units used in PTS, DTS, and duration</t>
          </section>
          <section anchor="sample-freq">
            <name>Sample Freq</name>
            <t>Sample frequency used in the original signal (before encoding)</t>
          </section>
          <section anchor="num-channels">
            <name>Num Channels</name>
            <t>Number of channels in the original signal (before encoding)</t>
          </section>
          <section anchor="duration-1">
            <name>Duration</name>
            <t>Duration in timebase.
It will be 0 if not set</t>
          </section>
          <section anchor="wallclock">
            <name>Wallclock</name>
            <t>EPOCH time in ms when this frame started being captured.
It will be 0 if not set</t>
          </section>
        </section>
        <section anchor="utf-8-text-header-extension-header-extension-type-0x11">
          <name>UTF-8 Text header extension (Header extension type = 0x11)</name>
          <figure anchor="object-header-utf8-text">
            <name>MOQT UTF-8 Text header extension</name>
            <artwork><![CDATA[
{
  Seq ID (i)
}
]]></artwork>
          </figure>
          <section anchor="seq-id-2">
            <name>Seq Id</name>
            <t>Monotonically increasing counter for this track</t>
          </section>
        </section>
        <section anchor="audio-aac-lc-in-mpeg4-bitstream-data-header-extension-header-extension-type-0x13">
          <name>Audio AAC-LC in MPEG4 bitstream data header extension (Header extension type = 0x13)</name>
          <figure anchor="media-object-header-audio-aaclcmpeg4">
            <name>MOQT Media audio AAC-LC MPEG4 object header</name>
            <artwork><![CDATA[
{
  Seq ID (i)
  PTS Timestamp (i)
  Timebase (i)
  Sample Freq (i)
  Num Channels (i)
  Duration (i)
  Wall Clock (i)
}
]]></artwork>
          </figure>
          <section anchor="seq-id-3">
            <name>Seq Id</name>
            <t>Monotonically increasing counter for this media track</t>
          </section>
          <section anchor="pts-timestamp-2">
            <name>PTS Timestamp</name>
            <t>Indicates PTS in timebase</t>
            <t>TODO: Varint does NOT accept easily negative, so it could be challenging to
encode at start (priming)</t>
          </section>
          <section anchor="timebase-2">
            <name>Timebase</name>
            <t>Units used in PTS, DTS, and duration</t>
          </section>
          <section anchor="sample-freq-1">
            <name>Sample Freq</name>
            <t>Sample frequency used in the original signal (before encoding)</t>
          </section>
          <section anchor="num-channels-1">
            <name>Num Channels</name>
            <t>Number of channels in the original signal (before encoding)</t>
          </section>
          <section anchor="duration-2">
            <name>Duration</name>
            <t>Duration in timebase.
It will be 0 if not set</t>
          </section>
          <section anchor="wallclock-1">
            <name>Wallclock</name>
            <t>EPOCH time in ms when this frame started being captured.
It will be 0 if not set</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="example-of-first-object-for-video-h264-in-avcc">
        <name>Example of first object for Video H264 in AVCC</name>
        <section anchor="moqt-object-subgroup-fields-in-case-it-carries-video-h264-in-avcc-1st-frame-sent">
          <name>MOQT Object subgroup fields in case it carries Video H264 in AVCC, 1st frame sent</name>
          <artwork><![CDATA[
{
  0x00 (Object ID)(i),
  0x03 (Extension Count)(i),
  0x0A (Header type: Media type header type)(i)
  0x00 (header value: Media type)(i)

  0x15 (Header type: H264 in AVCC metadata)(i)
  0x0D (Header value length)(i)
  0x00 (Header value: Seq ID)(i)
  0x00 (Header value: PTS Timestamp)(i)
  0x00 (Header value: DTS Timestamp)(i)
  0x1E (Header value: Timebase)(i)
  0x01 (Header value: Duration)(i)
  0xC0, 0x00, 0x01, 0x95, 0x45, 0x6C, 0x8B, 0xFF (Header value: Wallclock)(i)

  0x0D (Header type: H264 in AVCC extradata)(i)
  Header value length (i)
  Header value: H264 in AVCC extradata (..)

  Object Payload Length (i),
  Object Payload bytes (..),
}
]]></artwork>
        </section>
        <section anchor="moqt-object-subgroup-fields-in-case-it-carries-video-h264-in-avcc-2nd-or-bigger-frame-with-no-encoding-settings-update">
          <name>MOQT Object subgroup fields in case it carries Video H264 in AVCC, 2nd or bigger frame with NO encoding settings update</name>
          <artwork><![CDATA[
{
  0x01 (Object ID)(i),
  0x02 (Extension Count)(i),
  0x0A (Header type: Media type header type)(i)
  0x00 (header value: Media type)(i)

  0x15 (Header type: H264 in AVCC metadata)(i)
  0x0D (Header value length)(i)
  0x01 (Header value: Seq ID)(i)
  0x00 (Header value: PTS Timestamp)(i)
  0x00 (Header value: DTS Timestamp)(i)
  0x1E (Header value: Timebase)(i)
  0x01 (Header value: Duration)(i)
  0xC0, 0x00, 0x01, 0x95, 0x45, 0x6C, 0x3B, 0xE0 (Header value: Wallclock)(i)

  Object Payload Length (i),
  Object Payload bytes (..),
}
]]></artwork>
        </section>
        <section anchor="moqt-object-datagram-fields-in-case-it-carries-audio-aac-lc-in-mpeg4">
          <name>MOQT Object DATAGRAM fields in case it carries Audio AAC-LC in MPEG4</name>
          <artwork><![CDATA[
{
  0x00 (Track Alias)(i),
  0x00 (Group ID)(i),
  0x00 (Object ID)(i),
  0x00 (Publisher Priority)(8),
  0x02 (Extension Count)(i),
  0x0A (Header type: Media type header type)(i)
  0x03 (header value: Media type)(i)

  0x13 (Header type: Audio AAC-LC in MPEG4)(i)
  0x15 (Header value length)(i)
  0x00 (Header value: Seq ID)(i)
  0x00 (Header value: PTS Timestamp)(i)
  0x80, 0x00, 0xBB, 0x80 (Header value: Timebase)(i)
  0x80, 0x00, 0xBB, 0x80 (Header value: Sample freq)(i)
  0x02 (Header value: Num channels)(i)
  0x44, 0x00 (Header value: Duration)(i)
  0xC0, 0x00, 0x01, 0x95, 0x45, 0x6C, 0x3B, 0xE0 (Header value: Wallclock)(i)

  Object Payload Length (i),
  Object Payload bytes (..),
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="payloads">
      <name>Payloads</name>
      <t>TODO: This sections needs to be updated with links to LOC</t>
      <section anchor="for-object-header-media-type-video-h264-in-avcc-0x00">
        <name>For object header media type = Video H264 in AVCC (0x00)</name>
        <t>Payload <bcp14>MUST</bcp14> be H264 with bitstream AVC1 format as described in [ISO14496-15:2019] section 5.3.
Using 4 bytes size field length.</t>
      </section>
      <section anchor="for-object-header-media-type-audio-opus-bitsream-0x01">
        <name>For object header media type = Audio Opus bitsream (0x01)</name>
        <t>Payload <bcp14>MUST</bcp14> be Opus packets, as described in <xref target="RFC6716"/> - section 3</t>
      </section>
      <section anchor="for-object-header-media-type-utf-8-text-0x02">
        <name>For object header media type = UTF-8 text (0x02)</name>
        <t>Payload <bcp14>MUST</bcp14> be text bytes in UTF-8, as described in <xref target="RFC3629"/></t>
      </section>
      <section anchor="for-object-header-media-type-audio-aac-lc-in-mpeg4-0x03">
        <name>For object header media type = Audio AAC-LC in MPEG4 (0x03)</name>
        <t>Payload <bcp14>MUST</bcp14> be AAC frame (syntax element <tt>raw_data_block()</tt>), as described in section 4.4.2.1 of [ISO14496-3:2009].</t>
      </section>
    </section>
    <section anchor="references">
      <name>References</name>
      <t>[ISO14496-15:2019] "Carriage of network abstraction layer (NAL) unit
structured video in the ISO base media file format", ISO ISO14496-15:2019,
International Organization for Standardization, October, 2022.</t>
      <t>[ISO14496-3:2009] "Information technology — Coding of audio-visual objects",
ISO ISO14496-3:2009, International Organization for Standardization, September, 2009.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC6716">
        <front>
          <title>Definition of the Opus Audio Codec</title>
          <author fullname="JM. Valin" initials="JM." surname="Valin"/>
          <author fullname="K. Vos" initials="K." surname="Vos"/>
          <author fullname="T. Terriberry" initials="T." surname="Terriberry"/>
          <date month="September" year="2012"/>
          <abstract>
            <t>This document defines the Opus interactive speech and audio codec. Opus is designed to handle a wide range of interactive audio applications, including Voice over IP, videoconferencing, in-game chat, and even live, distributed music performances. It scales from low bitrate narrowband speech at 6 kbit/s to very high quality stereo music at 510 kbit/s. Opus uses both Linear Prediction (LP) and the Modified Discrete Cosine Transform (MDCT) to achieve good compression of both speech and music. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6716"/>
        <seriesInfo name="DOI" value="10.17487/RFC6716"/>
      </reference>
      <reference anchor="RFC3629">
        <front>
          <title>UTF-8, a transformation format of ISO 10646</title>
          <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
          <date month="November" year="2003"/>
          <abstract>
            <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="63"/>
        <seriesInfo name="RFC" value="3629"/>
        <seriesInfo name="DOI" value="10.17487/RFC3629"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 489?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
f1oag2okHi0RcZGNBAX9B+TpQ0l2LwAA

-->

</rfc>
