<?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 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gregoire-moq-msfts-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="MOQT MPEG-2 TS Packaging">MPEG-2 Transport Stream Packaging for MOQT</title>
    <seriesInfo name="Internet-Draft" value="draft-gregoire-moq-msfts-01"/>
    <author fullname="Paul Gregoire">
      <organization>Red5</organization>
      <address>
        <email>paul@red5.net</email>
      </address>
    </author>
    <author fullname="Gwendal Simon">
      <organization>Quortex</organization>
      <address>
        <email>gwendal.simon@quortex.io</email>
      </address>
    </author>
    <date year="2026" month="September" day="24"/>
    <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 95?>

<t>This document extends the MOQT Streaming Format (MSF) catalog by defining the
"mpeg2ts" packaging value for carrying MPEG-2 Transport Stream and M2TS source
packets over MOQT. It defines catalog-extension fields for transport-stream
track description and specifies subscriber 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 103?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>MPEG-2 Transport Stream MOQT Streaming Format (MSFTS) is an extension of the
MOQT Streaming Format (MSF) <xref target="MSF"/> that delivers MPEG-2 Transport Stream (TS)
<xref target="ISO138181"/> content over MOQT <xref target="MOQTransport"/>. MSFTS retains the scope,
capabilities, and features of MSF, including the catalog format, the timeline,
and alternate rendition switching.</t>
      <t>MSFTS defines two families of Object payload. A track of the first family
carries whole TS source packets, either 188 or 192 octets each. It serves a
subscriber that feeds equipment expecting a transport stream, for example an
Integrated Receiver Decoder (IRD). A track of the second family carries the
units of one elementary stream: a frame in an LOC track <xref target="LOC"/>, or a
Packetized Elementary Stream (PES) packet or a section in an mpeg2ts track
(<xref target="es-units-carriage"/>, <xref target="media-frames-carriage"/>). It serves a subscriber
that feeds a decoder. A subscriber that outputs a transport stream keeps the
packets of the first family. For the second family it builds the packets, the
signaling, and the timing itself.</t>
      <t>This document describes version 2 of the MSFTS 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>MSFTS uses the Low Overhead Media Container (LOC) <xref target="LOC"/> packaging defined in
<xref target="MSF"/> for the media frames of a program (<xref target="media-packaging"/>). For an
mpeg2ts track, this document defines the Object payload rules that LOC would
otherwise supply (<xref target="object-payload-format"/>).</t>
      <t>This document uses two unrelated version numbers. The catalog <tt>version</tt> field
carries the MSF revision. The MSFTS format version given in <xref target="introduction"/>
identifies this packaging specification and never appears in a catalog. A
catalog conforming to this document <bcp14>MUST</bcp14> set <tt>version</tt> as <xref target="MSF"/> requires.</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 following abbreviations from <xref target="ISO138181"/>: Packet
Identifier (PID), Program Association Table (PAT), Program Map Table (PMT),
Conditional Access Table (CAT), Program Clock Reference (PCR), Packetized
Elementary Stream (PES), Program Specific Information (PSI), Presentation Time
Stamp (PTS), and Decoding Time Stamp (DTS).</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 catalog signals which of
the two a track carries.</t>
        </dd>
        <dt>Subscriber:</dt>
        <dd>
          <t>The MOQT endpoint that subscribes to a track and receives its Objects, as
defined by <xref target="MOQTransport"/>. A subscriber operates on MOQT Objects and
produces the reconstructed packet stream.</t>
        </dd>
        <dt>Receiver:</dt>
        <dd>
          <t>The equipment that consumes the reconstructed packet stream, for example an
Integrated Receiver Decoder (IRD). A receiver operates on source packets and
needs no knowledge of MOQT. One implementation can act as both a subscriber
and a receiver.</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 PAT lists exactly one program.</t>
        </dd>
        <dt>Multi-program transport stream (MPTS):</dt>
        <dd>
          <t>A transport stream whose PAT lists two or more programs.</t>
        </dd>
      </dl>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>The purpose of MSFTS is to carry an MPEG-2 Transport Stream over
<xref target="MOQTransport"/> without changing the transport stream itself.
Interoperability implies that:</t>
      <ul spacing="normal">
        <li>
          <t>An original publisher can map an incoming transport stream into MOQT Objects
and Groups, describe it in an MSF catalog, and announce it to an MOQT relay.</t>
        </li>
        <li>
          <t>An MOQT relay can cache and propagate the tracks without parsing the
transport stream.</t>
        </li>
        <li>
          <t>A final subscriber can parse the catalog, subscribe to the tracks it needs,
reconstruct the packet stream, and pass it to a transport-stream decoder.</t>
        </li>
      </ul>
      <t>A subscriber needs to know how the publisher produced each track: the unit
that its Objects carry, how the publisher derived the track, which
program or elementary stream the track carries, and where the timing reference
lives. MSFTS defines the catalog signaling that carries those decisions from
the publisher to the subscriber.</t>
    </section>
    <section anchor="media-packaging">
      <name>Media Packaging</name>
      <t>This document describes tracks of two MSF packagings. A track whose Objects
carry decoded media frames <bcp14>MUST</bcp14> set the MSF <tt>packaging</tt> field to "loc" and
follow <xref target="LOC"/>, so a subscriber that knows nothing of MPEG-2 systems plays it.
A track whose Objects carry TS source packets, PES packets, or sections <bcp14>MUST</bcp14>
set <tt>packaging</tt> to "mpeg2ts", and it carries a single ordered stream of either
TS source packets or the units that <tt>mpeg2tsEsPayload</tt>
(<xref target="mpeg2ts-es-payload"/>) names.</t>
      <t>The track fields defined in <xref target="track-fields"/> apply to a track of either
packaging.</t>
      <section anchor="object-payload-format">
        <name>Object Payload Format</name>
        <t>The Object payload of a track depends on what the track carries. This section
gives the three forms.</t>
        <section anchor="payload-source-packets">
          <name>Source Packets</name>
          <t>On an mpeg2ts track that declares no <tt>mpeg2tsEsPayload</tt>, the payload of each
MOQT Object is a sequence of whole source packets:</t>
          <figure>
            <name>Object payload of an mpeg2ts track</name>
            <artwork type="ascii-art"><![CDATA[
+===============+===============+=====+===============+
| source packet | source packet | ... | source packet |
+===============+===============+=====+===============+
]]></artwork>
          </figure>
          <t>Every source packet on a track has the same size, either 188 or 192 octets, as
<tt>mpeg2tsPacketSize</tt> (<xref target="mpeg2ts-packet-size"/>) declares. An Object payload <bcp14>MUST</bcp14>
contain only whole source packets, so its length is always a multiple of
<tt>mpeg2tsPacketSize</tt>. A subscriber <bcp14>MUST</bcp14> reject an Object that breaks this rule.</t>
          <t>A subscriber reconstructs the packet stream by concatenating the source
packets from received Objects in ascending Group ID and Object ID order. 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>
          <t>Object boundaries are packaging boundaries and do not change TS semantics.
Continuity counters, adaptation fields, PCR, PTS, DTS, PSI, and other TS syntax
remain inside the source packets.</t>
          <t>TS semantics cover a delivery schedule as well as syntax. The PCR values in a
stream state when each TS byte is meant to reach a decoder. Section 2.4.2 of
<xref target="ISO138181"/> expresses the buffer constraints of a reference decoder against
that schedule, <xref target="ISO138189"/> gives the tolerance within which a delivered stream
matches it, and <xref target="TR101290"/> defines the limits that a DVB deployment must
meet. Object boundaries do not alter the schedule that a stream describes, and
<xref target="pcr-timing"/> covers how MOQT delivery relates to it.</t>
          <t>In an unmodified mode (<xref target="mpeg2ts-mode"/>), a publisher <bcp14>MUST NOT</bcp14> modify the
continuity counter of any source packet and <bcp14>MUST NOT</bcp14> remap PIDs.
<xref target="carriage-modes"/> defines the modifications a publisher may make in the other
modes.</t>
        </section>
        <section anchor="payload-units">
          <name>PES Packets and Sections</name>
          <t>When <tt>mpeg2tsEsPayload</tt> (<xref target="mpeg2ts-es-payload"/>) is present, each Object
carries exactly one unit of the elementary stream or the table that
<tt>mpeg2tsEsPid</tt> names. A "pes" Object carries one complete PES packet, header
included, so the PTS, the DTS, and every other PES header field reach the
subscriber. A "section" Object carries one complete section, header and CRC
included, which <tt>section_length</tt> delimits.</t>
          <t>A subscriber <bcp14>MUST</bcp14> reject an Object that carries more than one unit, or part of
one. The units carry no continuity counter, no adaptation field, and no PCR,
and <xref target="es-units-carriage"/> states what a subscriber regenerates.</t>
        </section>
        <section anchor="payload-frames">
          <name>Media Frames</name>
          <t>A track whose <tt>packaging</tt> is "loc" carries one media frame per Object, and
<xref target="LOC"/> defines the payload. The fields of <xref target="track-fields"/> record where the
elementary stream sat in the source transport stream, and they change neither
the payload nor its framing.</t>
        </section>
      </section>
      <section anchor="group-boundaries">
        <name>Group Boundaries</name>
        <t>For live single-program tracks, a publisher <bcp14>SHOULD</bcp14> start a new MOQT Group at
each point where the Group content is independently decodable without
reference to prior Groups. A publisher <bcp14>SHOULD</bcp14> place a random access point at
the first Object of each Group, and the Group then includes the PAT and PMT
packets required for program demultiplexing.</t>
        <t>For a track carrying a whole multiplex, Group boundary placement depends on
whether the publisher can identify random access points across the multiplex.
A publisher that can identify them <bcp14>MAY</bcp14> align Group boundaries to those points
and set <tt>mpeg2tsRandomAccess</tt> to true.</t>
        <t>When <tt>mpeg2tsRandomAccess</tt> (<xref target="mpeg2ts-random-access"/>) is true, the first
Object in every Group <bcp14>MUST</bcp14> provide a valid random access starting point for
that Group.</t>
      </section>
      <section anchor="carriage-modes">
        <name>Source Handling and Carriage Modes</name>
        <t>The required <tt>mpeg2tsMode</tt> field (<xref target="mpeg2ts-mode"/>) names what a track carries
and how the publisher derived it. <xref target="carriage-table"/> gives the six values, and
the sections that follow define each one.</t>
        <table anchor="carriage-table">
          <name>Fields that each mode requires</name>
          <thead>
            <tr>
              <th align="left">mpeg2tsMode</th>
              <th align="left">packaging</th>
              <th align="left">mpeg2tsPacketSize</th>
              <th align="left">mpeg2tsEsPid</th>
              <th align="left">mpeg2tsEsPayload</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">unmodified-program</td>
              <td align="left">mpeg2ts</td>
              <td align="left">present</td>
              <td align="left">absent</td>
              <td align="left">absent</td>
            </tr>
            <tr>
              <td align="left">unmodified-multiplex</td>
              <td align="left">mpeg2ts</td>
              <td align="left">present</td>
              <td align="left">absent</td>
              <td align="left">absent</td>
            </tr>
            <tr>
              <td align="left">per-program</td>
              <td align="left">mpeg2ts</td>
              <td align="left">present</td>
              <td align="left">absent</td>
              <td align="left">absent</td>
            </tr>
            <tr>
              <td align="left">es-packets</td>
              <td align="left">mpeg2ts</td>
              <td align="left">present</td>
              <td align="left">present</td>
              <td align="left">absent</td>
            </tr>
            <tr>
              <td align="left">es-units</td>
              <td align="left">mpeg2ts</td>
              <td align="left">absent</td>
              <td align="left">present</td>
              <td align="left">present</td>
            </tr>
            <tr>
              <td align="left">media-frames</td>
              <td align="left">loc</td>
              <td align="left">absent</td>
              <td align="left">present</td>
              <td align="left">absent</td>
            </tr>
          </tbody>
        </table>
        <t>A subscriber <bcp14>MUST</bcp14> treat a track that breaks <xref target="carriage-table"/> as invalid.</t>
        <section anchor="unmodified-program-carriage">
          <name>Unmodified Program</name>
          <t>The publisher forwards the source packets of a single-program transport stream
without modification: no program selection, no packet identifier remap, no PAT
or PMT rewrite, and no insertion or removal of null packets. A subscriber can
reconstruct the source stream byte-for-byte.</t>
          <t>A publisher <bcp14>SHOULD</bcp14> verify that its pipeline preserves every source packet
before it declares this mode.</t>
          <t>The catalog does not need to describe the program, because the PAT and PMT
reach the subscriber unaltered within one PSI repetition cycle.</t>
        </section>
        <section anchor="unmodified-multiplex-carriage">
          <name>Unmodified Multiplex</name>
          <t>The publisher forwards the source packets of a multi-program transport stream,
under the rules of <xref target="unmodified-program-carriage"/>, and emits every packet as
received. Because the publisher selects no program, <tt>mpeg2tsProgramNumber</tt> and
<tt>mpeg2tsPcrPid</tt> <bcp14>MUST</bcp14> be absent.</t>
        </section>
        <section anchor="per-program-carriage">
          <name>Per-Program</name>
          <t>The publisher carries one program that it derived from the source. It has
changed the source stream to do so, for example by selecting the program,
filtering packets, rewriting the PAT or the PMT, or adding or removing null
packets.</t>
          <t>A publisher deriving a per-program track <bcp14>SHOULD</bcp14> drop every source packet
except:</t>
          <ul spacing="normal">
            <li>
              <t>PAT packets (PID 0x0000), rewritten to list only the program present in
this track.</t>
            </li>
            <li>
              <t>PMT packets for the selected program, on the PID that the rewritten PAT
lists.</t>
            </li>
            <li>
              <t>Packets on any PID that the selected program's PMT lists, including the PCR
PID, the PIDs of all elementary streams, and the PIDs that any
CA_descriptor references.</t>
            </li>
            <li>
              <t>Packets carrying the service information (SI) tables that the publisher
retains, if any.</t>
            </li>
            <li>
              <t>Conditional access packets, including the CAT on PID 0x0001, which no PMT
lists.</t>
            </li>
            <li>
              <t>Null packets (PID 0x1FFF), which the publisher <bcp14>MAY</bcp14> drop or retain.</t>
            </li>
          </ul>
          <t>A publisher that rewrites the PAT and the PMT <bcp14>SHOULD</bcp14> emit them at least as
often as the source stream did.</t>
          <t>A publisher filtering a scrambled transport stream <bcp14>MUST</bcp14> retain the conditional
access packets required for descrambling. Conditional access integration is
application-specific and outside the scope of this document. A CAT carried
from a multi-program source references the entitlement management streams of
every program in the multiplex, so a publisher <bcp14>SHOULD</bcp14> rewrite it to leave only
the entries for the carried program.</t>
          <t>The <tt>mpeg2tsProgramNumber</tt> field (<xref target="mpeg2ts-program-number"/>) <bcp14>SHOULD</bcp14> be
present on per-program tracks to identify the program carried. When multiple
per-program 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, and <bcp14>SHOULD</bcp14> publish programs that are independent services as
separate tracks.</t>
          <t>Removing null packets changes the inter-packet byte spacing that
constant-bit-rate receivers use to recover the mux clock. A subscriber wishing
to reconstruct a constant-bit-rate output stream cannot derive the original
rate from the stream alone, so a publisher declares it with <tt>mpeg2tsMuxRate</tt>
(<xref target="mpeg2ts-mux-rate"/>).</t>
          <t>A publisher that retains SI tables <bcp14>SHOULD</bcp14> declare their PIDs using
<tt>mpeg2tsSiPids</tt> (<xref target="mpeg2ts-si-pids"/>), so that a subscriber can tell which
tables are present without inspecting the packet stream. The declaration is
needed because no PMT lists the SI PIDs, so the packet filter defined at the
start of this section drops these tables unless the publisher retains them
deliberately. A track without them has no service identity, no event schedule,
and no broadcast time, which a publisher targeting broadcast or IRD reception
<bcp14>SHOULD</bcp14> preserve.</t>
          <t>Digital Video Broadcasting (DVB) and the Advanced Television Systems Committee
(ATSC) define different SI tables and place them on different PIDs. <xref target="DVBSI"/>
specifies the DVB tables and <xref target="ATSCPSIP"/> specifies the ATSC Program and
System Information Protocol. A publisher <bcp14>SHOULD</bcp14> retain the tables that the
target standard requires.</t>
          <t>SI tables that describe individual services carry entries for every program in
a multiplex, so a publisher deriving a per-program track <bcp14>SHOULD</bcp14> rewrite them
to leave only the entries for the carried program.</t>
        </section>
        <section anchor="es-level-carriage">
          <name>ES-Packets</name>
          <t>When <tt>mpeg2tsEsPid</tt> (<xref target="mpeg2ts-es-pid"/>) is present, the track carries a
single elementary stream or signaling table. The track payload contains only
the packets or the units of the PID that <tt>mpeg2tsEsPid</tt> identifies, and it <bcp14>MUST
NOT</bcp14> contain null packets.</t>
          <t>A publisher using ES-level carriage <bcp14>SHOULD</bcp14> publish the program signaling as two
further tracks, one carrying the PAT and one carrying the PMT of the program
(<xref target="mpeg2ts-es-pid"/>). The tables then reach a subscriber as the publisher
produced them, with their descriptors and their stream types intact. The
publisher <bcp14>SHOULD</bcp14> rewrite the PAT to list only the program that it carries.</t>
          <t>When <tt>mpeg2tsPcrPid</tt> equals <tt>mpeg2tsEsPid</tt>, the track carries the PCR and
provides the timing reference for the program. When <tt>mpeg2tsPcrPid</tt> identifies
a different PID, another track carries the PCR, and a subscriber that needs
PCR timing <bcp14>MUST</bcp14> subscribe to that track. <xref target="pcr-timing"/> applies to the track
that carries the PCR.</t>
          <t>A publisher producing multiple ES-level media tracks for the same program
<bcp14>SHOULD</bcp14> align Group boundaries across those tracks so that matching Group
numbers correspond to the same presentation position. Elementary streams have
different frame durations, so exact alignment is not always possible. The
recommendation does not apply to a track carrying a table, which has no
presentation position.</t>
          <t>A subscriber that combines ES-level tracks and outputs a TS <bcp14>MUST</bcp14> subscribe to
the PAT track and to the PMT track of the program
when the catalog offers them. It <bcp14>MUST</bcp14> emit both tables, and it <bcp14>MUST</bcp14> repeat
them at the interval that the standard governing its output requires, for
example <xref target="TR101290"/> for a DVB deployment. When it carries a subset of the
elementary streams that the PMT lists, it <bcp14>MUST</bcp14> remove the entries for the
streams it does not carry, correct the CRC of the section, and increment its
<tt>version_number</tt>. When the tracks carry source packets, it <bcp14>MUST</bcp14> take the PCR
from the track whose <tt>mpeg2tsEsPid</tt> equals the <tt>mpeg2tsPcrPid</tt> that those
tracks declare.</t>
          <t>A subscriber that finds no PAT track and no PMT track cannot produce a
conformant PMT, because the catalog carries no stream type for an elementary
stream. Such a subscriber <bcp14>MUST NOT</bcp14> present its output as a conformant
transport stream.</t>
          <t>An ES-level track carries no CAT, so it carries no conditional access
association between a scrambled elementary stream and the streams that key it.
A publisher also cannot identify random access points in a payload it cannot
decrypt, so it cannot set <tt>mpeg2tsRandomAccess</tt> to true. A publisher carrying
a scrambled source <bcp14>SHOULD</bcp14> use unmodified or per-program carriage.</t>
        </section>
        <section anchor="es-units-carriage">
          <name>ES-Units</name>
          <t>Each Object carries either one PES packet or one section of the PID that
<tt>mpeg2tsEsPid</tt> names (<xref target="payload-units"/>). A publisher sets <tt>mpeg2tsEsPayload</tt>
(<xref target="mpeg2ts-es-payload"/>) to "pes" for an elementary stream it did not decode,
so the PTS, the DTS, and every other PES header field survive without the
catalog describing them. It sets the field to "section" for a table, including
the PAT and the PMT that <xref target="es-level-carriage"/> recommends.</t>
          <t>A track in this mode <bcp14>MUST NOT</bcp14> carry a scrambled elementary stream.</t>
          <t>A subscriber that outputs a transport stream from tracks in this mode, or in
the mode of <xref target="media-frames-carriage"/>, synthesizes what those tracks no longer
carry. It <bcp14>MUST</bcp14> generate the continuity counters, the adaptation fields, and the
PCR of its output, and it <bcp14>MUST</bcp14> packetize each unit and each media frame onto
the PID that <tt>mpeg2tsEsPid</tt> records. It <bcp14>MAY</bcp14> use <tt>mpeg2tsMuxRate</tt>
(<xref target="mpeg2ts-mux-rate"/>) as the rate to pad toward. The reconstructed stream
carries neither the byte schedule nor the packet layout of the source, so a
deployment that needs either one uses an unmodified mode or
<xref target="per-program-carriage"/>.</t>
        </section>
        <section anchor="media-frames-carriage">
          <name>Media Frames</name>
          <t>The publisher decoded the elementary stream, and each Object carries one media
frame in an LOC track <xref target="LOC"/>, with the timestamp and the decoder configuration
that LOC and MSF define. The track carries <tt>mpeg2tsEsPid</tt> to record the PID
that the elementary stream held, and <tt>mpeg2tsProgramNumber</tt> to record the
program. A subscriber that only plays the media needs nothing else from this
document.</t>
          <t>A track in this mode <bcp14>MUST NOT</bcp14> carry a scrambled elementary stream. A subscriber
that outputs a transport stream follows <xref target="es-units-carriage"/>.</t>
        </section>
      </section>
      <section anchor="pcr-timing">
        <name>PCR and Timing</name>
        <t>The 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
(<xref target="ISO138181"/>, Section 2.4.3.5) in the adaptation field of the first TS
packet carrying PCR in the new Group. The PCR base field wraps around during
long-running streams, and a wrap is not a discontinuity: a publisher <bcp14>MUST NOT</bcp14>
signal one when the PCR base wraps.</t>
        <t>A subscriber cannot recover the source mux clock from the rate at which
packets arrive. MOQT delivers whole Objects, and a relay can serve them from
its cache as fast as the link allows, so arrival timing carries no information
about the source. Conformance to the delivery schedule is therefore a property
of how a subscriber delivers its reconstructed packet stream to a receiver,
and not of the carriage between publisher and subscriber.</t>
      </section>
      <section anchor="egress-timing">
        <name>Egress Timing</name>
        <t>The PCR values of a reconstructed packet stream describe a delivery schedule.
The stream meets that schedule only if the subscriber hands each source packet
to the receiver at the time the schedule states.</t>
        <t>A subscriber whose receiver recovers its clock from packet arrival <bcp14>MUST</bcp14>
deliver the source packets on a schedule consistent with the PCR values they
carry. That subscriber <bcp14>SHOULD</bcp14> meet the PCR repetition and accuracy limits of
the standard governing the receiver, given by <xref target="TR101290"/> for a DVB
deployment. Where the receiver expects a constant bit rate, the subscriber
<bcp14>SHOULD</bcp14> use <tt>mpeg2tsMuxRate</tt> (<xref target="mpeg2ts-mux-rate"/>) as the stuffing target. A
stuffing target does not reproduce the source schedule. Reproducing it
requires timing information that this document does not define.</t>
      </section>
      <section anchor="splice-signaling">
        <name>Splice Signaling</name>
        <t>An mpeg2ts track carries SCTE-35 <xref target="SCTE35"/> splice information in band, as
splice_info_section() messages on the PID that <tt>mpeg2tsScte35Pid</tt>
(<xref target="mpeg2ts-scte35-pid"/>) declares. This document does not specify SCTE-35
processing.</t>
        <t>A publisher <bcp14>MAY</bcp14> also publish the same splice events out of band, on an MSF
Event Timeline track. <xref target="SCTE35Timeline"/> defines the event type identifiers
and the payload format for that track. A subscriber can then read splice
events without parsing the packet stream.</t>
      </section>
    </section>
    <section anchor="catalog">
      <name>Catalog</name>
      <t>The MSF catalog <xref target="MSF"/> describes an mpeg2ts track. This document extends that
catalog by defining the <tt>mpeg2ts</tt> value for the inherited <tt>packaging</tt> field
and additional fields for track objects that use that value. The catalog track
name, root catalog fields, common track fields, delta update rules, variable
substitution rules, and authorization signaling are inherited unchanged from
MSF unless this document explicitly states otherwise. A parser <bcp14>MUST</bcp14> ignore
fields it does not understand.</t>
      <section anchor="track-fields">
        <name>Track Object Fields</name>
        <t><xref target="track-fields-table"/> lists the mpeg2ts-specific fields defined within a
track object. A track whose <tt>packaging</tt> is "mpeg2ts" uses them, and a track
carrying decoded media frames uses <tt>mpeg2tsEsPid</tt>, <tt>mpeg2tsProgramNumber</tt>, and
<tt>mpeg2tsPcrPid</tt> while its <tt>packaging</tt> is "loc" (<xref target="media-frames-carriage"/>).</t>
        <table anchor="track-fields-table">
          <name>Track object fields defined by this document</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Name</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Mode</td>
              <td align="left">mpeg2tsMode</td>
              <td align="left">
                <xref target="mpeg2ts-mode"/></td>
            </tr>
            <tr>
              <td align="left">Packet size</td>
              <td align="left">mpeg2tsPacketSize</td>
              <td align="left">
                <xref target="mpeg2ts-packet-size"/></td>
            </tr>
            <tr>
              <td align="left">ES PID</td>
              <td align="left">mpeg2tsEsPid</td>
              <td align="left">
                <xref target="mpeg2ts-es-pid"/></td>
            </tr>
            <tr>
              <td align="left">ES payload</td>
              <td align="left">mpeg2tsEsPayload</td>
              <td align="left">
                <xref target="mpeg2ts-es-payload"/></td>
            </tr>
            <tr>
              <td align="left">Program number</td>
              <td align="left">mpeg2tsProgramNumber</td>
              <td align="left">
                <xref target="mpeg2ts-program-number"/></td>
            </tr>
            <tr>
              <td align="left">PCR PID</td>
              <td align="left">mpeg2tsPcrPid</td>
              <td align="left">
                <xref target="mpeg2ts-pcr-pid"/></td>
            </tr>
            <tr>
              <td align="left">Mux rate</td>
              <td align="left">mpeg2tsMuxRate</td>
              <td align="left">
                <xref target="mpeg2ts-mux-rate"/></td>
            </tr>
            <tr>
              <td align="left">SI PIDs</td>
              <td align="left">mpeg2tsSiPids</td>
              <td align="left">
                <xref target="mpeg2ts-si-pids"/></td>
            </tr>
            <tr>
              <td align="left">Random access</td>
              <td align="left">mpeg2tsRandomAccess</td>
              <td align="left">
                <xref target="mpeg2ts-random-access"/></td>
            </tr>
            <tr>
              <td align="left">Timestamp mode</td>
              <td align="left">mpeg2tsTimestampMode</td>
              <td align="left">
                <xref target="mpeg2ts-timestamp-mode"/></td>
            </tr>
            <tr>
              <td align="left">SCTE-35 PID</td>
              <td align="left">mpeg2tsScte35Pid</td>
              <td align="left">
                <xref target="mpeg2ts-scte35-pid"/></td>
            </tr>
          </tbody>
        </table>
        <t>Use of the MSF <tt>initRef</tt> and <tt>initDataList</tt> fields by mpeg2ts tracks is
described in <xref target="init-data"/>.</t>
      </section>
      <section anchor="mpeg2ts-mode">
        <name>Mode</name>
        <t>Required: Yes JSON Type: String Location: Track Object</t>
        <t>What the track carries and how the publisher derived it. The value <bcp14>MUST</bcp14> be one
of the six names below, and <xref target="carriage-table"/> gives the fields that each one
requires.</t>
        <table anchor="mode-table">
          <name>Values of mpeg2tsMode</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">unmodified-program</td>
              <td align="left">Every packet of a single-program source, unchanged (<xref target="unmodified-program-carriage"/>)</td>
            </tr>
            <tr>
              <td align="left">unmodified-multiplex</td>
              <td align="left">Every packet of a multi-program source, unchanged (<xref target="unmodified-multiplex-carriage"/>)</td>
            </tr>
            <tr>
              <td align="left">per-program</td>
              <td align="left">One program that the publisher derived from the source (<xref target="per-program-carriage"/>)</td>
            </tr>
            <tr>
              <td align="left">es-packets</td>
              <td align="left">The TS source packets of one PID (<xref target="es-level-carriage"/>)</td>
            </tr>
            <tr>
              <td align="left">es-units</td>
              <td align="left">The PES packets or the sections of one PID (<xref target="es-units-carriage"/>)</td>
            </tr>
            <tr>
              <td align="left">media-frames</td>
              <td align="left">The decoded frames of one elementary stream (<xref target="media-frames-carriage"/>)</td>
            </tr>
          </tbody>
        </table>
        <t>A subscriber that does not recognize the value <bcp14>MUST</bcp14> reject the track.</t>
      </section>
      <section anchor="mpeg2ts-packet-size">
        <name>Packet Size</name>
        <t>Required: Conditional 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>
        <t><xref target="carriage-table"/> gives the modes that require this field.</t>
      </section>
      <section anchor="mpeg2ts-es-pid">
        <name>ES PID</name>
        <t>Required: Optional JSON Type: Number Location: Track Object</t>
        <t>The PID that the single elementary stream or signaling table of this track
held in the source. When present, the track carries only the packets or the
units of that PID, and it never carries null packets. The field appears on an
mpeg2ts track, and on an LOC track carrying decoded media frames
(<xref target="media-frames-carriage"/>). A track carrying an elementary stream carries
neither PAT nor PMT, and a track whose <tt>role</tt> is "pat" or "pmt" carries that
table alone. The "es-packets", "es-units", and "media-frames" modes require
this field (<xref target="carriage-table"/>).</t>
        <t>When this field is present, <tt>mpeg2tsSiPids</tt> and <tt>mpeg2tsScte35Pid</tt> <bcp14>MUST</bcp14> be
absent.</t>
        <t>The MSF <tt>role</tt> field is a useful companion to <tt>mpeg2tsEsPid</tt>, because a PID
alone does not say what the track carries. For tracks carrying DVB or ATSC SI
tables, publishers <bcp14>SHOULD</bcp14> set <tt>role</tt> to one of the following values: <tt>"nit"</tt>
for the Network Information Table (PID 0x0010), <tt>"sdt"</tt> for the Service
Description Table and Bouquet Association Table (PID 0x0011), <tt>"eit"</tt> for the
Event Information Table (PID 0x0012), and <tt>"tdt"</tt> for the Time and Date Table
and Time Offset Table (PID 0x0014). For tracks carrying SCTE-35 splice
information, publishers <bcp14>SHOULD</bcp14> set <tt>role</tt> to <tt>"scte35"</tt>. For media elementary
streams, publishers <bcp14>SHOULD</bcp14> set <tt>role</tt> to the MSF-defined value for the stream
type, for example <tt>"video"</tt> or <tt>"audio"</tt>.</t>
        <t>Two <tt>role</tt> values name the program signaling that <xref target="es-level-carriage"/>
requires. For the Program Association Table, publishers <bcp14>SHOULD</bcp14> set <tt>role</tt> to
<tt>"pat"</tt> and <tt>mpeg2tsEsPid</tt> to 0x0000. For the Program Map Table of the carried
program, publishers <bcp14>SHOULD</bcp14> set <tt>role</tt> to <tt>"pmt"</tt> and <tt>mpeg2tsEsPid</tt> to the PID
that the PAT lists for that program.</t>
      </section>
      <section anchor="mpeg2ts-es-payload">
        <name>ES Payload</name>
        <t>Required: Optional JSON Type: String Location: Track Object</t>
        <t>The unit that each Object of an "es-units" track carries. The value <bcp14>MUST</bcp14> be
either "pes" or "section". <xref target="es-units-carriage"/> defines the mode.</t>
        <t><xref target="payload-units"/> defines the Object payload for both values.</t>
        <t>This field <bcp14>MUST</bcp14> be absent unless <tt>mpeg2tsEsPid</tt> is present. When it is
present, <tt>mpeg2tsPacketSize</tt> and <tt>mpeg2tsTimestampMode</tt> <bcp14>MUST</bcp14> be absent. A
subscriber that does not recognize the value <bcp14>MUST</bcp14> reject the track, rather
than read its Object payload as source packets.</t>
      </section>
      <section anchor="mpeg2ts-program-number">
        <name>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. This field
identifies the selected program in per-program carriage
(<xref target="per-program-carriage"/>) and the originating program in ES-level carriage
(<xref target="es-level-carriage"/>). It <bcp14>MUST</bcp14> be absent in the "unmodified-multiplex"
mode.</t>
      </section>
      <section anchor="mpeg2ts-pcr-pid">
        <name>PCR PID</name>
        <t>Required: Optional JSON Type: Number Location: Track Object</t>
        <t>The PID carrying the PCR of the program that this track carries. This field is
advisory and does not replace the PCR signaling in the transport stream. It
<bcp14>MUST</bcp14> be absent in the "unmodified-multiplex" mode.</t>
        <t>In ES-level carriage, the PCR may travel on a different track. A subscriber
that needs PCR timing for an ES-level track <bcp14>MUST</bcp14> also subscribe to the track
whose <tt>mpeg2tsEsPid</tt> equals the <tt>mpeg2tsPcrPid</tt> declared by that ES-level
track.</t>
      </section>
      <section anchor="mpeg2ts-mux-rate">
        <name>Mux Rate</name>
        <t>Required: Optional JSON Type: Number Location: Track Object</t>
        <t>The nominal mux rate of the source transport stream in bits per second,
counted over 188-octet TS packets. The count excludes the four-octet timestamp
prefix of an M2TS source packet.</t>
        <t>A publisher <bcp14>SHOULD</bcp14> declare this field when it removes null packets, and on
ES-level tracks, which carry no null packets at all. Where a program is
published as several ES-level tracks, every track of that program <bcp14>SHOULD</bcp14>
declare the same value, which describes the reconstructed program and not any
single track.</t>
        <t>The declared rate is a stuffing target rather than a timing source. A
subscriber recovers its clock from the PCR values in the stream, and uses this
rate to decide how much null stuffing to insert.</t>
        <t>This field <bcp14>MUST</bcp14> be absent in the "unmodified-multiplex" mode.</t>
      </section>
      <section anchor="mpeg2ts-si-pids">
        <name>SI PIDs</name>
        <t>Required: Optional JSON Type: Array Location: Track Object</t>
        <t>An array of the PIDs carrying the SI tables that a per-program track retains.
DVB and ATSC place each table on its own PID, so a publisher retaining more
than one table lists one PID per table. The array does not repeat the PIDs
that the PMT lists.</t>
        <t>A publisher <bcp14>SHOULD</bcp14> include this field when it retains SI tables
(<xref target="per-program-carriage"/>). The field is advisory: a subscriber <bcp14>MAY</bcp14> use it to
learn which tables are present without parsing the packet stream.</t>
        <t>This field <bcp14>MUST</bcp14> be absent when <tt>mpeg2tsEsPid</tt> is present, and in the
"unmodified-multiplex" mode. An ES-level track carries one table, which its
<tt>mpeg2tsEsPid</tt> and MSF <tt>role</tt> field identify (<xref target="mpeg2ts-es-pid"/>).</t>
      </section>
      <section anchor="mpeg2ts-random-access">
        <name>Random Access</name>
        <t>Required: Optional JSON Type: Boolean Location: Track Object</t>
        <t>When true, every MOQT Group starts with a random access point, as defined in
<xref target="group-boundaries"/>. When absent or false, this document makes no guarantee
about where in a Group decoding can begin.</t>
      </section>
      <section anchor="mpeg2ts-timestamp-mode">
        <name>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 prefix. This field <bcp14>MUST NOT</bcp14> be present when <tt>mpeg2tsPacketSize</tt> is
188.</t>
        <t>The value "arrival-time" indicates the Blu-ray Disc Audio/Visual (BDAV)
convention. The four octets are big-endian: the two most significant bits
carry a copy permission indicator, and the remaining 30 bits carry an arrival
time on a 27 MHz clock. That arrival time wraps every 2^30 ticks, or
approximately 39.77 seconds.</t>
        <t>The value "opaque" indicates that the publisher carries the prefix without
specified semantics.</t>
      </section>
      <section anchor="mpeg2ts-scte35-pid">
        <name>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
conditional access or registration descriptor. When present, a subscriber <bcp14>MAY</bcp14>
use this value to locate splice events without parsing the PMT. Publishers
<bcp14>SHOULD</bcp14> include this field when the track carries SCTE-35 splice signaling.
This field <bcp14>MUST</bcp14> be absent when <tt>mpeg2tsEsPid</tt> is present, and in the
"unmodified-multiplex" mode. When SCTE-35 travels as an ES-level track, the
<tt>mpeg2tsEsPid</tt> and <tt>role</tt> fields of that track identify it.</t>
      </section>
      <section anchor="init-data">
        <name>Use of MSF Initialization Data</name>
        <t>A subscriber obtains the PAT and the PMT in one of four ways: it subscribes to
the PAT and PMT tracks that <xref target="es-level-carriage"/> recommends, it reads the
tables from <tt>initDataList</tt> when the track declares <tt>initRef</tt>, it accumulates
packets from the joining point until the publisher repeats the PSI, or it
fetches a past Object that carries them. Only the first way serves a track
that carries no source packets, because the other three read the tables out of
a packet stream.</t>
        <t>MSF defines the <tt>initRef</tt> track field and the root <tt>initDataList</tt> field. An
mpeg2ts track <bcp14>MAY</bcp14> use those fields to carry initialization data. The track
sets <tt>initRef</tt> to the <tt>id</tt> of an <tt>initDataList</tt> entry whose <tt>type</tt> <bcp14>MUST</bcp14> be
"inline". On a track that carries source packets, the Base64 <xref target="BASE64"/> decoded
value of the entry's <tt>data</tt> field <bcp14>MUST</bcp14> be a sequence of whole source packets
using the packet size that <tt>mpeg2tsPacketSize</tt> declares.</t>
        <t>Publishers <bcp14>SHOULD</bcp14> include current PAT and PMT packets in the referenced
initialization data when those tables are not guaranteed to be available at
the first Object of each Group. When PSI changes within a live track, the
publisher <bcp14>SHOULD</bcp14> publish an updated initialization data entry in a new
independent catalog before publishing Objects that rely on the changed PSI.
Subscribers <bcp14>MUST NOT</bcp14> assume that referenced initialization data remains valid
after the MPEG-2 PSI <tt>version_number</tt> changes; updated PSI in media Objects
takes precedence.</t>
        <t>A publisher using an unmodified mode (<xref target="unmodified-program-carriage"/>)
typically omits <tt>initRef</tt>, because it does not inspect the source stream and
the PSI reaches the subscriber unchanged.</t>
        <t>On an ES-level track, an <tt>initDataList</tt> entry gives a joining subscriber the
tables at once. The PAT and PMT tracks remain the authoritative source
afterwards.</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>
        <t>This example shows a live single-program transport stream forwarded unchanged.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "draft-01",
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1-ts",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "unmodified-program",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 6000000,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-live-m2ts">
        <name>Live 192-octet M2TS Source Packets</name>
        <t>This example shows the same carriage with 192-octet source packets, whose
four-octet prefix <tt>mpeg2tsTimestampMode</tt> interprets.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "draft-01",
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1-mpeg2ts",
      "namespace": "contribution.example.net/feed/a",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "unmodified-program",
      "isLive": true,
      "targetLatency": 500,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 12000000,
      "mpeg2tsPacketSize": 192,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsTimestampMode": "arrival-time",
      "mpeg2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-vod">
        <name>Video-on-Demand Transport Stream</name>
        <t>This example shows a stored transport stream forwarded unchanged, with
<tt>isLive</tt> false and a track duration.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "draft-01",
  "tracks": [
    {
      "name": "asset-main",
      "namespace": "vod.example.com/assets/1000",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "unmodified-program",
      "isLive": false,
      "trackDuration": 632000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 4500000,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-mpts">
        <name>Multi-Program Source - Per-Program Tracks</name>
        <t>This example shows a catalog for a publisher that receives a 2-program
transport stream and publishes each program as a separate mpeg2ts 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": "draft-01",
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1",
      "namespace": "live.example.com/mux/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "per-program",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 6000000,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsMuxRate": 6500000,
      "mpeg2tsRandomAccess": true
    },
    {
      "name": "program-2",
      "namespace": "live.example.com/mux/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "per-program",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 4000000,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 2,
      "mpeg2tsPcrPid": 513,
      "mpeg2tsMuxRate": 4500000,
      "mpeg2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-mpts-transparent">
        <name>Unmodified Multiplex</name>
        <t>This example shows a catalog for a publisher that carries a complete
multi-program transport stream without program selection, so no per-program
catalog fields are present.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "draft-01",
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "mux-1",
      "namespace": "live.example.com/mux/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "unmodified-multiplex",
      "isLive": true,
      "targetLatency": 1000,
      "mimeType": "video/mp2t",
      "bitrate": 20000000,
      "mpeg2tsPacketSize": 188
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-abr">
        <name>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": "draft-01",
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "video-high",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "unmodified-program",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 6000000,
      "altGroup": 1,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsRandomAccess": true
    },
    {
      "name": "video-low",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "unmodified-program",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 2000000,
      "altGroup": 1,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 513,
      "mpeg2tsRandomAccess": true
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="example-es-level">
        <name>ES-Packets Tracks - One Track per Elementary Stream</name>
        <t>This example shows a live program published as separate ES-packets tracks: one
video track carrying the PCR, two audio tracks for different languages
(English and Spanish), one Event Information Table track, and the PAT and PMT
tracks that carry the program signaling. The video and audio tracks <bcp14>SHOULD</bcp14>
align their Group boundaries on the same presentation positions.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "draft-01",
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1-video",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-packets",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "mimeType": "video/mp2t",
      "bitrate": 5000000,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsMuxRate": 6000000,
      "mpeg2tsEsPid": 257,
      "mpeg2tsRandomAccess": true
    },
    {
      "name": "program-1-audio-en",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-packets",
      "isLive": true,
      "targetLatency": 1000,
      "role": "audio",
      "mimeType": "video/mp2t",
      "bitrate": 128000,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsMuxRate": 6000000,
      "mpeg2tsEsPid": 258,
      "mpeg2tsRandomAccess": true
    },
    {
      "name": "program-1-audio-es",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-packets",
      "isLive": true,
      "targetLatency": 1000,
      "role": "audio",
      "mimeType": "video/mp2t",
      "bitrate": 128000,
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsMuxRate": 6000000,
      "mpeg2tsEsPid": 259,
      "mpeg2tsRandomAccess": true
    },
    {
      "name": "program-1-eit",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-packets",
      "isLive": true,
      "role": "eit",
      "mimeType": "video/mp2t",
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsMuxRate": 6000000,
      "mpeg2tsEsPid": 18
    },
    {
      "name": "program-1-pat",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-packets",
      "isLive": true,
      "role": "pat",
      "mimeType": "video/mp2t",
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsEsPid": 0
    },
    {
      "name": "program-1-pmt",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-packets",
      "isLive": true,
      "role": "pmt",
      "mimeType": "video/mp2t",
      "mpeg2tsPacketSize": 188,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsEsPid": 256
    }
  ]
}
]]></sourcecode>
        <t>A subscriber taking the video track and one audio track also takes the PAT and
PMT tracks, removes the entries of the streams it did not take from the PMT,
and emits the two tables with the packets of the streams it carries.</t>
      </section>
      <section anchor="example-no-packet">
        <name>No-Packet Tracks - LOC Media, PES, and Sections</name>
        <t>This example shows the same program published without TS source packets. The
video track uses LOC packaging, the audio track carries complete PES packets
because the publisher did not decode it, and the Program Map Table travels as
sections on its own track.</t>
        <sourcecode type="json"><![CDATA[
{
  "version": "draft-01",
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "program-1-video",
      "namespace": "live.example.com/channel/1",
      "packaging": "loc",
      "mpeg2tsMode": "media-frames",
      "isLive": true,
      "targetLatency": 1000,
      "role": "video",
      "codec": "avc1.640028",
      "mimeType": "video/H264",
      "bitrate": 5000000,
      "initRef": "video-config",
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsEsPid": 257
    },
    {
      "name": "program-1-audio-en",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-units",
      "isLive": true,
      "targetLatency": 1000,
      "role": "audio",
      "mimeType": "video/mp2t",
      "bitrate": 128000,
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsPcrPid": 257,
      "mpeg2tsEsPid": 258,
      "mpeg2tsEsPayload": "pes"
    },
    {
      "name": "program-1-pat",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-units",
      "isLive": true,
      "role": "pat",
      "mimeType": "video/mp2t",
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsEsPid": 0,
      "mpeg2tsEsPayload": "section"
    },
    {
      "name": "program-1-pmt",
      "namespace": "live.example.com/channel/1",
      "packaging": "mpeg2ts",
      "mpeg2tsMode": "es-units",
      "isLive": true,
      "role": "pmt",
      "mimeType": "video/mp2t",
      "mpeg2tsProgramNumber": 1,
      "mpeg2tsEsPid": 256,
      "mpeg2tsEsPayload": "section"
    }
  ]
}
]]></sourcecode>
        <t>No track declares <tt>mpeg2tsPacketSize</tt>, because no track carries source
packets. The video track carries no <tt>mpeg2tsEsPayload</tt>, because that field
describes an mpeg2ts track. A
subscriber that only plays the video reads the LOC track and ignores the rest
of the catalog.</t>
      </section>
    </section>
    <section anchor="switching">
      <name>Switching and Alternate Renditions</name>
      <t>A publisher advertises multiple mpeg2ts tracks 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, and other tracks <bcp14>SHOULD</bcp14> align
their Group boundaries to the same positions where possible. A track with
<tt>mpeg2tsMode</tt> set to "unmodified-multiplex" <bcp14>MUST NOT</bcp14> appear in an
<tt>altGroup</tt>.</t>
      <t>A subscriber switches between alternate mpeg2ts tracks either at a Group
boundary or at a transport-stream random access point that it can
independently decode. This document does not require continuity counter values
or PID assignments to match across alternate tracks, so a subscriber <bcp14>MUST</bcp14>
treat a switch as a packet-stream discontinuity.</t>
      <t>After a switch, a receiver <bcp14>MUST</bcp14> re-initialize its system time clock (STC)
recovery from the first PCR of the new track. It <bcp14>MUST</bcp14> also re-parse the PAT
and PMT of the new track before routing elementary-stream packets to a
decoder.</t>
    </section>
    <section anchor="content-protection">
      <name>Content Protection</name>
      <t>Unmodified carriage preserves any scrambling and conditional access
information present in the MPEG-2 Transport Stream. Per-program carriage
preserves it when the publisher retains the conditional access packets
(<xref target="per-program-carriage"/>). Neither form of ES-level carriage preserves it,
and neither <xref target="es-units-carriage"/> nor <xref target="media-frames-carriage"/> can carry a
scrambled stream at all.
Transport-stream scrambling is opaque to MOQT relays and to this
specification.</t>
      <t>A publisher <bcp14>MAY</bcp14> apply object-level encryption using a mechanism such as Secure
Objects <xref target="SecureObjects"/>, when the catalog signals it. A subscriber then
validates source packets after decrypting the Object payload.</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>A subscriber cannot check that <tt>mpeg2tsMode</tt> is accurate.
<xref target="object-payload-format"/> establishes that a track is well formed, not that
its packets are the ones the publisher received.</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 requests that, once MSF establishes an IANA registry for
packaging values, IANA register the value "mpeg2ts" 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="LOC">
          <front>
            <title>Low Overhead Media Container</title>
            <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Peter Thatcher" initials="P." surname="Thatcher">
              <organization>Microsoft</organization>
            </author>
            <date day="20" month="July" year="2026"/>
            <abstract>
              <t>   This specification describes a Low Overhead Media Container (LOC)
   format for encoded and encrypted audio and video media data to be
   used primarily for interactive Media over QUIC Transport (MOQT).  It
   may be used in the MOQT Streaming Format (MSF) specification, which
   defines a catalog format for publishers to declare and describe their
   LOC tracks and for subscribers to consume them.  Examples are also
   provided for building media applications using LOC and MOQT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-loc-04"/>
        </reference>
        <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="8" month="September" 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-21"/>
        </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="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="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="SCTE35">
          <front>
            <title>Digital Program Insertion Cueing Message</title>
            <author>
              <organization>Society of Cable Telecommunications Engineers</organization>
            </author>
            <date year="2023" month="November"/>
          </front>
          <seriesInfo name="ANSI/SCTE" value="35 2023r1"/>
        </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="ISO138189">
          <front>
            <title>Information technology - Generic coding of moving pictures and associated audio information - Part 9: Extension for real time interface for systems decoders</title>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="1996"/>
          </front>
          <seriesInfo name="ISO/IEC" value="13818-9"/>
        </reference>
        <reference anchor="TR101290">
          <front>
            <title>Digital Video Broadcasting (DVB); Measurement guidelines for DVB systems</title>
            <author>
              <organization>European Telecommunications Standards Institute</organization>
            </author>
            <date year="2020" month="June"/>
          </front>
          <seriesInfo name="ETSI TR" value="101 290 V1.4.1"/>
        </reference>
        <reference anchor="SCTE35Timeline">
          <front>
            <title>SCTE35 transmission over MSF Event Timeline</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="6" month="July" year="2026"/>
            <abstract>
              <t>   Defines the transmission of SCTE 35 data over MSF Event Timeline
   tracks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-wilaw-moq-scte35-event-timeline-00"/>
        </reference>
        <reference anchor="DVBSI">
          <front>
            <title>Digital Video Broadcasting (DVB); Specification for Service Information (SI) in DVB systems</title>
            <author>
              <organization>European Telecommunications Standards Institute</organization>
            </author>
            <date year="2025" month="February"/>
          </front>
          <seriesInfo name="ETSI EN" value="300 468 V1.19.1"/>
        </reference>
        <reference anchor="ATSCPSIP">
          <front>
            <title>ATSC Standard: Program and System Information Protocol for Terrestrial Broadcast and Cable</title>
            <author>
              <organization>Advanced Television Systems Committee</organization>
            </author>
            <date year="2013"/>
          </front>
          <seriesInfo name="ATSC" value="A/65:2013"/>
        </reference>
        <reference anchor="SecureObjects">
          <front>
            <title>End-to-End Secure Objects for Media over QUIC Transport</title>
            <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="6" month="July" 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-01"/>
        </reference>
      </references>
    </references>
    <?line 1259?>

<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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
4M6whE0uH+gLHpsmHieNa40oSJYrpEMY4/UaKN/wIIZYrst8p6JGNXw1pOXC
ygYmrIHiP+JZABctVxVXKC1XAN3TnGt+ghIvrGTkX/HDCd0LB78t0jniOxf6
0IWE/qIVzyCNv1vPfqQbK661s4S/SUUse1dAH7JY8hoQvoP2o/womaXZfFVa
qd+VY7cfr+AlvrZjRpKDBBX3zclQn12oNDfLYp5NEGhaG7MANkC1T1hkjCy1
BZpWUZXinV6GI8DSblxzm1/WV/CD1OexrOpTa4x+oyOWKhVcO12U2Dc4d/Vf
XvPRS2sKukCJqo0XdlGwKNZb5ty9c5vuhgK00brCWMXAvdOFNrUdmttboW1t
xsYMGfgPHpMm5UpzEineBYXGzucJI0afPWPYt5M6ASlVStOaQus4Q15MGExl
VRv4igiaKrpBTVZYUV6v0xuusEsMXTXmDJy+LJSvyWAdDVuiyDj4TyEzPEwq
knWXKHF7G77LV2/AwO44xDmBL+H13hPhAFFnWzoXUioBYYBbzLRvo3HrDu7o
we4rmygdlTq5K4TJWwjbKCcidnZ6+PawzcqyNE+72FiocuGKbSXlhX2qQSOW
FR44rI8mkLJ52o5xBqHD8uAdKR6UhgZqLqobNJyf7x0yrjoRtjMYDJIxltnC
xg4nH/LiBmTdJel4zdXrzX9stJCO7bqPoX8v4Q5IK6Io7aYlGMKsFzfwim+p
wa6lQ/P/Ab2ZktyOxQAA

-->

</rfc>
