Skip to content

Commit 16f18ae

Browse files
gwendalsimonclaude
andcommitted
refactor(§5.5): rewrite Multi-Program Source Handling section
* Restructure opening to present per-program filtering and m2tsMpts transparent carriage as equal first-class modes rather than framing SPTS as the normative default with MPTS as an exception * Remove stale relay caching reference (relay section was removed) * 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 59178ad commit 16f18ae

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.
@@ -262,28 +264,24 @@ required for descrambling; conditional access integration is application-specifi
262264
and outside the scope of this document.
263265

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

282-
Group boundary placement depends on whether the publisher can identify random
283-
access points across the multiplex. A publisher that can do so MAY align
284-
Group boundaries to those points and set `m2tsRandomAccess` to true. A
285-
publisher that cannot SHOULD instead start a new Group after a fixed number of
286-
Objects.
281+
Group boundary placement for `m2tsMpts` tracks depends on whether the publisher
282+
can identify random access points across the multiplex: if it can, it MAY align
283+
Group boundaries to those points and set `m2tsRandomAccess` to true; otherwise
284+
it SHOULD start a new Group after a fixed number of Objects.
287285

288286
## PCR and Timing {#pcr-timing}
289287

0 commit comments

Comments
 (0)