Skip to content

Commit cfa9a67

Browse files
committed
Align MSFTS catalog extension with MSF draft-01
1 parent 1fc1039 commit cfa9a67

1 file changed

Lines changed: 56 additions & 37 deletions

File tree

draft-gregoire-moq-msfts.md

Lines changed: 56 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ informative:
5555

5656
--- abstract
5757

58-
This document extends the MOQT Streaming Format (MSF) by registering the
58+
This document extends the MOQT Streaming Format (MSF) catalog by defining the
5959
"m2ts" packaging value for carrying MPEG-2 Transport Stream and M2TS source
60-
packets over Media Over QUIC Transport. It defines catalog fields for
61-
transport-stream track description and specifies receiver and relay behavior
62-
for joining, switching, and validating packetized streams.
60+
packets over Media Over QUIC Transport. It defines catalog-extension fields
61+
for transport-stream track description and specifies receiver and relay
62+
behavior for joining, switching, and validating packetized streams.
6363

6464
--- middle
6565

@@ -68,7 +68,7 @@ for joining, switching, and validating packetized streams.
6868
Media Over QUIC Transport (MOQT) {{MoQTransport}} delivers named tracks as
6969
ordered groups of objects. The MOQT Streaming Format (MSF) {{MSF}} defines a
7070
catalog model and common streaming conventions for describing tracks delivered
71-
over MOQT. This document extends MSF by registering the "m2ts" packaging
71+
over MOQT. This document extends the MSF catalog with the "m2ts" packaging
7272
value for carrying MPEG-2 Transport Stream packets as defined by {{ISO138181}}
7373
and M2TS source packets that prefix each transport-stream packet with a
7474
four-octet source-packet timestamp.
@@ -92,6 +92,17 @@ requirements that are conditioned on `packaging: loc` do not apply to
9292
m2ts-packaged tracks; equivalent behavior for m2ts tracks is defined in this
9393
document.
9494

95+
This document is an extension of the catalog defined by the revision of
96+
{{MSF}} identified in the normative references. The catalog structure, common
97+
fields, and catalog processing rules are inherited from that revision of MSF.
98+
This document defines only the `m2ts` packaging value and the fields and
99+
processing rules specific to that packaging.
100+
101+
The catalog `version` field identifies the referenced MSF revision and does not
102+
identify version 1 of the MSFTS packaging format described in {{introduction}}.
103+
Catalogs conforming to this document MUST use the version value specified by
104+
the referenced revision of MSF.
105+
95106
# Conventions and Definitions
96107

97108
{::boilerplate bcp14-tagged}
@@ -349,12 +360,13 @@ specify SCTE-35 processing.
349360

350361
# Catalog {#catalog}
351362

352-
An m2ts track is described by the MSF catalog {{MSF}}. The catalog track name,
353-
delta update rules, variable substitution rules, authorization signaling, and
354-
common track fields are inherited from MSF.
355-
356-
This document defines additional fields for track objects whose `packaging`
357-
value is "m2ts". A parser MUST ignore fields it does not understand.
363+
An m2ts track is described by the MSF catalog {{MSF}}. This document extends
364+
that catalog by defining the `m2ts` value for the inherited `packaging` field
365+
and additional fields for track objects that use that value. The catalog track
366+
name, root catalog fields, common track fields, delta update rules, variable
367+
substitution rules, and authorization signaling are inherited unchanged from
368+
MSF unless this document explicitly states otherwise. A parser MUST ignore
369+
fields it does not understand.
358370

359371
## Track Object Fields {#track-fields}
360372

@@ -374,7 +386,9 @@ Table 1 lists the m2ts-specific fields defined within a track object.
374386
| M2TS timestamp mode | m2tsTimestampMode | {{m2ts-timestamp-mode}} |
375387
| M2TS SCTE-35 PID | m2tsScte35Pid | {{m2ts-scte35-pid}} |
376388
| M2TS MPTS | m2tsMpts | {{m2ts-mpts}} |
377-
| Initialization data | initData | {{init-data}} |
389+
390+
Use of the MSF `initRef` and `initDataList` fields by m2ts tracks is described
391+
in {{init-data}}.
378392

379393
## M2TS Packet Size {#m2ts-packet-size}
380394

@@ -488,25 +502,30 @@ When true, this track carries a multi-program transport stream without program
488502
selection or PID filtering. `m2tsProgramNumber`, `m2tsPmtPid`, and
489503
`m2tsPcrPid` MUST be absent when this field is true.
490504

491-
## Initialization Data {#init-data}
492-
493-
Required: Optional JSON Type: String Location: Track Object
494-
495-
An m2ts track MAY use the MSF `initData` field to carry Base64 {{BASE64}}
496-
encoded initialization data. If present, the decoded value MUST be a sequence
497-
of whole source packets using the packet size declared by `m2tsPacketSize`.
498-
499-
Publishers SHOULD include current PAT and PMT packets in `initData` when those
500-
tables are not guaranteed to be available at the first Object of each Group.
501-
When PSI changes within a live track, publishers SHOULD update `initData` to
502-
reflect the new PAT and PMT before publishing subsequent Objects.
503-
Receivers MUST NOT assume that `initData` remains valid after a version change
504-
in transport-stream PSI; updated PSI in the media Objects takes precedence.
505-
506-
For `m2tsMpts` tracks, encoding `initData` requires extracting PAT and all
507-
program PMTs from the source multiplex. Publishers that do not inspect the
508-
source stream typically omit `initData`; subscribers will encounter PSI within
509-
one PSI repetition cycle regardless of Group boundaries.
505+
## Use of MSF Initialization Data {#init-data}
506+
507+
The `initRef` track field and the root `initDataList` field are defined by MSF;
508+
they are not fields defined by this extension. An m2ts track MAY use those
509+
fields to carry initialization data. The track sets `initRef` to the `id` of
510+
an `initDataList` entry whose `type` MUST be "inline". The Base64 {{BASE64}}
511+
decoded value of the entry's `data` field MUST be a sequence of whole source
512+
packets using the packet size declared by `m2tsPacketSize`.
513+
514+
Publishers SHOULD include current PAT and PMT packets in the referenced
515+
initialization data when those tables are not guaranteed to be available at the
516+
first Object of each Group. When PSI changes within a live track, the
517+
publisher SHOULD publish an updated initialization data entry in a new
518+
independent catalog before publishing media Objects that rely on the changed
519+
PSI. An update to the root `initDataList` MUST NOT be expressed as an MSF delta
520+
update. Receivers MUST NOT assume that referenced initialization data remains
521+
valid after the MPEG-2 PSI `version_number` changes; updated PSI in media
522+
Objects takes precedence.
523+
524+
For `m2tsMpts` tracks, producing referenced initialization data requires
525+
extracting the PAT and all program PMTs from the source multiplex. Publishers
526+
that do not inspect the source stream typically omit `initRef` and the
527+
corresponding `initDataList` entry; subscribers will encounter PSI within one
528+
PSI repetition cycle regardless of Group boundaries.
510529

511530
# Catalog Examples {#catalog-examples}
512531

@@ -516,7 +535,7 @@ The following examples are non-normative.
516535

517536
~~~ json
518537
{
519-
"version": 1,
538+
"version": "draft-01",
520539
"generatedAt": 1746104606044,
521540
"tracks": [
522541
{
@@ -544,7 +563,7 @@ The following examples are non-normative.
544563

545564
~~~ json
546565
{
547-
"version": 1,
566+
"version": "draft-01",
548567
"generatedAt": 1746104606044,
549568
"tracks": [
550569
{
@@ -570,7 +589,7 @@ The following examples are non-normative.
570589

571590
~~~ json
572591
{
573-
"version": 1,
592+
"version": "draft-01",
574593
"tracks": [
575594
{
576595
"name": "asset-main",
@@ -599,7 +618,7 @@ used because the programs carry different content.
599618

600619
~~~ json
601620
{
602-
"version": 1,
621+
"version": "draft-01",
603622
"generatedAt": 1746104606044,
604623
"tracks": [
605624
{
@@ -649,7 +668,7 @@ advisory hint; its value is not normative for MPTS tracks.
649668

650669
~~~ json
651670
{
652-
"version": 1,
671+
"version": "draft-01",
653672
"generatedAt": 1746104606044,
654673
"tracks": [
655674
{
@@ -679,7 +698,7 @@ PAT and PMT on the new track before routing packets to a decoder.
679698

680699
~~~ json
681700
{
682-
"version": 1,
701+
"version": "draft-01",
683702
"generatedAt": 1746104606044,
684703
"tracks": [
685704
{

0 commit comments

Comments
 (0)