Skip to content

Commit 9822ca8

Browse files
gwendalsimonclaude
andcommitted
refactor(§5.5): restructure Multi-Program Source Handling section
* Reframe opening to present per-program filtering and m2tsMpts transparent carriage as equal first-class modes, removing the contradiction between the original SPTS SHOULD and the m2tsMpts MAY * Remove stale relay caching reference (relay section was deleted) * Consolidate m2tsProgramNumber and altGroup guidance into one paragraph * Merge choppy parallel Group boundary sentences into a single connected conditional Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent cea35af commit 9822ca8

1 file changed

Lines changed: 22 additions & 24 deletions

File tree

draft-gregoire-moq-msfts.md

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,13 @@ assuming every Object has the declared size.
235235

236236
## Multi-Program Source Handling {#mpts}
237237

238-
An m2ts track SHOULD carry packets from at most one MPEG-2 program,
239-
producing a single-program transport stream. A publisher receiving a
240-
multi-program transport stream (MPTS) SHOULD produce a separate m2ts track
241-
for each program it wishes to offer, filtering the source packets so that
242-
each track contains only:
238+
When a publisher receives a multi-program transport stream (MPTS), it may
239+
either produce a separate m2ts track for each program by filtering the source,
240+
or carry the complete multiplex transparently by setting `m2tsMpts`
241+
({{m2ts-mpts}}) to true.
242+
243+
A publisher producing per-program tracks SHOULD filter the source packets so
244+
that each track contains only:
243245

244246
* Null packets with Packet Identifier (PID) 0x1FFF, which MAY be removed or
245247
retained at the publisher's discretion.
@@ -256,28 +258,24 @@ required for descrambling; conditional access integration is application-specifi
256258
and outside the scope of this document.
257259

258260
The `m2tsProgramNumber` field ({{m2ts-program-number}}) SHOULD be present on
259-
tracks derived from a multi-program source to identify the program carried.
260-
261-
When multiple tracks are derived from the same MPTS source, the publisher
262-
SHOULD use the MSF `altGroup` field if the programs are alternate renditions
263-
of the same content. Programs that are independent services SHOULD be
264-
published as separate tracks; whether to include them in the same catalog is
265-
application-specific.
266-
267-
A publisher MAY carry the complete multi-program transport stream without
268-
program selection or PID filtering, by setting `m2tsMpts` ({{m2ts-mpts}}) to
269-
true. In this mode, all source packets from the multiplex are emitted without
270-
PAT rewrite. Because no per-program filtering occurs, MOQT serves only as a
271-
scalable transport layer; per-track program subscription, per-program catalog
272-
fields, and the relay caching and subscriber join behavior defined in this
261+
per-program tracks to identify the program carried. When multiple per-program
262+
tracks are derived from the same MPTS source, the publisher SHOULD use the MSF
263+
`altGroup` field if the programs are alternate renditions of the same content;
264+
programs that are independent services SHOULD be published as separate tracks.
265+
266+
A publisher MAY instead carry the complete multi-program transport stream
267+
without program selection or PID filtering, by setting `m2tsMpts`
268+
({{m2ts-mpts}}) to true. In this mode, all source packets from the multiplex
269+
are emitted without PAT rewrite. Because no per-program filtering occurs,
270+
MOQT serves only as a scalable transport layer; per-track program subscription,
271+
per-program catalog fields, and the subscriber join behavior defined in this
273272
document do not apply. When `m2tsMpts` is true, `m2tsProgramNumber`,
274273
`m2tsPmtPid`, and `m2tsPcrPid` MUST be absent.
275274

276-
Group boundary placement depends on whether the publisher can identify random
277-
access points across the multiplex. A publisher that can do so MAY align
278-
Group boundaries to those points and set `m2tsRandomAccess` to true. A
279-
publisher that cannot SHOULD instead start a new Group after a fixed number of
280-
Objects.
275+
Group boundary placement for `m2tsMpts` tracks depends on whether the publisher
276+
can identify random access points across the multiplex: if it can, it MAY align
277+
Group boundaries to those points and set `m2tsRandomAccess` to true; otherwise
278+
it SHOULD start a new Group after a fixed number of Objects.
281279

282280
## PCR and Timing {#pcr-timing}
283281

0 commit comments

Comments
 (0)