<?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.36 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gregoire-moq-msfts-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="MOQT MPEG-2 TS Packaging">MPEG-2 Transport Stream Packaging for Media Over QUIC Transport</title>
    <seriesInfo name="Internet-Draft" value="draft-gregoire-moq-msfts-00"/>
    <author fullname="Paul Gregoire">
      <organization>Red5</organization>
      <address>
        <email>paul@red5.net</email>
      </address>
    </author>
    <author fullname="Gwendal Simon">
      <organization>Synamedia</organization>
      <address>
        <email>gsimon@synamedia.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="06"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>MoQ</keyword>
    <keyword>MoQTransport</keyword>
    <keyword>MPEG-2 Transport Stream</keyword>
    <keyword>M2TS</keyword>
    <keyword>MSF</keyword>
    <abstract>
      <?line 56?>

<t>This document extends the MOQT Streaming Format (MSF) by registering the
"m2ts" packaging value for carrying MPEG-2 Transport Stream and M2TS source
packets over Media Over QUIC Transport.  It defines catalog fields for
transport-stream track description and specifies receiver and relay behavior
for joining, switching, and validating packetized streams.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mondain.github.io/msfts/draft-gregoire-moq-msfts.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-gregoire-moq-msfts/"/>.
      </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/mondain/msfts"/>.</t>
    </note>
  </front>
  <middle>
    <?line 64?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Media Over QUIC Transport (MOQT) <xref target="MoQTransport"/> delivers named tracks as
ordered groups of objects.  The MOQT Streaming Format (MSF) <xref target="MSF"/> defines a
catalog model and common streaming conventions for describing tracks delivered
over MOQT.  This document extends MSF by registering the "m2ts" packaging
value for carrying MPEG-2 Transport Stream packets as defined by <xref target="ISO138181"/>
and M2TS source packets that prefix each transport-stream packet with a
four-octet source-packet timestamp.</t>
      <t>The format is intended for publishers that already produce packetized MPEG-2
Transport Stream output, including contribution feeds, broadcast workflows, and
systems that currently segment transport streams for HTTP-based delivery.  It
does not define a new elementary stream container.  Instead, it preserves the
packet stream and maps consecutive source packets into MOQT Objects.</t>
      <t>This document describes version 1 of the packaging format.</t>
    </section>
    <section anchor="msf-extension">
      <name>MSF Extension</name>
      <t>All specifications, requirements, and terminology defined in <xref target="MSF"/> apply to
implementations of this extension unless explicitly noted otherwise in this
document.</t>
      <t>This document does not use the LOC packaging defined in <xref target="MSF"/>.  MSF
requirements that are conditioned on <tt>packaging: loc</tt> do not apply to
m2ts-packaged tracks; equivalent behavior for m2ts tracks is defined in this
document.</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?>

<t>This document uses the conventions detailed in Section 1.3 of <xref target="RFC9000"/> when
describing the binary encoding.</t>
      <t>The following terms are used throughout this document:</t>
      <dl>
        <dt>TS packet:</dt>
        <dd>
          <t>A 188-octet MPEG-2 Transport Stream packet as defined by <xref target="ISO138181"/>.</t>
        </dd>
        <dt>M2TS source packet:</dt>
        <dd>
          <t>A 192-octet packet consisting of a four-octet source-packet timestamp followed
by a 188-octet TS packet.</t>
        </dd>
        <dt>Source packet:</dt>
        <dd>
          <t>Either a TS packet or an M2TS source packet.  The source-packet size is
signaled by the catalog.</t>
        </dd>
        <dt>Access unit:</dt>
        <dd>
          <t>A coded audio, video, or metadata unit carried by the MPEG-2 Transport Stream.</t>
        </dd>
        <dt>Random access point:</dt>
        <dd>
          <t>A point in the packet stream at which a receiver can begin decoding after
receiving the applicable transport-stream tables and decoder initialization.</t>
        </dd>
        <dt>Single-program transport stream:</dt>
        <dd>
          <t>A transport stream whose Program Association Table lists exactly one
program.</t>
        </dd>
        <dt>Multi-program transport stream:</dt>
        <dd>
          <t>A transport stream whose Program Association Table lists two or more
programs.</t>
        </dd>
      </dl>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>This specification defines:</t>
      <ul spacing="normal">
        <li>
          <t>The "m2ts" packaging value for use in an MSF catalog.</t>
        </li>
        <li>
          <t>The mapping of consecutive TS or M2TS source packets into MOQT Objects.</t>
        </li>
        <li>
          <t>Catalog fields that describe packet size, program selection, packetization,
timing, and joining behavior.</t>
        </li>
        <li>
          <t>Receiver processing rules for validating object payloads and reconstructing
the packet stream.</t>
        </li>
      </ul>
      <t>This specification does not define:</t>
      <ul spacing="normal">
        <li>
          <t>New MPEG-2 Transport Stream syntax.</t>
        </li>
        <li>
          <t>New audio, video, metadata, or subtitle codec signaling inside the transport
stream.</t>
        </li>
        <li>
          <t>A replacement for Program Association Table, Program Map Table, PCR, PTS, DTS,
continuity counter, or scrambling semantics defined by <xref target="ISO138181"/>.</t>
        </li>
        <li>
          <t>A mandatory Adaptive Bitrate (ABR) switching model across separately encoded transport streams.</t>
        </li>
        <li>
          <t>A key management protocol.</t>
        </li>
      </ul>
    </section>
    <section anchor="media-packaging">
      <name>Media Packaging</name>
      <t>An m2ts-packaged MOQT Track carries a single ordered packet stream.  Each MOQT
Object payload is a concatenation of one or more whole source packets.  The
publisher <bcp14>MUST NOT</bcp14> split a source packet across MOQT Objects.</t>
      <t>When this packaging mode is used for a track, the MSF catalog <tt>packaging</tt> field
<bcp14>MUST</bcp14> be present and <bcp14>MUST</bcp14> be populated with the value "m2ts".</t>
      <section anchor="object-payload-format">
        <name>Object Payload Format</name>
        <t>The payload of each media Object is:</t>
        <artwork type="ascii-art"><![CDATA[
+===============+===============+=====+===============+
| source packet | source packet | ... | source packet |
+===============+===============+=====+===============+
]]></artwork>
        <t>The packet size is signaled by <tt>m2tsPacketSize</tt> (<xref target="m2ts-packet-size"/>).  The
payload length of every media Object on an m2ts track <bcp14>MUST</bcp14> be an integer
multiple of <tt>m2tsPacketSize</tt>.</t>
        <t>If <tt>m2tsPacketSize</tt> is 188, every source packet <bcp14>MUST</bcp14> begin with the MPEG-2 TS
sync byte 0x47.  If <tt>m2tsPacketSize</tt> is 192, the TS packet begins four octets
after the start of each source packet and the octet at that position <bcp14>MUST</bcp14> be
0x47.  A receiver <bcp14>MUST</bcp14> treat a packet that fails this validation as invalid
media data for that track.</t>
        <t>The source packets from received Objects are concatenated in ascending Group ID
and Object ID order to reconstruct the packet stream.  A subscriber that skips
or fails to receive an Object <bcp14>MUST</bcp14> consider the reconstructed packet stream
discontinuous at that point until it reaches a subsequent random access point.</t>
      </section>
      <section anchor="object-boundaries">
        <name>Object Boundaries</name>
        <t>Object boundaries are packaging boundaries and do not change MPEG-2 Transport
Stream semantics.  Continuity counters, adaptation fields, PCR, PTS, DTS,
Program Specific Information (PSI), and other transport-stream syntax remain
inside the source packets.</t>
        <t>A publisher <bcp14>SHOULD</bcp14> place an independently usable random access point at the
first media Object of each MOQT Group.  For video, this normally means that the
Group begins at or before the transport-stream packets carrying a random access
point and includes the PAT and PMT packets required for program demultiplexing.
Codec-level initialization data is carried inside the elementary stream packets
of the first video access unit and is therefore present whenever a random access
point is included.</t>
        <t>When <tt>m2tsRandomAccess</tt> (<xref target="m2ts-random-access"/>) is true, the first media Object
in every Group <bcp14>MUST</bcp14> begin at a random access point.</t>
      </section>
      <section anchor="group-numbering">
        <name>Group Numbering</name>
        <t>For live streams, publishers <bcp14>SHOULD</bcp14> start a new MOQT Group at each point where
the Group content is independently decodable without reference to prior Groups.
For video, a valid Group start is any intra-coded access point at which all
decoder references needed by that Group are present within the Group itself.
Instantaneous Decoder Refresh (IDR) frames always satisfy this condition.
A Clean Random Access (CRA) frame <bcp14>MAY</bcp14> serve as a Group start only if no
subsequent Random Access Skipped Leading (RASL) pictures in that Group
reference frames from a prior Group.  Publishers are not required to start a
new Group at every intra-coded access point: a CRA whose following RASL
pictures reference only frames present earlier in the same Group may remain
interior to that Group.
The Object ID <bcp14>MUST</bcp14> increase by one for each Object within a Group unless MOQT
delivery semantics permit gaps that are explicitly intended by the publisher.</t>
        <t>For video-on-demand (VOD) streams, Group ID and Object ID assignment <bcp14>SHOULD</bcp14> be stable for a given
asset so that relays and subscribers can cache and request repeatable ranges.</t>
      </section>
      <section anchor="packetization">
        <name>Packetization</name>
        <t>Publishers <bcp14>SHOULD</bcp14> choose Object sizes that are large enough to amortize MOQT
object overhead and small enough to avoid excessive head-of-line delay at the
application layer.  The number of source packets per Object can vary, but a
publisher <bcp14>SHOULD</bcp14> keep it stable within a track unless adapting to network or
encoder conditions.</t>
        <t>If <tt>m2tsPacketsPerObject</tt> is present, it declares the usual number of source
packets per media Object.  The final Object of a Group <bcp14>MAY</bcp14> contain fewer source
packets.  Receivers <bcp14>MUST</bcp14> use the actual Object payload length rather than
assuming every Object has the declared size.</t>
      </section>
      <section anchor="mpts">
        <name>Multi-Program Source Handling</name>
        <t>An m2ts track <bcp14>SHOULD</bcp14> carry packets from at most one MPEG-2 program,
producing a single-program transport stream.  A publisher receiving a
multi-program transport stream (MPTS) <bcp14>SHOULD</bcp14> produce a separate m2ts track
for each program it wishes to offer, filtering the source packets so that
each track contains only:</t>
        <ul spacing="normal">
          <li>
            <t>Null packets with Packet Identifier (PID) 0x1FFF, which <bcp14>MAY</bcp14> be removed or
retained at the publisher's discretion.</t>
          </li>
          <li>
            <t>Program Association Table packets (PID 0x0000), rewritten to list only the
program present in this track.</t>
          </li>
          <li>
            <t>Program Map Table packets for the selected program (whose PID is listed in
the Program Association Table entry for that program).</t>
          </li>
          <li>
            <t>All packets whose PID is listed in the Program Map Table of the selected
program, including the PCR_PID and the PIDs of all elementary streams.</t>
          </li>
        </ul>
        <t>These rules apply to unscrambled transport stream sources.  Publishers filtering
scrambled transport streams <bcp14>MUST</bcp14> also retain the conditional access packets
required for descrambling; conditional access integration is application-specific
and outside the scope of this document.</t>
        <t>The <tt>m2tsProgramNumber</tt> field (<xref target="m2ts-program-number"/>) <bcp14>SHOULD</bcp14> be present on
tracks derived from a multi-program source to identify the program carried.</t>
        <t>When multiple tracks are derived from the same MPTS source, the publisher
<bcp14>SHOULD</bcp14> use the MSF <tt>altGroup</tt> field if the programs are alternate renditions
of the same content.  Programs that are independent services <bcp14>SHOULD</bcp14> be
published as separate tracks; whether to include them in the same catalog is
application-specific.</t>
      </section>
      <section anchor="pcr-timing">
        <name>PCR and Timing</name>
        <t>The Program Clock Reference (PCR) is carried inside adaptation fields of
transport-stream packets as defined by <xref target="ISO138181"/>.  MOQT Object and Group
boundaries are packaging boundaries and do not alter PCR continuity within a
track.</t>
        <t>A publisher <bcp14>MUST NOT</bcp14> introduce a PCR discontinuity within a single MOQT Group.
A publisher that introduces a PCR discontinuity between consecutive MOQT Groups
<bcp14>MUST</bcp14> signal it by setting the discontinuity_indicator bit (ISO 13818-1
Section 2.4.3.5) in the adaptation field of the first TS packet carrying PCR
in the new Group.</t>
        <t>Note: The 33-bit PCR base field wraps around after approximately 26.5 hours of
continuous stream time.  For long-running live streams this is a normal event;
receivers should handle it as a continuous timeline continuation rather than a
discontinuity.  Receivers that use the MSF Media Timeline <xref target="MSF"/> for playout
timing can rely on its monotonic wall-clock abstraction independently of PCR
wrap-around.</t>
      </section>
      <section anchor="splice-signaling">
        <name>Splice Signaling</name>
        <t>SCTE-35 splice information is carried transparently in the TS stream as
splice_info_section() messages on their designated PID.  Publishers <bcp14>MAY</bcp14> surface
splice events via the MSF Event Timeline <xref target="MSF"/>.  This document does not
specify SCTE-35 processing.</t>
      </section>
    </section>
    <section anchor="catalog">
      <name>Catalog</name>
      <t>An m2ts track is described by the MSF catalog <xref target="MSF"/>.  The catalog track name,
delta update rules, variable substitution rules, authorization signaling, and
common track fields are inherited from MSF.</t>
      <t>This document defines additional fields for track objects whose <tt>packaging</tt>
value is "m2ts".  A parser <bcp14>MUST</bcp14> ignore fields it does not understand.</t>
      <section anchor="track-fields">
        <name>Track Object Fields</name>
        <t>Table 1 lists the m2ts-specific fields defined within a track object.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Name</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">M2TS packet size</td>
              <td align="left">m2tsPacketSize</td>
              <td align="left">
                <xref target="m2ts-packet-size"/></td>
            </tr>
            <tr>
              <td align="left">M2TS packets per Object</td>
              <td align="left">m2tsPacketsPerObject</td>
              <td align="left">
                <xref target="m2ts-packets-per-object"/></td>
            </tr>
            <tr>
              <td align="left">M2TS program number</td>
              <td align="left">m2tsProgramNumber</td>
              <td align="left">
                <xref target="m2ts-program-number"/></td>
            </tr>
            <tr>
              <td align="left">M2TS PMT PID</td>
              <td align="left">m2tsPmtPid</td>
              <td align="left">
                <xref target="m2ts-pmt-pid"/></td>
            </tr>
            <tr>
              <td align="left">M2TS PCR PID</td>
              <td align="left">m2tsPcrPid</td>
              <td align="left">
                <xref target="m2ts-pcr-pid"/></td>
            </tr>
            <tr>
              <td align="left">M2TS PSI interval</td>
              <td align="left">m2tsPsiInterval</td>
              <td align="left">
                <xref target="m2ts-psi-interval"/></td>
            </tr>
            <tr>
              <td align="left">M2TS random access</td>
              <td align="left">m2tsRandomAccess</td>
              <td align="left">
                <xref target="m2ts-random-access"/></td>
            </tr>
            <tr>
              <td align="left">M2TS timestamp mode</td>
              <td align="left">m2tsTimestampMode</td>
              <td align="left">
                <xref target="m2ts-timestamp-mode"/></td>
            </tr>
            <tr>
              <td align="left">M2TS SCTE-35 PID</td>
              <td align="left">m2tsScte35Pid</td>
              <td align="left">
                <xref target="m2ts-scte35-pid"/></td>
            </tr>
            <tr>
              <td align="left">Initialization data</td>
              <td align="left">initData</td>
              <td align="left">
                <xref target="init-data"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="m2ts-packet-size">
        <name>M2TS Packet Size</name>
        <t>Required: Yes    JSON Type: Number    Location: Track Object</t>
        <t>The source-packet size in octets.  The value <bcp14>MUST</bcp14> be either 188 or 192.  A value
of 188 identifies ordinary MPEG-2 TS packets.  A value of 192 identifies M2TS
source packets with a four-octet timestamp prefix followed by a 188-octet TS
packet.</t>
      </section>
      <section anchor="m2ts-packets-per-object">
        <name>M2TS Packets per Object</name>
        <t>Required: Optional    JSON Type: Number    Location: Track Object</t>
        <t>The usual number of source packets carried by each media Object.  This field is
advisory.  Receivers <bcp14>MUST</bcp14> validate each Object using its actual payload length.</t>
      </section>
      <section anchor="m2ts-program-number">
        <name>M2TS Program Number</name>
        <t>Required: Optional    JSON Type: Number    Location: Track Object</t>
        <t>The MPEG-2 Transport Stream program number carried by this track.  When
present, the track <bcp14>SHOULD</bcp14> carry packets from only that program (see
<xref target="mpts"/>).  When absent, a track <bcp14>MAY</bcp14> carry multiple programs and subscribers
<bcp14>MAY</bcp14> select a program using local policy or transport-stream signaling.</t>
      </section>
      <section anchor="m2ts-pmt-pid">
        <name>M2TS PMT PID</name>
        <t>Required: Optional    JSON Type: Number    Location: Track Object</t>
        <t>The packet identifier carrying the Program Map Table for <tt>m2tsProgramNumber</tt>.
This field is advisory and does not replace the Program Association Table or
Program Map Table carried in the transport stream.</t>
      </section>
      <section anchor="m2ts-pcr-pid">
        <name>M2TS PCR PID</name>
        <t>Required: Optional    JSON Type: Number    Location: Track Object</t>
        <t>The packet identifier carrying the Program Clock Reference for the program
identified by <tt>m2tsProgramNumber</tt>.  This field is advisory and does not
replace PCR signaling in the transport stream.</t>
      </section>
      <section anchor="m2ts-psi-interval">
        <name>M2TS PSI Interval</name>
        <t>Required: Optional    JSON Type: Number    Location: Track Object</t>
        <t>The maximum interval, in milliseconds, at which the publisher expects to repeat
the Program Association Table and Program Map Table in the packet stream.  When
present, publishers <bcp14>SHOULD</bcp14> repeat PSI at an interval no larger than this value
for live content.  Subscribers <bcp14>MAY</bcp14> use this value to estimate join latency.</t>
      </section>
      <section anchor="m2ts-random-access">
        <name>M2TS Random Access</name>
        <t>Required: Optional    JSON Type: Boolean    Location: Track Object</t>
        <t>When true, the first media Object in every MOQT Group begins at a random access
point.  When absent or false, subscribers <bcp14>MUST</bcp14> inspect the transport-stream
payload to determine where decoding can begin.</t>
      </section>
      <section anchor="m2ts-timestamp-mode">
        <name>M2TS Timestamp Mode</name>
        <t>Required: Optional    JSON Type: String    Location: Track Object</t>
        <t>For 192-octet source packets, this field identifies the interpretation of the
four-octet source-packet timestamp.  The value "arrival-time" indicates an
arrival-time or emission-time stamp associated with the following TS packet.  The
value "opaque" indicates that the timestamp prefix is carried without specified
semantics.  This field <bcp14>MUST NOT</bcp14> be present when <tt>m2tsPacketSize</tt> is 188.</t>
      </section>
      <section anchor="m2ts-scte35-pid">
        <name>M2TS SCTE-35 PID</name>
        <t>Required: Optional    JSON Type: Number    Location: Track Object</t>
        <t>The PID carrying SCTE-35 splice_info_section() messages for this track.  This
field is advisory; SCTE-35 messages are also discoverable via the PMT CA/registration
descriptor.  When present, receivers <bcp14>MAY</bcp14> use this value to locate splice events
without parsing PMT.  Publishers <bcp14>SHOULD</bcp14> include this field when the track carries
SCTE-35 splice signaling.</t>
      </section>
      <section anchor="init-data">
        <name>Initialization Data</name>
        <t>Required: Optional    JSON Type: String    Location: Track Object</t>
        <t>An m2ts track <bcp14>MAY</bcp14> use the MSF <tt>initData</tt> field to carry Base64 <xref target="BASE64"/>
encoded initialization data.  If present, the decoded value <bcp14>MUST</bcp14> be a sequence
of whole source packets using the packet size declared by <tt>m2tsPacketSize</tt>.</t>
        <t>Publishers <bcp14>SHOULD</bcp14> include current PAT and PMT packets in <tt>initData</tt> when those
tables are not guaranteed to be available at the first Object of each Group.
When PSI changes within a live track, publishers <bcp14>SHOULD</bcp14> update <tt>initData</tt> to
reflect the new PAT and PMT before publishing subsequent Objects.
Receivers <bcp14>MUST NOT</bcp14> assume that <tt>initData</tt> remains valid after a version change
in transport-stream PSI; updated PSI in the media Objects takes precedence.</t>
      </section>
    </section>
    <section anchor="catalog-examples">
      <name>Catalog Examples</name>
      <t>The following examples are non-normative.</t>
      <section anchor="example-live-ts">
        <name>Live 188-octet Transport Stream</name>
        <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1-ts",
      "namespace": "live.example.com/channel/1",
      "packaging": "m2ts",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 6000000,
      "m2tsPacketSize": 188,
      "m2tsPacketsPerObject": 64,
      "m2tsProgramNumber": 1,
      "m2tsPmtPid": 256,
      "m2tsPcrPid": 257,
      "m2tsPsiInterval": 100,
      "m2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-live-m2ts">
        <name>Live 192-octet M2TS Source Packets</name>
        <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1-m2ts",
      "namespace": "contribution.example.net/feed/a",
      "packaging": "m2ts",
      "isLive": true,
      "targetLatency": 500,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 12000000,
      "m2tsPacketSize": 192,
      "m2tsPacketsPerObject": 32,
      "m2tsProgramNumber": 1,
      "m2tsTimestampMode": "arrival-time",
      "m2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-vod">
        <name>VOD Transport Stream</name>
        <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "tracks": [
    {
      "name": "asset-main",
      "namespace": "vod.example.com/assets/1000",
      "packaging": "m2ts",
      "isLive": false,
      "trackDuration": 632000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 4500000,
      "m2tsPacketSize": 188,
      "m2tsPacketsPerObject": 96,
      "m2tsProgramNumber": 1,
      "m2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-mpts">
        <name>Multi-Program Source - Two Programs from One MPTS</name>
        <t>This example shows a catalog for a publisher that receives a 2-program
transport stream and publishes each program as a separate m2ts track.  The
two tracks share a namespace but are independent services; <tt>altGroup</tt> is not
used because the programs carry different content.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1",
      "namespace": "live.example.com/mux/1",
      "packaging": "m2ts",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 6000000,
      "m2tsPacketSize": 188,
      "m2tsPacketsPerObject": 64,
      "m2tsProgramNumber": 1,
      "m2tsPmtPid": 256,
      "m2tsPcrPid": 257,
      "m2tsPsiInterval": 100,
      "m2tsRandomAccess": true
    },
    {
      "name": "program-2",
      "namespace": "live.example.com/mux/1",
      "packaging": "m2ts",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 4000000,
      "m2tsPacketSize": 188,
      "m2tsPacketsPerObject": 64,
      "m2tsProgramNumber": 2,
      "m2tsPmtPid": 512,
      "m2tsPcrPid": 513,
      "m2tsPsiInterval": 100,
      "m2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-abr">
        <name>ABR Alternate Renditions - Two Bitrate Tracks</name>
        <t>This example shows a catalog for a live channel published at two bitrates as
alternate renditions.  Both tracks are in the same <tt>altGroup</tt>; video tracks
<bcp14>MUST</bcp14> align Group boundaries at identical presentation positions.  The tracks
use different PID assignments: a subscriber switching between them <bcp14>MUST</bcp14> re-parse
PAT and PMT on the new track before routing packets to a decoder.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "video-high",
      "namespace": "live.example.com/channel/1",
      "packaging": "m2ts",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 6000000,
      "altGroup": 1,
      "m2tsPacketSize": 188,
      "m2tsPacketsPerObject": 64,
      "m2tsProgramNumber": 1,
      "m2tsPmtPid": 256,
      "m2tsPcrPid": 257,
      "m2tsPsiInterval": 100,
      "m2tsRandomAccess": true
    },
    {
      "name": "video-low",
      "namespace": "live.example.com/channel/1",
      "packaging": "m2ts",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 2000000,
      "altGroup": 1,
      "m2tsPacketSize": 188,
      "m2tsPacketsPerObject": 64,
      "m2tsProgramNumber": 1,
      "m2tsPmtPid": 512,
      "m2tsPcrPid": 513,
      "m2tsPsiInterval": 100,
      "m2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="subscriber-processing">
      <name>Subscriber Processing</name>
      <t>A subscriber obtains the catalog using the MSF catalog workflow and subscribes
to one or more m2ts tracks.  For each received media Object, the subscriber:</t>
      <ol spacing="normal" type="1"><li>
          <t>Validates that the payload length is a non-zero integer multiple of
<tt>m2tsPacketSize</tt>.</t>
        </li>
        <li>
          <t>Validates the TS sync byte position for each source packet.</t>
        </li>
        <li>
          <t>Reconstructs the packet stream by appending the source packets in MOQT object
order.</t>
        </li>
        <li>
          <t>Applies normal MPEG-2 Transport Stream demultiplexing, timing recovery, and
decoder initialization.</t>
        </li>
      </ol>
      <t>If validation fails, the subscriber <bcp14>SHOULD</bcp14> discard the invalid Object and treat
the reconstructed packet stream as discontinuous.  A subscriber <bcp14>MAY</bcp14> continue
processing at the next Object, but it <bcp14>SHOULD</bcp14> wait for a random access point
before presenting decoded media.</t>
      <t>When joining a live track, a subscriber <bcp14>SHOULD</bcp14> start at the newest Group whose
first Object is available when <tt>m2tsRandomAccess</tt> is true.  Otherwise, a
subscriber <bcp14>SHOULD</bcp14> select a starting Group far enough back to encompass at least
one complete PSI repetition cycle before its target presentation time; when
<tt>m2tsPsiInterval</tt> is declared, that value bounds the maximum look-back interval
needed.  A subscriber <bcp14>MAY</bcp14> use the MSF Media Timeline <xref target="MSF"/> to resolve this
time bound to a concrete MOQT Group location for use with a Joining FETCH
<xref target="MoQTransport"/>.  A subscriber <bcp14>MUST NOT</bcp14> begin media presentation until it has
received a valid PAT and PMT for the track.</t>
    </section>
    <section anchor="relay-processing">
      <name>Relay Processing</name>
      <t>MOQT relays are not required to parse MPEG-2 Transport Stream syntax.  A relay
can cache, forward, and prioritize m2ts Objects using MOQT namespace, track,
Group ID, Object ID, and delivery metadata.</t>
      <t>Relays <bcp14>MAY</bcp14> discard older Groups according to MOQT cache policy.  For live
content, when <tt>m2tsRandomAccess</tt> is true, relays that retain partial Groups
<bcp14>SHOULD</bcp14> retain the first Object of each Group; by definition, publishers are
required to populate that Object with a random access point together with the
PAT and PMT packets needed by joining subscribers.</t>
    </section>
    <section anchor="switching">
      <name>Switching and Alternate Renditions</name>
      <t>Multiple m2ts tracks can be advertised as alternatives using the MSF <tt>altGroup</tt>
field.  Video tracks in the same alternate group <bcp14>MUST</bcp14> place Group boundaries at
identical presentation positions; other tracks <bcp14>SHOULD</bcp14> align their Group
boundaries to the same positions where possible.  All tracks in the alternate
group <bcp14>SHOULD</bcp14> set <tt>m2tsRandomAccess</tt> to true.  This ensures that a subscriber
can switch between alternate video tracks at any Group boundary without
encountering a misaligned access point.
A subscriber <bcp14>SHOULD</bcp14> switch between alternate m2ts tracks only at Group
boundaries or at transport-stream random access points that it can
independently decode.</t>
      <t>This document does not require continuity counter values or PID assignments to
match across alternate tracks.  Receivers <bcp14>MUST</bcp14> treat a switch between tracks as
a packet-stream discontinuity unless application-specific signaling establishes
stronger continuity.</t>
      <t>A receiver <bcp14>MUST</bcp14> treat a switch between alternate tracks as a PCR discontinuity
and <bcp14>MUST</bcp14> re-initialize its system time clock (STC) recovery using the first PCR
value received on the new track as the initial reference.  In addition to the
Group boundary alignment requirements above, publishers providing alternate
tracks <bcp14>SHOULD</bcp14> align presentation timestamps at Group boundaries across tracks
to enable seamless presentation switching at the application layer.
Because PID assignments need not match across alternate tracks, a receiver
<bcp14>MUST</bcp14> re-parse the PAT and PMT of the new track after every track switch before
routing elementary-stream packets to a decoder.</t>
    </section>
    <section anchor="content-protection">
      <name>Content Protection</name>
      <t>This packaging format preserves any scrambling or conditional access information
present in the MPEG-2 Transport Stream.  Transport-stream scrambling is opaque
to MOQT relays and to this specification.</t>
      <t>Object-level encryption <bcp14>MAY</bcp14> be applied using a mechanism such as MoQ Secure
Objects <xref target="SecureObjects"/> when signaled by the catalog.  When object-level
encryption is used, source packet validation is performed after successful
decryption.</t>
    </section>
    <section anchor="authorization">
      <name>Authorization</name>
      <t>Authorization requirements can be advertised using MSF catalog authorization
fields.  For example, a publisher can use Common Access Token signaling
<xref target="C4M"/>, Privacy Pass authorization <xref target="PrivacyPassAuth"/>, or an application
defined authorization scheme.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of MOQT <xref target="MoQTransport"/>, MSF <xref target="MSF"/>, MPEG-2
Transport Stream <xref target="ISO138181"/>, and any object encryption scheme apply.</t>
      <t>Receivers need to treat transport-stream syntax as untrusted input.  Invalid
packet sizes, invalid sync bytes, malformed PSI, inconsistent continuity
counters, excessive table repetition, and timestamp discontinuities can cause
decoder failures or resource exhaustion if not bounded by implementation policy.</t>
      <t>Catalog metadata is also untrusted input.  Subscribers <bcp14>MUST</bcp14> validate packet
sizes, payload lengths, Base64 values, PIDs, program numbers, and object
ordering before using the values to allocate memory or configure decoders.</t>
      <t>Object-level encryption protects MOQT Object payloads but does not hide MOQT
namespace, track name, Group ID, Object ID, object size, or delivery timing from
authorized relays.  Applications that require confidentiality for media payloads
<bcp14>SHOULD</bcp14> use an object encryption scheme in addition to transport security.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>If MSF establishes an IANA registry for packaging values, this document requests
registration of the value "m2ts" with this document as the reference.</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="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="MSF">
          <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="ISO138181">
          <front>
            <title>Information technology - Generic coding of moving pictures and associated audio information: Systems</title>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="ISO/IEC" value="13818-1"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="BASE64">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </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="SecureObjects">
          <front>
            <title>End-to-End Secure Objects for Media over QUIC Transport</title>
            <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies an end-to-end authenticated encryption scheme
   for application objects transmitted via Media over QUIC (MoQ)
   Transport.  The scheme enables original publishers that share a
   symmetric key with end subscribers, to ensuring that MoQ relays are
   unable to decrypt object contents.  Additionally, subscribers can
   verify the integrity and authenticity of received objects, confirming
   that the content has not been modified in transit.  Additionally it
   allows MoQ parameters to be protected so the publisher can select if
   they are readable and/or modifiable by relays.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-secure-objects-00"/>
        </reference>
        <reference anchor="C4M">
          <front>
            <title>Authentication scheme for MOQT using Common Access Tokens</title>
            <author fullname="Will Law" initials="W." surname="Law">
              <organization>Akamai</organization>
            </author>
            <author fullname="Chris Lemmons" initials="C." surname="Lemmons">
              <organization>Comcast</organization>
            </author>
            <author fullname="Gwendal Simon" initials="G." surname="Simon">
              <organization>Synamedia</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date day="19" month="September" year="2025"/>
            <abstract>
              <t>   A token-based authentication scheme for use with Media Over QUIC
   Transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-c4m-00"/>
        </reference>
        <reference anchor="PrivacyPassAuth">
          <front>
            <title>Privacy Pass Authentication for Media over QUIC (MoQ)</title>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
              <organization>Cisco</organization>
            </author>
            <author fullname="Thibault Meunier" initials="T." surname="Meunier">
              <organization>Cloudflare Inc.</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies the use of Privacy Pass architecture and
   issuance protocols for authorization in Media over QUIC (MoQ)
   transport protocol.  It defines how Privacy Pass tokens can be
   integrated with MoQ's authorization framework to provide privacy-
   preserving authentication for subscriptions, fetches, publications,
   and relay operations while supporting fine-grained access control
   through prefix-based track namespace and track name matching rules.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-privacy-pass-auth-02"/>
        </reference>
      </references>
    </references>
    <?line 727?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document follows the repository and draft structure used by the MOQT
Streaming Format work.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
gbsxjtyz8WeK0EU9VP8DXS2iK61vAAA=

-->

</rfc>
