<?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.43 (Ruby 2.6.10) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ugur-moq-fast-switching-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="moq-fast-switching">Subscriber-Side Multi-Variant Fast Track Switching for MOQT</title>
    <seriesInfo name="Internet-Draft" value="draft-ugur-moq-fast-switching-00"/>
    <author initials="D." surname="Ugur" fullname="Deniz Ugur">
      <organization>Ozyegin University</organization>
      <address>
        <email>deniz.ugur@ozu.edu.tr</email>
      </address>
    </author>
    <author initials="Z." surname="Gurel" fullname="Zafer Gurel">
      <organization>Ozyegin University</organization>
      <address>
        <email>zafer.gurel@ozu.edu.tr</email>
      </address>
    </author>
    <author initials="A." surname="Begen" fullname="Ali Begen">
      <organization>Networked Media</organization>
      <address>
        <email>ali.begen@networked.media</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>media over quic</keyword>
    <keyword>fast track switching</keyword>
    <keyword>adaptive bitrate</keyword>
    <abstract>
      <?line 59?>

<t>This document describes subscriber-side multi-variant fast track switching (MVFTS), a technique
that allows a MOQ Transport (MOQT) subscriber to switch between
tracks that are encoded at the same bitrate but use different group of
pictures (GoP) lengths, combining the compression efficiency of a long GoP
with the low switching delay of a short GoP. A publisher using this
technique packages each encoded bitrate as a ladder of tracks distinguished
only by their keyframe interval, numbers those tracks' Group IDs so that they
share a common alignment, and advertises the keyframe interval of each track
in a MOQT Streaming Format (MSF) catalog. A subscriber uses this
information to compute the nearest valid switch point on any track in scope
and to perform the switch using the SWITCH_FROM request parameter in soft
mode.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://moqtail.github.io/draft-ugur-moq-fast-switching/draft-ugur-moq-fast-switching.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ugur-moq-fast-switching/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/moqtail/draft-ugur-moq-fast-switching"/>.</t>
    </note>
  </front>
  <middle>
    <?line 74?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Adaptive bitrate (ABR) delivery of live and on-demand media involves a
tension between two goals. Long GoPs improve compression efficiency, since
inter-coded pictures are cheaper to send than keyframes. Short GoPs reduce
the delay of joining a track or switching to a different one, since a
subscriber can only begin decoding a track at a keyframe. A publisher,
therefore, has to pick a single GoP length that compromises between these two
goals for every track it offers, unless more than one GoP length is made
available at once.</t>
      <t>This document describes a technique, subscriber-side multi-variant fast track switching (MVFTS),
in which a publisher offers several tracks per encoded bitrate and resolution, each using a
different GoP length, and a subscriber picks whichever of these tracks gets
it to its desired bitrate the soonest. Because every track at the same
bitrate carries identical content, encoded at the same
resolution, a subscriber can switch between them purely to shorten its wait
for a keyframe, and can equally switch between tracks of different bitrates
by considering the keyframe opportunities of both the current and the target
bitrate's tracks together.</t>
      <t>This technique depends on two other specifications. It reuses the Catalog
and Track Object model, including the "keyframeSpacing" and "altGroup" Track
Object fields, defined by the MOQT Streaming Format <xref target="MSF"/>. It performs the
actual switch using the SWITCH_FROM request parameter and its soft mode,
proposed for <xref target="MoQTransport"/> in <xref target="SWITCH-FROM-PR"/> and
<xref target="SWITCH-FROM-SOFT-PR"/>, respectively. Neither pull request had been merged
into <xref target="MoQTransport"/> at the time of writing; this document is written as
though both are already part of it, and implementers should consult the
referenced pull requests for their current status before relying on this
document.</t>
      <t>An earlier, narrower proposal for MSF, <xref target="MSF-ZAPPING-PR"/>, described how a
subscriber can use the "keyframeSpacing" field to compute a single valid
switch point when first joining a track. This document is intended to
supersede that proposal as the primary specification of keyframe-interval-
based switching for MOQT: it keeps the "keyframeSpacing" field but adds the
Group ID alignment convention, the multi-track and multi-bitrate selection
procedure, and the SWITCH_FROM-based switching procedure needed to use it
continuously, not only when first joining a live broadcast.</t>
      <section anchor="document-structure">
        <name>Document Structure</name>
        <t><xref target="model"/> defines the terms used in this document. <xref target="overview"/> gives a
high-level view of the technique. <xref target="publisher-reqs"/> specifies how a
publisher packages a set of switchable tracks. <xref target="catalog"/> specifies the
Catalog fields a publisher uses to advertise them. <xref target="selection"/> specifies
how a subscriber computes candidate switch points and selects among them.
<xref target="switching"/> specifies how a subscriber executes a switch using SWITCH_FROM.
<xref target="buffering"/> describes the buffering a subscriber needs during a switch.
<xref target="security"/> and <xref target="iana"/> conclude the document with security and IANA
considerations.</t>
      </section>
    </section>
    <section anchor="model">
      <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?>

<t>The following terms are used with the first letter capitalized:</t>
      <dl>
        <dt>Quality:</dt>
        <dd>
          <t>A single encoded representation of media content, identified by properties
such as resolution, bitrate, and codec profile, excluding its keyframe
interval.</t>
        </dd>
        <dt>GoP:</dt>
        <dd>
          <t>Group of Pictures. The set of coded pictures between one keyframe
(inclusive) and the next (exclusive). Within this document, each MOQT
Group (<xref target="MoQTransport"/>) carries exactly one GoP (see <xref target="publisher-reqs"/>).</t>
        </dd>
        <dt>Switch Set:</dt>
        <dd>
          <t>The set of Tracks that share one "altGroup" value (<xref target="MSF"/>) and among
which a subscriber performs MVFTS. A Switch Set can contain Tracks of more
than one bitrate/resolution.</t>
        </dd>
        <dt>GoP Ladder:</dt>
        <dd>
          <t>The subset of a Switch Set's Tracks that share one bitrate but differ in
their "keyframeSpacing" (<xref target="MSF"/>) value. A Switch Set contains one GoP
Ladder per bitrate it offers.</t>
        </dd>
        <dt>Alignment Unit (Gm):</dt>
        <dd>
          <t>The smallest "keyframeSpacing" value among all Tracks in a Switch Set.</t>
        </dd>
        <dt>Frame Number:</dt>
        <dd>
          <t>A non-negative integer, comparable across every Track in a Switch Set,
computed from a Location (<xref target="MoQTransport"/>) as described in <xref target="selection"/>.</t>
        </dd>
        <dt>Current Track:</dt>
        <dd>
          <t>The Track a subscriber is receiving at the time it evaluates a switch.</t>
        </dd>
        <dt>Target Track:</dt>
        <dd>
          <t>A Track a subscriber is considering switching to.</t>
        </dd>
        <dt>Switch Point:</dt>
        <dd>
          <t>A Group ID on a Target Track at which a subscriber can begin receiving
that track without missing or duplicating any presented media.</t>
        </dd>
      </dl>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>A publisher using MVFTS offers one or more bitrates, each as a GoP Ladder of
two or more Tracks that are otherwise identical but use different keyframe
intervals, all combined into a single Switch Set. For example, a publisher
might offer a 720p bitrate and a 1080p bitrate, each with short-, medium-,
and long-GoP Tracks, for a Switch Set of six Tracks in total:</t>
      <figure>
        <name>Example Switch Set with two bitrates</name>
        <sourcecode type="ascii-figure"><![CDATA[
Switch Set (altGroup = 1)
 +-- 720p GoP Ladder
 |    +-- 720p-short   (keyframeSpacing = 2)
 |    +-- 720p-medium  (keyframeSpacing = 4)
 |    +-- 720p-long    (keyframeSpacing = 8)
 +-- 1080p GoP Ladder
      +-- 1080p-short  (keyframeSpacing = 2)
      +-- 1080p-medium (keyframeSpacing = 4)
      +-- 1080p-long   (keyframeSpacing = 8)
]]></sourcecode>
      </figure>
      <t>The publisher numbers the Group IDs of every Track in the Switch Set
according to a single, shared Alignment Unit, so that any Group ID on any
Track corresponds to a specific, predictable position in every other Track
(<xref target="publisher-reqs"/>), and advertises each Track's "keyframeSpacing" and
"altGroup" in the Catalog (<xref target="catalog"/>).</t>
      <t>A subscriber that is receiving one Track from the Switch Set continuously
re-evaluates whether a different Track in the same GoP Ladder, or a
different GoP Ladder entirely, has a closer upcoming Switch Point
(<xref target="selection"/>). When it finds one, it issues a SUBSCRIBE or REQUEST_UPDATE
carrying SWITCH_FROM in soft mode, targeting that Switch Point
(<xref target="switching"/>), and buffers objects from both Tracks until the handoff
completes (<xref target="buffering"/>).</t>
    </section>
    <section anchor="publisher-reqs">
      <name>Publisher Requirements</name>
      <t>A publisher that offers a Switch Set for use with MVFTS <bcp14>MUST</bcp14> meet the
following requirements for every Track in that Switch Set, in addition to
any other applicable requirements of <xref target="MSF"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Each MOQT Group <bcp14>MUST</bcp14> begin with exactly one keyframe, and <bcp14>MUST NOT</bcp14> contain
any other keyframe. This ensures that every Group boundary is a usable
join or switch point, and that no join or switch point is hidden inside a
Group.</t>
        </li>
        <li>
          <t>Every Track in the Switch Set <bcp14>MUST</bcp14> be time-aligned with every other Track
at Object boundaries: the media presentation time of the first Object of
a Group on one Track <bcp14>MUST</bcp14> coincide with the media presentation time of the
same Object on every other Track in the Switch Set.</t>
        </li>
        <li>
          <t>Every Track's "keyframeSpacing" value <bcp14>MUST</bcp14> be an integer multiple of the
Switch Set's Alignment Unit (Gm), i.e., the smallest "keyframeSpacing"
value among all Tracks in the Switch Set. This is what makes the Frame
Number defined in <xref target="selection"/> comparable across every Track in the
Switch Set, including Tracks of different bitrates.</t>
        </li>
        <li>
          <t>For a Track whose "keyframeSpacing" is S, let k = S / Gm. The publisher
<bcp14>MUST</bcp14> number that Track's Groups 1, 1 + k, 1 + 2k, 1 + 3k, and so on
(instead of 1, 2, 3, ...), and <bcp14>MUST</bcp14> include a Prior Group ID Gap Object
Property (<xref target="MoQTransport"/>) with value k - 1 on the first Object of every
Group after the first. This signals that the k - 1 intervening Group ID
values are intentionally never used, rather than missing.</t>
        </li>
      </ul>
      <t>For example, a Track with keyframeSpacing 8 in a Switch Set whose Alignment
Unit is 2 has k = 4, and is numbered Group 1, Group 5, Group 9, and so on;
the first Object of Group 5 carries a Prior Group ID Gap of 3, indicating
that Groups 2, 3, and 4 will never be published on this Track.</t>
    </section>
    <section anchor="catalog">
      <name>Catalog</name>
      <t>A publisher advertises the properties needed for MVFTS using two Track Object
fields already defined by <xref target="MSF"/>:</t>
      <dl>
        <dt>altGroup:</dt>
        <dd>
          <t>Tracks that are part of the same Switch Set <bcp14>MUST</bcp14> share one "altGroup"
value, and <bcp14>MUST NOT</bcp14> share that value with any Track outside the Switch
Set.</t>
        </dd>
        <dt>keyframeSpacing:</dt>
        <dd>
          <t>Every Track in a Switch Set <bcp14>MUST</bcp14> include "keyframeSpacing", populated with
the number of Objects in each of that Track's Groups (equivalently, its
keyframe interval expressed in Objects). A subscriber uses this field, and
the constraints in <xref target="publisher-reqs"/>, to identify each Track's GoP Ladder
(the other Tracks in the Switch Set that share the same bitrate) and to
compute Frame Numbers and Switch Points as described in <xref target="selection"/>.</t>
        </dd>
      </dl>
      <t>This document does not define any further Catalog fields; a subscriber
distinguishes Tracks of the same bitrate from Tracks of different bitrates
within a Switch Set using the same bitrate-identifying Track Object fields
it would otherwise use to select among non-MVFTS Tracks (for example, "width",
"height", and "bitrate").</t>
    </section>
    <section anchor="selection">
      <name>Client-Side Track and Group Selection</name>
      <section anchor="frame-numbers">
        <name>Frame Numbers</name>
        <t>Within one Switch Set, let Gm be the Alignment Unit. For a Track with
keyframeSpacing S, let k = S / Gm as in <xref target="publisher-reqs"/>. The Frame Number
of Object O (0-based, per <xref target="MoQTransport"/>) of Group G on that Track is:</t>
        <artwork><![CDATA[
frameNumber = (G - 1) * Gm + O + 1
]]></artwork>
        <t>Because every Track's Group IDs have been numbered as described in
<xref target="publisher-reqs"/>, frameNumber increases by exactly one for each
successive Object across Group boundaries on a single Track, and, by
construction, identifies the same position in the underlying media timeline
on every Track in the Switch Set.</t>
      </section>
      <section anchor="switch-points">
        <name>Switch Points</name>
        <t>Given a candidate Target Track with keyframeSpacing T (also a multiple of
Gm, per <xref target="publisher-reqs"/>), and the subscriber's current Frame Number F
(computed from the Current Track's most recently received Location), the
nearest Switch Point on the Target Track that is not earlier than F is Group
ID:</t>
        <artwork><![CDATA[
targetGroup(T) = 1 + (T / Gm) * ceil((F - 1) / T)
]]></artwork>
        <t>This is the Group ID of the first Group on the Target Track whose first
Object's Frame Number is greater than or equal to F. The number of Frame
Numbers between F and that Switch Point,</t>
        <artwork><![CDATA[
Distance(T) = (targetGroup(T) - 1) * Gm + 1 - F
]]></artwork>
        <t>is zero if F already falls exactly on a Group boundary of the Target Track,
and otherwise gives subscribers a way to compare how soon different
candidate Target Tracks reach a Switch Point.</t>
      </section>
      <section anchor="selection-policy">
        <name>Selection Policy</name>
        <t>A subscriber evaluates candidate Target Tracks and picks one as follows:</t>
        <ul spacing="normal">
          <li>
            <t>If the subscriber is not changing bitrate, the candidates are the other
Tracks in the Current Track's GoP Ladder with a strictly larger
"keyframeSpacing" than the Current Track. The subscriber picks the
candidate with the smallest Distance, i.e., the one that lets it move to
a more efficient Track as soon as possible. A subscriber that finds no
Switch Point closer than remaining on the Current Track <bcp14>SHOULD NOT</bcp14> switch.</t>
          </li>
          <li>
            <t>If the subscriber is changing to a different bitrate, the candidates are
every Track in the Target bitrate's GoP Ladder, together with the other
Tracks in the Current Track's GoP Ladder with a strictly larger
"keyframeSpacing" than the Current Track. The subscriber picks the
candidate with the smallest Distance. If more than one candidate ties for
the smallest Distance, the subscriber prefers a candidate in the Target
Quality's GoP Ladder, since it makes direct progress toward the desired
bitrate. A switch to a Track in the Current Track's own GoP Ladder in this
case is an intermediate step and does not end the bitrate change; the
subscriber repeats this procedure after each switch until it reaches the
Target bitrate.</t>
          </li>
        </ul>
        <t>A subscriber <bcp14>MAY</bcp14> instead implement a simpler policy that only ever considers
one GoP Ladder at a time (the Current Track's GoP Ladder, or, when changing
bitrate, only the Target Quality's GoP Ladder) and that breaks ties by
preferring the candidate with the largest "keyframeSpacing" rather than by
preferring progress toward the Target bitrate. This simpler policy is easier
to implement and is already in use in at least one implementation of this
document, at the cost of occasionally taking a less direct path to the
Target bitrate.</t>
      </section>
      <section anchor="worked-example">
        <name>Worked Example</name>
        <t>Consider the Switch Set from <xref target="overview"/>, with Gm = 2. A subscriber is
receiving 720p-long (keyframeSpacing 8, k = 4) and has just received Object
3 of Group 13 (the fourth Group of this Track, since Group 1 is the first
and Groups are numbered 1, 5, 9, 13, ...). Its Frame Number is:</t>
        <artwork><![CDATA[
frameNumber = (13 - 1) * 2 + 3 + 1 = 28
]]></artwork>
        <t>Suppose the application now requests a switch to the 1080p bitrate. The
subscriber computes targetGroup(T) and Distance(T) for every Track in the
1080p GoP Ladder:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Track</th>
              <th align="right">T</th>
              <th align="right">targetGroup(T)</th>
              <th align="right">Distance(T)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1080p-short</td>
              <td align="right">2</td>
              <td align="right">15</td>
              <td align="right">1</td>
            </tr>
            <tr>
              <td align="left">1080p-medium</td>
              <td align="right">4</td>
              <td align="right">15</td>
              <td align="right">1</td>
            </tr>
            <tr>
              <td align="left">1080p-long</td>
              <td align="right">8</td>
              <td align="right">17</td>
              <td align="right">5</td>
            </tr>
          </tbody>
        </table>
        <t>1080p-short and 1080p-medium tie for the smallest Distance; both are in the
Target bitrate's GoP Ladder, so the subscriber picks one of them, for
example 1080p-medium, and switches to Group 15 of that Track.</t>
      </section>
    </section>
    <section anchor="switching">
      <name>Performing the Switch</name>
      <t>A subscriber performs a switch found as described in <xref target="selection"/> by
sending a SUBSCRIBE, or a REQUEST_UPDATE on an existing subscription,
carrying the SWITCH_FROM parameter (<xref target="SWITCH-FROM-PR"/>) in soft mode
(<xref target="SWITCH-FROM-SOFT-PR"/>), with the Switch From Request ID identifying the
Current Track's subscription and the Start Group set to the computed
targetGroup(T).</t>
      <t>A subscriber <bcp14>MUST NOT</bcp14> use hard mode for this purpose. Because the Current
and Target Tracks use different keyframe intervals, a relay has no way to
know, from hard mode alone, where the two Tracks' Objects correspond to the
same point in the media timeline, and could stop forwarding the Current
Track before the Target Track has anything to show in its place. Soft mode
avoids this by having the publisher continue the Current Track's
subscription up to a computed End Group before stopping it, giving a clean
handoff instead of a gap or an overlap of arbitrary duration.</t>
      <t>Per <xref target="SWITCH-FROM-SOFT-PR"/>, soft mode stops the suspending subscription at
"Start Group - 1". Because Group IDs are not comparable 1:1 across Tracks
with different "keyframeSpacing" values, a subscriber instead computes the
End Group it expects the publisher to use directly from the Current Track's
own numbering. Let S and k_old = S / Gm be the Current Track's own
keyframeSpacing and group increment, and let switchFrame be the Frame
Number of the chosen Switch Point, (targetGroup(T) - 1) * Gm + 1:</t>
      <ul spacing="normal">
        <li>
          <t>If the Target Track's keyframeSpacing T is greater than S, the Switch
Point can fall after the Group the Current Track is presently sending, so
the expected End Group is the Current Track's own Group whose last Frame
Number is the greatest multiple of S not exceeding switchFrame - 1:  </t>
          <artwork><![CDATA[
End Group = 1 + k_old * (floor((switchFrame - 1) / S) - 1)
]]></artwork>
          <t>
For example, in a Switch Set with Gm = 2, a Current Track with S = 4
(k_old = 2) sending Frame Number 9 (its Group 5), switching to a Target
Track with T = 6 and switchFrame = 13, has End Group
1 + 2 * (floor(12 / 4) - 1) = 1 + 2 * 2 = 5: the Current Track's Group 5
is also its last Group before the switch.</t>
        </li>
        <li>
          <t>Otherwise (T is less than or equal to S), the Current Track has no Group
boundary of its own between the Group it is presently sending and the
Switch Point, so the expected End Group is simply the Current Track's own
Group ID at the time of the switch; the subscriber cannot cut over any
earlier than the end of the Group it is already receiving. Continuing the
worked example in <xref target="selection"/>, switching from 720p-long (S = 8) to
1080p-medium (T = 4) has T less than S, so the expected End Group is
Group 13, the Group the subscriber was already receiving.</t>
        </li>
      </ul>
      <t>A subscriber does not need to separately unsubscribe from the Current
Track's subscription: once the publisher has delivered the End Group, it
concludes the suspending subscription with PUBLISH_DONE.</t>
      <t>A subscriber <bcp14>SHOULD</bcp14> subscribe in advance to Tracks it may switch to, using
the FORWARD parameter (<xref target="MoQTransport"/>) set to 0, before it expects to need
them. This gives the publisher, or a relay on the path, the opportunity to
establish or warm any upstream state for those Tracks ahead of time, so that
the switch computed in <xref target="selection"/> is not delayed by the time it takes to
establish a new subscription. A subscriber <bcp14>SHOULD</bcp14> bound the number of Tracks
it keeps subscribed in this way at once; see <xref target="security"/>.</t>
    </section>
    <section anchor="buffering">
      <name>Client Buffering and Playout Continuity</name>
      <t>Because soft mode keeps delivering the Current Track up to its End Group
while the Target Track begins delivering from its Switch Point, a
subscriber receives Objects from both Tracks for a short overlap. A
subscriber <bcp14>MUST</bcp14> hold received Objects from both Tracks in a small buffer,
keyed by Frame Number, and release them for presentation in Frame Number
order, so that the presented media neither skips nor repeats any frame
across the transition. A buffer sized to hold slightly more than one
Alignment Unit's worth of Objects from each of the two Tracks involved in a
switch is sufficient for this purpose; a subscriber does not need to retain
more than this once a switch has completed.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>A subscriber that follows the recommendation in <xref target="switching"/> to
pre-establish subscriptions to candidate Target Tracks ahead of time
increases the number of subscriptions, and therefore the amount of upstream
state and bandwidth, a publisher or relay must maintain on its behalf. A
subscriber <bcp14>MUST</bcp14> bound the number of Tracks it keeps subscribed with FORWARD
set to 0 for this purpose, and a publisher or relay <bcp14>MAY</bcp14> apply the limits
described in <xref target="MoQTransport"/> to protect itself from excessive resource
consumption by a subscriber that does not.</t>
      <t>The set of Tracks and their "keyframeSpacing" values in a Switch Set reveal
the shape of a publisher's ABR ladder to anyone who can observe the Catalog,
in the same way that the set of bitrates and resolutions already does; this
document does not introduce any new information disclosure beyond what
<xref target="MSF"/> and <xref target="MoQTransport"/> already describe.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. It reuses the "keyframeSpacing" and
"altGroup" Track Object fields defined by <xref target="MSF"/> and the Prior Group ID Gap
Object Property, the FORWARD parameter, and the SWITCH_FROM parameter
defined or proposed for <xref target="MoQTransport"/>, without modifying or extending any
of them.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank the participants of the Media Over QUIC Working Group,
and in particular the authors of and commenters on <xref target="SWITCH-FROM-PR"/>,
<xref target="SWITCH-FROM-SOFT-PR"/>, and <xref target="MSF-ZAPPING-PR"/>, whose discussion of track
switching and keyframe-interval-based switch points informed this document.</t>
    </section>
    <section numbered="false" anchor="use-of-generative-ai">
      <name>Use of Generative AI</name>
      <t>Generative AI tools were used to assist with drafting and editing text for
this document. All AI-generated content was reviewed and approved by the
editors.</t>
    </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="1" month="October" year="2026"/>
            <abstract>
              <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-22"/>
        </reference>
        <reference anchor="MSF">
          <front>
            <title>MOQT Streaming Format</title>
            <author fullname="Will Law" initials="W." surname="Law">
              <organization>Akamai</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies the MOQT Streaming Format, designed to
   operate on Media Over QUIC Transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-msf-01"/>
        </reference>
        <reference anchor="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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="SWITCH-FROM-PR" target="https://github.com/moq-wg/moq-transport/pull/1674">
          <front>
            <title>Track Switching via the SWITCH_FROM parameter</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SWITCH-FROM-SOFT-PR" target="https://github.com/moq-wg/moq-transport/pull/1675">
          <front>
            <title>SWITCH_FROM Soft Mode</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="MSF-ZAPPING-PR" target="https://github.com/moq-wg/msf/pull/122">
          <front>
            <title>initial text on zapping</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 497?>

<section numbered="false" removeInRFC="true" anchor="change-log">
      <name>Change Log</name>
      <t>RFC Editor's Note: Please remove this section prior to publication of a
final version of this document.</t>
      <section numbered="false" anchor="since-initial-version">
        <name>Since initial version</name>
        <ul spacing="normal">
          <li>
            <t>Initial version.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAE3czWoAA9VcW3fbRpJ+71/RqzxESkjaUpyJo4xnVr7I0Tm2pZjy5MzM
mZMDEk0RYxBgcJHMOJnfsr9lf9l+VdVXEPLs7O7L+sEiQaC7urouX10a0+lU
dUVXmlN9MO8X7bIpFqaZzovc6Nd92RXTP2VNkVWdPs/aTl832fK9nt8V3XJd
VDd6VTf69eUP1wcqWywac3uqN/XP0xVunbbuJpXXyyrbYIa8yVbdtL/pm+n+
bdOHD1Wedbjt4/Oz6xe/qSW+3NTN7lS3Xa5UsW1Oddf0bXfy8OG3D09U1pjs
VJ9tt2WBW4u6anVW5fqtycrpdbExqu0Xm6Jt8Uu322LcixfX5+qubt7fNHW/
PdWvTV5k+vLWNPqHdxfP1Huzw6/5qdJTveHfavrt575Y0iUiFwQQA8LacD3L
s21X3Bq9KPBrZ9StqXqDUfRN0a37BTiL1XZZUT74JAMO8ESJ59sOT6y7btue
Pnhgn5zJULOi/vQYn/51tu425YFSbQdG/ZSVdQWu7Eyr2k3WdD/93NeY/VRX
tdoWp/qvXb2c6LZuusasWnzabeQD9nOTbbcY8G9KZX23rhviGcjXuqgwwPOZ
fgcK+ILs/HNTFb+Ei3Vzk+EC79qpvvxlZ26KSr+rwMWmLbod32Q2WDiEhh6d
0Yr+vf6ln5m8n3VNMt1fZvpl35gymu8v2Qo7F67+KxP+Qs/ObujZ+2Y8m+mn
5sZU0YxnZRFdS+d7YzoSO5OLyMWTZWUxW9Bj/165m2Yse0pVdbPJSLBIlF7X
P0D3qnaL7YAkT5/PCtOteI87d51um58Pft20K+hOtYoHm/94cf3s++n528vX
06u3p0yPMwJDDb+FGnRrY5/5iZ7R26zBmjvTHPCjorUnD09+JyNlzY2JZdjK
7rLekDhP724eJGQ/2PZl+eD4d988OhjQNr88v94jMCZkXq86sCY3/7eEfH0g
rJz+5ezq6uLNyz0aiqroiqzUnfnQ6bqCyLA6/I+paFd27pMTqOd0CqOyaMnU
dEpdr4uWVK7fGFjh3IiJbnUbrHVL1nrD1vrWWusxY6UPX//p/Hp+NNHYUrNc
V8XPvVHdOusghmV9B/tJxlx7QcMDsO1H0VS6q+14egF5NRB3nqTVMkxjtKmW
2JBc4yvJTQtJcZZRL/pO963RebGCjtF62BTregWLs+ygcq0+fFlfHenSVDfd
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
D2248nFXAAA=

-->

</rfc>
