Skip to content

Commit 4057403

Browse files
author
ID Bot
committed
Script updating gh-pages from 617f4ab. [ci skip]
1 parent 97296db commit 4057403

2 files changed

Lines changed: 220 additions & 11 deletions

File tree

draft-gregoire-moq-msfts.html

Lines changed: 121 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,9 @@ <h2 id="name-copyright-notice">
11831183
</li>
11841184
<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.5.2.4">
11851185
<p id="section-toc.1-1.5.2.4.1"><a href="#section-5.4" class="auto internal xref">5.4</a>.  <a href="#name-packetization" class="internal xref">Packetization</a></p>
1186+
</li>
1187+
<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.5.2.5">
1188+
<p id="section-toc.1-1.5.2.5.1"><a href="#section-5.5" class="auto internal xref">5.5</a>.  <a href="#name-multi-program-source-handli" class="internal xref">Multi-Program Source Handling</a></p>
11861189
</li>
11871190
</ul>
11881191
</li>
@@ -1232,6 +1235,9 @@ <h2 id="name-copyright-notice">
12321235
</li>
12331236
<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.7.2.3">
12341237
<p id="section-toc.1-1.7.2.3.1"><a href="#section-7.3" class="auto internal xref">7.3</a>.  <a href="#name-vod-transport-stream" class="internal xref">VOD Transport Stream</a></p>
1238+
</li>
1239+
<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.7.2.4">
1240+
<p id="section-toc.1-1.7.2.4.1"><a href="#section-7.4" class="auto internal xref">7.4</a>.  <a href="#name-multi-program-source-two-pr" class="internal xref">Multi-Program Source — Two Programs from One MPTS</a></p>
12351241
</li>
12361242
</ul>
12371243
</li>
@@ -1350,6 +1356,18 @@ <h2 id="name-conventions-and-definitions">
13501356
<dd style="margin-left: 1.5em" id="section-3-4.10">
13511357
<p id="section-3-4.10.1">A point in the packet stream at which a receiver can begin decoding after
13521358
receiving the applicable transport-stream tables and decoder initialization.<a href="#section-3-4.10.1" class="pilcrow"></a></p>
1359+
</dd>
1360+
<dd class="break"></dd>
1361+
<dt id="section-3-4.11">Single-program transport stream:</dt>
1362+
<dd style="margin-left: 1.5em" id="section-3-4.12">
1363+
<p id="section-3-4.12.1">A transport stream whose Program Association Table lists exactly one
1364+
program.<a href="#section-3-4.12.1" class="pilcrow"></a></p>
1365+
</dd>
1366+
<dd class="break"></dd>
1367+
<dt id="section-3-4.13">Multi-program transport stream:</dt>
1368+
<dd style="margin-left: 1.5em" id="section-3-4.14">
1369+
<p id="section-3-4.14.1">A transport stream whose Program Association Table lists two or more
1370+
programs.<a href="#section-3-4.14.1" class="pilcrow"></a></p>
13531371
</dd>
13541372
<dd class="break"></dd>
13551373
</dl>
@@ -1483,6 +1501,47 @@ <h3 id="name-packetization">
14831501
assuming every Object has the declared size.<a href="#section-5.4-2" class="pilcrow"></a></p>
14841502
</section>
14851503
</div>
1504+
<div id="mpts">
1505+
<section id="section-5.5">
1506+
<h3 id="name-multi-program-source-handli">
1507+
<a href="#section-5.5" class="section-number selfRef">5.5. </a><a href="#name-multi-program-source-handli" class="section-name selfRef">Multi-Program Source Handling</a>
1508+
</h3>
1509+
<p id="section-5.5-1">An m2ts track <span class="bcp14">SHOULD</span> carry packets from at most one MPEG-2 program,
1510+
producing a single-program transport stream. A publisher receiving a
1511+
multi-program transport stream (MPTS) <span class="bcp14">SHOULD</span> produce a separate m2ts track
1512+
for each program it wishes to offer, filtering the source packets so that
1513+
each track contains only:<a href="#section-5.5-1" class="pilcrow"></a></p>
1514+
<ul class="normal">
1515+
<li class="normal" id="section-5.5-2.1">
1516+
<p id="section-5.5-2.1.1">Null packets (PID 0x1FFF), which <span class="bcp14">MAY</span> be removed or retained at the
1517+
publisher's discretion.<a href="#section-5.5-2.1.1" class="pilcrow"></a></p>
1518+
</li>
1519+
<li class="normal" id="section-5.5-2.2">
1520+
<p id="section-5.5-2.2.1">Program Association Table packets (PID 0x0000), rewritten to list only the
1521+
program present in this track.<a href="#section-5.5-2.2.1" class="pilcrow"></a></p>
1522+
</li>
1523+
<li class="normal" id="section-5.5-2.3">
1524+
<p id="section-5.5-2.3.1">Program Map Table packets for the selected program (whose PID is listed in
1525+
the Program Association Table entry for that program).<a href="#section-5.5-2.3.1" class="pilcrow"></a></p>
1526+
</li>
1527+
<li class="normal" id="section-5.5-2.4">
1528+
<p id="section-5.5-2.4.1">All packets whose PID is listed in the Program Map Table of the selected
1529+
program, including the PCR_PID and the PIDs of all elementary streams.<a href="#section-5.5-2.4.1" class="pilcrow"></a></p>
1530+
</li>
1531+
</ul>
1532+
<p id="section-5.5-3">These rules apply to unscrambled transport stream sources. Publishers filtering scrambled
1533+
transport streams <span class="bcp14">MUST</span> also retain conditional access table and entitlement
1534+
message packets required for descrambling; conditional access handling is
1535+
discussed in <a href="#content-protection" class="auto internal xref">Section 11</a>.<a href="#section-5.5-3" class="pilcrow"></a></p>
1536+
<p id="section-5.5-4">The <code>m2tsProgramNumber</code> field (<a href="#m2ts-program-number" class="auto internal xref">Section 6.4</a>) <span class="bcp14">SHOULD</span> be present on
1537+
tracks derived from a multi-program source to identify the program carried.<a href="#section-5.5-4" class="pilcrow"></a></p>
1538+
<p id="section-5.5-5">When multiple tracks are derived from the same MPTS source, the publisher
1539+
<span class="bcp14">SHOULD</span> use the MSF <code>altGroup</code> field if the programs are alternate renditions
1540+
of the same content. Programs that are independent services <span class="bcp14">SHOULD</span> be
1541+
published as separate tracks; whether to include them in the same catalog is
1542+
application-specific.<a href="#section-5.5-5" class="pilcrow"></a></p>
1543+
</section>
1544+
</div>
14861545
</section>
14871546
</div>
14881547
<div id="catalog">
@@ -1606,9 +1665,10 @@ <h3 id="name-m2ts-program-number">
16061665
<a href="#section-6.4" class="section-number selfRef">6.4. </a><a href="#name-m2ts-program-number" class="section-name selfRef">M2TS Program Number</a>
16071666
</h3>
16081667
<p id="section-6.4-1">Required: Optional JSON Type: Number Location: Track Object<a href="#section-6.4-1" class="pilcrow"></a></p>
1609-
<p id="section-6.4-2">The MPEG-2 Transport Stream program number that the subscriber is expected to
1610-
decode. If absent, subscribers <span class="bcp14">MAY</span> select a program using local policy or
1611-
transport-stream signaling.<a href="#section-6.4-2" class="pilcrow"></a></p>
1668+
<p id="section-6.4-2">The MPEG-2 Transport Stream program number carried by this track. When
1669+
present, the track <span class="bcp14">SHOULD</span> carry packets from only that program (see
1670+
<a href="#mpts" class="auto internal xref">Section 5.5</a>). When absent, a track <span class="bcp14">MAY</span> carry multiple programs and subscribers
1671+
<span class="bcp14">MAY</span> select a program using local policy or transport-stream signaling.<a href="#section-6.4-2" class="pilcrow"></a></p>
16121672
</section>
16131673
</div>
16141674
<div id="m2ts-pmt-pid">
@@ -1628,9 +1688,9 @@ <h3 id="name-m2ts-pcr-pid">
16281688
<a href="#section-6.6" class="section-number selfRef">6.6. </a><a href="#name-m2ts-pcr-pid" class="section-name selfRef">M2TS PCR PID</a>
16291689
</h3>
16301690
<p id="section-6.6-1">Required: Optional JSON Type: Number Location: Track Object<a href="#section-6.6-1" class="pilcrow"></a></p>
1631-
<p id="section-6.6-2">The packet identifier carrying the Program Clock Reference for the selected
1632-
program. This field is advisory and does not replace PCR signaling in the
1633-
transport stream.<a href="#section-6.6-2" class="pilcrow"></a></p>
1691+
<p id="section-6.6-2">The packet identifier carrying the Program Clock Reference for the program
1692+
identified by <code>m2tsProgramNumber</code>. This field is advisory and does not
1693+
replace PCR signaling in the transport stream.<a href="#section-6.6-2" class="pilcrow"></a></p>
16341694
</section>
16351695
</div>
16361696
<div id="m2ts-psi-interval">
@@ -1788,6 +1848,61 @@ <h3 id="name-vod-transport-stream">
17881848
</div>
17891849
</section>
17901850
</div>
1851+
<div id="example-mpts">
1852+
<section id="section-7.4">
1853+
<h3 id="name-multi-program-source-two-pr">
1854+
<a href="#section-7.4" class="section-number selfRef">7.4. </a><a href="#name-multi-program-source-two-pr" class="section-name selfRef">Multi-Program Source — Two Programs from One MPTS</a>
1855+
</h3>
1856+
<p id="section-7.4-1">This example shows a catalog for a publisher that receives a 2-program
1857+
transport stream and publishes each program as a separate m2ts track. The
1858+
two tracks share a namespace but are independent services; <code>altGroup</code> is not
1859+
used because the programs carry different content.<a href="#section-7.4-1" class="pilcrow"></a></p>
1860+
<div class="lang-json sourcecode" id="section-7.4-2">
1861+
<pre>
1862+
{
1863+
"version": 1,
1864+
"generatedAt": 1746104606044,
1865+
"tracks": [
1866+
{
1867+
"name": "program-1",
1868+
"namespace": "live.example.com/mux/1",
1869+
"packaging": "m2ts",
1870+
"isLive": true,
1871+
"targetLatency": 1000,
1872+
"role": "video",
1873+
"mimeType": "video/mp2t",
1874+
"bitrate": 6000000,
1875+
"m2tsPacketSize": 188,
1876+
"m2tsPacketsPerObject": 64,
1877+
"m2tsProgramNumber": 1,
1878+
"m2tsPmtPid": 256,
1879+
"m2tsPcrPid": 257,
1880+
"m2tsPsiInterval": 100,
1881+
"m2tsRandomAccess": true
1882+
},
1883+
{
1884+
"name": "program-2",
1885+
"namespace": "live.example.com/mux/1",
1886+
"packaging": "m2ts",
1887+
"isLive": true,
1888+
"targetLatency": 1000,
1889+
"role": "video",
1890+
"mimeType": "video/mp2t",
1891+
"bitrate": 4000000,
1892+
"m2tsPacketSize": 188,
1893+
"m2tsPacketsPerObject": 64,
1894+
"m2tsProgramNumber": 2,
1895+
"m2tsPmtPid": 512,
1896+
"m2tsPcrPid": 513,
1897+
"m2tsPsiInterval": 100,
1898+
"m2tsRandomAccess": true
1899+
}
1900+
]
1901+
}
1902+
</pre><a href="#section-7.4-2" class="pilcrow"></a>
1903+
</div>
1904+
</section>
1905+
</div>
17911906
</section>
17921907
</div>
17931908
<div id="subscriber-processing">

draft-gregoire-moq-msfts.txt

Lines changed: 99 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ Table of Contents
7979
5.2. Object Boundaries
8080
5.3. Group Numbering
8181
5.4. Packetization
82+
5.5. Multi-Program Source Handling
8283
6. Catalog
8384
6.1. Track Object Fields
8485
6.2. M2TS Packet Size
@@ -94,6 +95,7 @@ Table of Contents
9495
7.1. Live 188-octet Transport Stream
9596
7.2. Live 192-octet M2TS Source Packets
9697
7.3. VOD Transport Stream
98+
7.4. Multi-Program Source — Two Programs from One MPTS
9799
8. Subscriber Processing
98100
9. Relay Processing
99101
10. Switching and Alternate Renditions
@@ -167,6 +169,12 @@ Table of Contents
167169
receiver can begin decoding after receiving the applicable
168170
transport-stream tables and decoder initialization.
169171

172+
Single-program transport stream: A transport stream whose Program
173+
Association Table lists exactly one program.
174+
175+
Multi-program transport stream: A transport stream whose Program
176+
Association Table lists two or more programs.
177+
170178
4. Scope
171179

172180
This specification defines:
@@ -275,6 +283,41 @@ Table of Contents
275283
payload length rather than assuming every Object has the declared
276284
size.
277285

286+
5.5. Multi-Program Source Handling
287+
288+
An m2ts track SHOULD carry packets from at most one MPEG-2 program,
289+
producing a single-program transport stream. A publisher receiving a
290+
multi-program transport stream (MPTS) SHOULD produce a separate m2ts
291+
track for each program it wishes to offer, filtering the source
292+
packets so that each track contains only:
293+
294+
* Null packets (PID 0x1FFF), which MAY be removed or retained at the
295+
publisher's discretion.
296+
297+
* Program Association Table packets (PID 0x0000), rewritten to list
298+
only the program present in this track.
299+
300+
* Program Map Table packets for the selected program (whose PID is
301+
listed in the Program Association Table entry for that program).
302+
303+
* All packets whose PID is listed in the Program Map Table of the
304+
selected program, including the PCR_PID and the PIDs of all
305+
elementary streams.
306+
307+
These rules apply to unscrambled transport stream sources.
308+
Publishers filtering scrambled transport streams MUST also retain
309+
conditional access table and entitlement message packets required for
310+
descrambling; conditional access handling is discussed in Section 11.
311+
312+
The m2tsProgramNumber field (Section 6.4) SHOULD be present on tracks
313+
derived from a multi-program source to identify the program carried.
314+
315+
When multiple tracks are derived from the same MPTS source, the
316+
publisher SHOULD use the MSF altGroup field if the programs are
317+
alternate renditions of the same content. Programs that are
318+
independent services SHOULD be published as separate tracks; whether
319+
to include them in the same catalog is application-specific.
320+
278321
6. Catalog
279322

280323
An m2ts track is described by the MSF catalog [MSF]. The catalog
@@ -335,9 +378,11 @@ Table of Contents
335378

336379
Required: Optional JSON Type: Number Location: Track Object
337380

338-
The MPEG-2 Transport Stream program number that the subscriber is
339-
expected to decode. If absent, subscribers MAY select a program
340-
using local policy or transport-stream signaling.
381+
The MPEG-2 Transport Stream program number carried by this track.
382+
When present, the track SHOULD carry packets from only that program
383+
(see Section 5.5). When absent, a track MAY carry multiple programs
384+
and subscribers MAY select a program using local policy or transport-
385+
stream signaling.
341386

342387
6.5. M2TS PMT PID
343388

@@ -353,8 +398,8 @@ Table of Contents
353398
Required: Optional JSON Type: Number Location: Track Object
354399

355400
The packet identifier carrying the Program Clock Reference for the
356-
selected program. This field is advisory and does not replace PCR
357-
signaling in the transport stream.
401+
program identified by m2tsProgramNumber. This field is advisory and
402+
does not replace PCR signaling in the transport stream.
358403

359404
6.7. M2TS PSI Interval
360405

@@ -477,6 +522,55 @@ Table of Contents
477522
]
478523
}
479524

525+
7.4. Multi-Program Source — Two Programs from One MPTS
526+
527+
This example shows a catalog for a publisher that receives a
528+
2-program transport stream and publishes each program as a separate
529+
m2ts track. The two tracks share a namespace but are independent
530+
services; altGroup is not used because the programs carry different
531+
content.
532+
533+
{
534+
"version": 1,
535+
"generatedAt": 1746104606044,
536+
"tracks": [
537+
{
538+
"name": "program-1",
539+
"namespace": "live.example.com/mux/1",
540+
"packaging": "m2ts",
541+
"isLive": true,
542+
"targetLatency": 1000,
543+
"role": "video",
544+
"mimeType": "video/mp2t",
545+
"bitrate": 6000000,
546+
"m2tsPacketSize": 188,
547+
"m2tsPacketsPerObject": 64,
548+
"m2tsProgramNumber": 1,
549+
"m2tsPmtPid": 256,
550+
"m2tsPcrPid": 257,
551+
"m2tsPsiInterval": 100,
552+
"m2tsRandomAccess": true
553+
},
554+
{
555+
"name": "program-2",
556+
"namespace": "live.example.com/mux/1",
557+
"packaging": "m2ts",
558+
"isLive": true,
559+
"targetLatency": 1000,
560+
"role": "video",
561+
"mimeType": "video/mp2t",
562+
"bitrate": 4000000,
563+
"m2tsPacketSize": 188,
564+
"m2tsPacketsPerObject": 64,
565+
"m2tsProgramNumber": 2,
566+
"m2tsPmtPid": 512,
567+
"m2tsPcrPid": 513,
568+
"m2tsPsiInterval": 100,
569+
"m2tsRandomAccess": true
570+
}
571+
]
572+
}
573+
480574
8. Subscriber Processing
481575

482576
A subscriber obtains the catalog using the MSF catalog workflow and

0 commit comments

Comments
 (0)