<?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.21 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cenzano-moq-media-interop-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="moq-mi">MoQ Media Interop</title>
    <seriesInfo name="Internet-Draft" value="draft-cenzano-moq-media-interop-02"/>
    <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="March" day="05"/>
    <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-0x0b">
          <name>Video H264 in AVCC metadata header extension (header extension type = 0x0B)</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)

  0x0B (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)

  0x0B (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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
NAbVSDxaIuIiGwkK+g+lt4vydi8AAA==

-->

</rfc>
