@blockcast/mmt-base 0.3.0-main.5bb7058c73ff → 0.3.0-main.71d61b2a53f2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -17
- package/dist/fec-block-profile.d.ts +7 -7
- package/dist/fec-block-profile.d.ts.map +1 -1
- package/dist/fec-block-profile.js +22 -18
- package/dist/fec-block-profile.js.map +1 -1
- package/dist/mmtp.d.ts +0 -13
- package/dist/mmtp.d.ts.map +1 -1
- package/dist/mmtp.js +35 -23
- package/dist/mmtp.js.map +1 -1
- package/dist/serial-number.d.ts +0 -29
- package/dist/serial-number.d.ts.map +1 -1
- package/dist/serial-number.js +0 -54
- package/dist/serial-number.js.map +1 -1
- package/dist/signalling.d.ts +26 -24
- package/dist/signalling.d.ts.map +1 -1
- package/dist/signalling.js +16 -16
- package/dist/signalling.js.map +1 -1
- package/package.json +2 -4
- package/src/fec-block-profile.ts +24 -24
- package/src/mmtp.ts +18 -33
- package/src/serial-number.ts +0 -58
- package/src/signalling.ts +27 -29
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @blockcast/mmt-base
|
|
2
2
|
|
|
3
|
-
The shared MMTP packet-parsing leaf for libmmt's TypeScript packages. It hosts the low-level MMTP / MPU / MFU header parsers, FEC payload-id predicates
|
|
3
|
+
The shared MMTP packet-parsing leaf for libmmt's TypeScript packages. It hosts the low-level MMTP / MPU / MFU header parsers, and FEC payload-id predicates — everything that operates on raw MMTP packet bytes **with zero FEC-decode dependency**. RFC 6330 OTI geometry belongs to `@blockcast/mmt-fec`.
|
|
4
4
|
|
|
5
|
-
It exists for one structural reason. Both `@blockcast/mmt-fec` and `@blockcast/mmt-container` need these primitives. Before this package they lived in `mmt-container`, so `mmt-fec` had to import `mmt-container` for them — while `mmt-container`'s `FecManager` already imports `mmt-fec`. That is a circular dependency. Extracting the primitives into this leaf breaks the cycle: both packages now import **down** into `mmt-base` rather than across into each other.
|
|
5
|
+
It exists for one structural reason. Both `@blockcast/mmt-fec` and `@blockcast/mmt-container` need these primitives. Before this package they lived in `mmt-container`, so `mmt-fec` had to import `mmt-container` for them — while `mmt-container`'s `FecManager` already imports `mmt-fec`. That is a circular dependency. Extracting the primitives into this leaf breaks the cycle: both packages now import **down** into `mmt-base` rather than across into each other. It has no runtime dependencies.
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
pnpm add @blockcast/mmt-base
|
|
@@ -46,7 +46,7 @@ Single entry point — `package.json#exports` declares only `.`, and `src/index.
|
|
|
46
46
|
| `MMTP_HEADER_SIZE` (12), `MPU_HEADER_SIZE` (8), `MFU_DU_HEADER_SIZE_TIMED` (14), `MFU_DU_HEADER_SIZE_NONTIMED` (4) | const | Fixed header sizes |
|
|
47
47
|
| `PACKET_TYPE_MPU` (0x00), `PACKET_TYPE_SIGNALING` (0x02), `PACKET_TYPE_REPAIR` (0x03) | const | MMTP `packet_type` values |
|
|
48
48
|
|
|
49
|
-
MPU `payload_length` is interpreted strictly as ISO's length-after-field value: six remaining MPU-header bytes plus the data-unit header and media.
|
|
49
|
+
MPU `payload_length` is interpreted strictly as ISO's length-after-field value: six remaining MPU-header bytes plus the data-unit header and media. The legacy `0xf0a1` authenticator trailer (skipped, never verified — provenance is `@blockcast/mmt-manifest-verify`) and the Source FEC Payload ID are outside that span; malformed, zero-length, media-only, and ambiguous declarations are rejected.
|
|
50
50
|
|
|
51
51
|
### FEC payload-id, repair & AL-FEC signaling
|
|
52
52
|
|
|
@@ -69,22 +69,12 @@ replaced by Amd 1:2025.
|
|
|
69
69
|
|
|
70
70
|
| Symbol | Kind | Purpose |
|
|
71
71
|
|--------|------|---------|
|
|
72
|
-
| `parseSignallingPayload` | function | Split a signalling packet into complete messages
|
|
72
|
+
| `parseSignallingPayload` | function | Split a signalling packet into complete messages behind the 9.3.4.2 header (Figure 15); the payload form is always `iso-9.3.4.2`. A message straight after the MMTP header (the retired bare AL-FEC form) is refused |
|
|
73
73
|
| `parseSignallingPacket` | function | Decode every message of a signalling packet → `al-fec` / `pa` / `mpt` / `other` |
|
|
74
74
|
| `parseAlFecMessage`, `parseAlFecMessageBody` | function | Every FEC flow of an AL-FEC message: all asset packet_ids, one-stage / two-stage / LA-FEC repair flows, private fields → `AlFecMessage` |
|
|
75
|
-
| `alFecRaptorQFlowConfig` | function | One flow's decoder geometry under the Blockcast one-stage RaptorQ profile (private field = OTI + interleave depth
|
|
75
|
+
| `alFecRaptorQFlowConfig` | function | One flow's decoder geometry under the Blockcast one-stage RaptorQ profile: coding byte 0x14 (`iso-ssbg1-v1`) or 0x15 (its low bit, reserved "1" in the unamended 2023 Table C.3, is reported, not interpreted), private field = OTI + interleave depth → `AlFecRaptorQFlowConfig`; any other coding byte (0x10 ssbg_mode0 included) → `null` |
|
|
76
76
|
| `parsePaMessageBody`, `parseMptMessageBody`, `parseMpTable`, `mpAssetPacketIds` | function | PA / MPT messages and the MP table: asset → packet_id mapping |
|
|
77
77
|
|
|
78
|
-
### ALTA trailer (re-exported from `@blockcast/mmt-alta-parse`)
|
|
79
|
-
|
|
80
|
-
| Symbol | Kind | Purpose |
|
|
81
|
-
|--------|------|---------|
|
|
82
|
-
| `extractAltaTrailer` | function | Extract the ALTA authentication trailer from an MMTP packet |
|
|
83
|
-
| `AltaTrailer` | type | Parsed trailer shape |
|
|
84
|
-
| `MMTP_EXT_TYPE_ALTA_AUTH`, `MMTP_EXT_TRAILER_HEADER_SIZE` | const | ALTA extension-header identifiers |
|
|
85
|
-
|
|
86
|
-
These four are re-exported so callers that already pull MMTP primitives from here don't need a second import from `@blockcast/mmt-alta-parse` just for the trailer.
|
|
87
|
-
|
|
88
78
|
## Why this package exists
|
|
89
79
|
|
|
90
80
|
```
|
|
@@ -119,13 +109,12 @@ npm test # vitest run
|
|
|
119
109
|
|
|
120
110
|
The direct suite owns header parsing, MFU extraction, payload-ID predicates,
|
|
121
111
|
declared-boundary rejection, C/X optional headers, and
|
|
122
|
-
|
|
112
|
+
legacy-authenticator/FEC suffix coverage. Downstream suites exercise integration only.
|
|
123
113
|
|
|
124
114
|
## Related packages
|
|
125
115
|
|
|
126
116
|
| Package | Relationship |
|
|
127
117
|
|---------|-------------|
|
|
128
|
-
| [`@blockcast/mmt-alta-parse`](../mmt-alta-parse) | Only dependency — supplies the ALTA trailer types this package re-exports |
|
|
129
118
|
| [`@blockcast/mmt-fec`](../fec) | Imports these parsers in `block-processor` to turn decoded FEC blocks back into MFU fragments |
|
|
130
119
|
| [`@blockcast/mmt-container`](../container) | Imports these primitives directly and builds the `FecManager`, MFU reassembler, and CMAF demuxer on top |
|
|
131
120
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/** The
|
|
2
|
-
export type FecBlockProfile = '
|
|
3
|
-
/** Every accepted `fec.blockProfile` token
|
|
1
|
+
/** The block profile a catalog `fec.blockProfile` may name: the one this library implements. */
|
|
2
|
+
export type FecBlockProfile = 'iso-ssbg1-v1';
|
|
3
|
+
/** Every accepted `fec.blockProfile` token. */
|
|
4
4
|
export declare const FEC_BLOCK_PROFILES: readonly FecBlockProfile[];
|
|
5
|
-
/** True for a
|
|
5
|
+
/** True for a block-profile token this library implements. */
|
|
6
6
|
export declare function isFecBlockProfile(value: unknown): value is FecBlockProfile;
|
|
7
7
|
/**
|
|
8
|
-
* Read a required `fec.blockProfile`. Throws on an absent
|
|
9
|
-
* there is no default and nothing is
|
|
10
|
-
*
|
|
8
|
+
* Read a required `fec.blockProfile`. Throws on an absent token and on any
|
|
9
|
+
* token other than `iso-ssbg1-v1`: there is no default and nothing is
|
|
10
|
+
* inferred from the wire (draft-ramadan-moq-fec §5.1).
|
|
11
11
|
*
|
|
12
12
|
* @param where the catalog path of the field, for the error message.
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fec-block-profile.d.ts","sourceRoot":"","sources":["../src/fec-block-profile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fec-block-profile.d.ts","sourceRoot":"","sources":["../src/fec-block-profile.ts"],"names":[],"mappings":"AA6BA,gGAAgG;AAChG,MAAM,MAAM,eAAe,GAAG,cAAc,CAAA;AAE5C,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAEvD,CAAA;AAEF,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAMnF;AAED,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,IAAI,CAAA;AAEzC,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAOjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAczF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAS3E;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpF"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* FEC block profile (BLO-35597, ISO/IEC 23008-1 Annex C).
|
|
3
3
|
*
|
|
4
|
-
* Every catalog `fec` object that declares an FEC instance names
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Every catalog `fec` object that declares an FEC instance names its block
|
|
5
|
+
* profile in `fec.blockProfile`. A receiver applies all of a profile's rules
|
|
6
|
+
* or none of them, so the token is the one explicit per-stream discriminator:
|
|
7
|
+
* it is never defaulted and never inferred from the wire.
|
|
8
|
+
*
|
|
9
|
+
* draft-ramadan-moq-fec §5.1 defines exactly one value, and it is the only
|
|
10
|
+
* profile this library implements:
|
|
8
11
|
*
|
|
9
|
-
* - `k-padded-v1` (legacy, Blockcast-private): a source symbol is the
|
|
10
|
-
* protected MMTP packet zero-padded to T with no length field; every block
|
|
11
|
-
* is a K-symbol RaptorQ block whose ESIs `SSB_length..K-1` are implicit
|
|
12
|
-
* zero padding; `SS_ID = SBN*K + ESI`, so `SS_Start = SBN*K`; repair
|
|
13
|
-
* ESI = K + RS_ID; the MoQ repair group id is the SBN.
|
|
14
12
|
* - `iso-ssbg1-v1`: ssbg_mode1 (C.3.3): a source symbol is
|
|
15
13
|
* `u16 length || protected packet || zero padding` to T; a block is a
|
|
16
14
|
* K' = SSB_length RaptorQ block (C.5.3) and repair ESI = SSB_length + RS_ID;
|
|
@@ -19,21 +17,27 @@
|
|
|
19
17
|
* under RFC 1982 serial arithmetic; the MoQ repair group id is the 62-bit
|
|
20
18
|
* wrap-epoch-extended SS_Start. The AL-FEC coding byte for this profile is
|
|
21
19
|
* 0x14 (one-stage, ssbg_mode1, fec_payload_id_mode 0, Amd 1:2025 Table C.3).
|
|
20
|
+
*
|
|
21
|
+
* A track whose `blockProfile` is absent or names any other token (the
|
|
22
|
+
* retired Blockcast-private `k-padded-v1` included) has no FEC: a receiver
|
|
23
|
+
* consumes its source without FEC and joins none of its repair tracks
|
|
24
|
+
* (draft-ramadan-moq-fec §5.1). `parseFecBlockProfile` throws for such a
|
|
25
|
+
* token; the per-track catalog resolver turns the same rule into a typed
|
|
26
|
+
* per-track "FEC unavailable" outcome instead of failing the session.
|
|
22
27
|
*/
|
|
23
28
|
import { serial32Add, serial32Distance, serial32Precedes } from './serial-number.js';
|
|
24
|
-
/** Every accepted `fec.blockProfile` token
|
|
29
|
+
/** Every accepted `fec.blockProfile` token. */
|
|
25
30
|
export const FEC_BLOCK_PROFILES = Object.freeze([
|
|
26
|
-
'k-padded-v1',
|
|
27
31
|
'iso-ssbg1-v1',
|
|
28
32
|
]);
|
|
29
|
-
/** True for a
|
|
33
|
+
/** True for a block-profile token this library implements. */
|
|
30
34
|
export function isFecBlockProfile(value) {
|
|
31
|
-
return value === '
|
|
35
|
+
return value === 'iso-ssbg1-v1';
|
|
32
36
|
}
|
|
33
37
|
/**
|
|
34
|
-
* Read a required `fec.blockProfile`. Throws on an absent
|
|
35
|
-
* there is no default and nothing is
|
|
36
|
-
*
|
|
38
|
+
* Read a required `fec.blockProfile`. Throws on an absent token and on any
|
|
39
|
+
* token other than `iso-ssbg1-v1`: there is no default and nothing is
|
|
40
|
+
* inferred from the wire (draft-ramadan-moq-fec §5.1).
|
|
37
41
|
*
|
|
38
42
|
* @param where the catalog path of the field, for the error message.
|
|
39
43
|
*/
|
|
@@ -41,9 +45,9 @@ export function parseFecBlockProfile(value, where) {
|
|
|
41
45
|
if (isFecBlockProfile(value))
|
|
42
46
|
return value;
|
|
43
47
|
if (value === undefined) {
|
|
44
|
-
throw new Error(`${where} is required: name the FEC block profile ("
|
|
48
|
+
throw new Error(`${where} is required: name the FEC block profile ("iso-ssbg1-v1")`);
|
|
45
49
|
}
|
|
46
|
-
throw new Error(`${where} must be "
|
|
50
|
+
throw new Error(`${where} must be "iso-ssbg1-v1" (got ${JSON.stringify(value)})`);
|
|
47
51
|
}
|
|
48
52
|
/** ISO/IEC 23008-1 C.3.3 ssbg_mode1: the two-octet packet length field. */
|
|
49
53
|
export const SSBG1_LENGTH_FIELD_BYTES = 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fec-block-profile.js","sourceRoot":"","sources":["../src/fec-block-profile.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fec-block-profile.js","sourceRoot":"","sources":["../src/fec-block-profile.ts"],"names":[],"mappings":"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"}
|
package/dist/mmtp.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { extractAltaTrailer as _leafExtractAltaTrailer, type AltaTrailer as _LeafAltaTrailer } from '@blockcast/mmt-alta-parse';
|
|
2
1
|
/**
|
|
3
2
|
* @mmt/container - MMTP Parser
|
|
4
3
|
*
|
|
@@ -220,18 +219,6 @@ export declare function hasSourceFecPayloadId(mmtpPacket: Uint8Array): boolean;
|
|
|
220
219
|
export declare function sourceFecPayloadIdOf(mmtpPacket: Uint8Array, header: MMTPHeader): {
|
|
221
220
|
ssId: number;
|
|
222
221
|
} | null;
|
|
223
|
-
/**
|
|
224
|
-
* MMTP header-extension ext_type assigned to the detached ALTA authenticator
|
|
225
|
-
* trailer (Path 2 / 08-07). Carried in an `[ext_type][ext_length][auth]`
|
|
226
|
-
* block appended after the MPU's declared payload bytes, before the 4-byte
|
|
227
|
-
* Source FEC Payload ID. MMTP X-bit stays 0 — non-ALTA MMTP receivers treat
|
|
228
|
-
* the trailer as bytes past `payload_length` and skip it (per ISO 23008-1
|
|
229
|
-
* §9.2.2 "may be discarded without impacting correct processing").
|
|
230
|
-
*/
|
|
231
|
-
export declare const MMTP_EXT_TYPE_ALTA_AUTH = 61601;
|
|
232
|
-
export declare const MMTP_EXT_TRAILER_HEADER_SIZE = 4;
|
|
233
|
-
export type AltaTrailer = _LeafAltaTrailer;
|
|
234
|
-
export declare const extractAltaTrailer: typeof _leafExtractAltaTrailer;
|
|
235
222
|
/** Size of Repair FEC Payload ID per ISO/IEC 23008-1 Section C.5.3 */
|
|
236
223
|
export declare const REPAIR_FEC_PID_SIZE = 13;
|
|
237
224
|
/**
|
package/dist/mmtp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmtp.d.ts","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mmtp.d.ts","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,iBAAiB,EAAE,OAAO,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4DAA4D;IAC5D,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAA;IAC9C,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAA;IACvB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAA;IACjB,wEAAwE;IACxE,eAAe,EAAE,OAAO,CAAA;IACxB;sEACkE;IAClE,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,2BAA2B,EAAE,MAAM,CAAA;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,UAAU,CAAA;CACpB;AAED,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAClC,eAAO,MAAM,eAAe,IAAI,CAAA;AAChC,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAC1C,eAAO,MAAM,2BAA2B,IAAI,CAAA;AAO5C,eAAO,MAAM,eAAe,IAAO,CAAA;AACnC,eAAO,MAAM,qBAAqB,IAAO,CAAA;AACzC,eAAO,MAAM,kBAAkB,IAAO,CAAA;AAGtC,eAAO,MAAM,gBAAgB,MAAS,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAA;AAEzC,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,QAAS,CAAA;AAGxC,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAuE9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAelE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAKzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CA+B7D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU7F;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GACxB,0CAA0C,GAC1C,yBAAyB,GACzB,mBAAmB,GACnB,iCAAiC,GACjC,sBAAsB,GACtB,2CAA2C,GAC3C,kCAAkC,GAClC,oCAAoC,GACpC,sCAAsC,GACtC,8BAA8B,CAAA;AAElC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAA;IACtB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAA;CACf;AAoHD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAIjE;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAA;IAClB,wBAAwB;IACxB,GAAG,EAAE,SAAS,CAAA;IACd,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAA;IACpB,8EAA8E;IAC9E,IAAI,EAAE,UAAU,CAAA;IAChB,8DAA8D;IAC9D,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IAC/B,kEAAkE;IAClE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,kEAAkE;IAClE,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACtC;AA0ID;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,YAAY,GAAG,IAAI,CAGrB;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,aAAa,GAAG,IAAI,CAEtB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,aAAa,GAAG,IAAI,CAEtB;AAqCD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAG/D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAIjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGnF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAGrE;AAWD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,UAAU,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqBzB;AAED,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,KAAK,CAAA;AA2CrC;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG;IACjE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CACpE,GAAG,IAAI,CASP;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,UAAU,EAAE,UAAU,CAAA;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,GACjB,cAAc,GAAG,IAAI,CAEvB"}
|
package/dist/mmtp.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @mmt/container - MMTP Parser
|
|
3
|
+
*
|
|
4
|
+
* MMTP (MMT Protocol) packet parser based on ISO/IEC 23008-1:2023 Section 9.2
|
|
5
|
+
*
|
|
6
|
+
* MMTP header format (12 bytes):
|
|
7
|
+
* - Byte 0: V(2) | C(1) | FEC_type(2) | r(1) | X(1) | R(1)
|
|
8
|
+
* - Byte 1: reserved(2) | packet_type(6)
|
|
9
|
+
* - Bytes 2-3: packet_id (big-endian)
|
|
10
|
+
* - Bytes 4-7: timestamp (big-endian, 32-bit)
|
|
11
|
+
* - Bytes 8-11: sequence_number (big-endian)
|
|
12
|
+
*
|
|
13
|
+
* FEC_type values:
|
|
14
|
+
* - 0: No FEC / source packet
|
|
15
|
+
* - 1: FEC mode 0 (source with FEC payload ID)
|
|
16
|
+
* - 2: FEC repair packet mode 0
|
|
17
|
+
* - 3: FEC repair packet mode 1
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
2
21
|
export const MMTP_HEADER_SIZE = 12;
|
|
3
22
|
export const MPU_HEADER_SIZE = 8;
|
|
4
23
|
export const MFU_DU_HEADER_SIZE_TIMED = 14; // T=1: timed media (video/audio samples)
|
|
@@ -217,36 +236,43 @@ function resolveMfuPayloadLayout(mpu, fragmentType, payload) {
|
|
|
217
236
|
},
|
|
218
237
|
};
|
|
219
238
|
}
|
|
220
|
-
|
|
239
|
+
// Legacy detached per-packet authenticator suffix `[0xf0a1][len][auth]`. Its
|
|
240
|
+
// producer was removed (BLO-16483) and nothing verifies it any more; provenance
|
|
241
|
+
// is the signed per-group manifest. Receivers still skip an exact suffix so a
|
|
242
|
+
// stale producer degrades to unauthenticated playback instead of dropped
|
|
243
|
+
// packets. ponytail: hard-cut to reject once no deployed producer can emit it.
|
|
244
|
+
const LEGACY_TRAILER_EXT_TYPE = 0xf0a1;
|
|
245
|
+
const LEGACY_TRAILER_HEADER_SIZE = 4;
|
|
246
|
+
function isEmptyOrExactLegacyTrailer(payload, start, end) {
|
|
221
247
|
if (start === end)
|
|
222
248
|
return true;
|
|
223
|
-
if (start < 0 || end > payload.length || start +
|
|
249
|
+
if (start < 0 || end > payload.length || start + LEGACY_TRAILER_HEADER_SIZE > end) {
|
|
224
250
|
return false;
|
|
225
251
|
}
|
|
226
252
|
const view = new DataView(payload.buffer, payload.byteOffset + start, end - start);
|
|
227
|
-
if (view.getUint16(0, false) !==
|
|
253
|
+
if (view.getUint16(0, false) !== LEGACY_TRAILER_EXT_TYPE)
|
|
228
254
|
return false;
|
|
229
255
|
const authLength = view.getUint16(2, false);
|
|
230
|
-
return start +
|
|
256
|
+
return start + LEGACY_TRAILER_HEADER_SIZE + authLength === end;
|
|
231
257
|
}
|
|
232
258
|
function resolveDeclaredTrailers(payload, declaredEnd, fecType, options) {
|
|
233
259
|
if (declaredEnd > payload.length)
|
|
234
260
|
return null;
|
|
235
261
|
if (options?.skipFecId) {
|
|
236
|
-
return
|
|
262
|
+
return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)
|
|
237
263
|
? { hasFecId: false }
|
|
238
264
|
: null;
|
|
239
265
|
}
|
|
240
266
|
if (fecType === 1) {
|
|
241
267
|
const fecStart = payload.length - SOURCE_FEC_PAYLOAD_ID_SIZE;
|
|
242
|
-
if (fecStart < declaredEnd || !
|
|
268
|
+
if (fecStart < declaredEnd || !isEmptyOrExactLegacyTrailer(payload, declaredEnd, fecStart)) {
|
|
243
269
|
return null;
|
|
244
270
|
}
|
|
245
271
|
return { hasFecId: true };
|
|
246
272
|
}
|
|
247
273
|
if (fecType !== 0)
|
|
248
274
|
return null;
|
|
249
|
-
if (
|
|
275
|
+
if (isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)) {
|
|
250
276
|
return { hasFecId: false };
|
|
251
277
|
}
|
|
252
278
|
return null;
|
|
@@ -344,7 +370,7 @@ function planMfuExtraction(mmtpPacket, options, parsedHeader) {
|
|
|
344
370
|
rejection: {
|
|
345
371
|
gate: 'declared-trailers-unresolved',
|
|
346
372
|
detail: `trailer bytes [${layout.dataEnd}, ${payload.length}) are neither empty ` +
|
|
347
|
-
`nor an exact
|
|
373
|
+
`nor an exact legacy authenticator trailer (fecType=${header.fecType})`,
|
|
348
374
|
},
|
|
349
375
|
};
|
|
350
376
|
}
|
|
@@ -484,20 +510,6 @@ export function sourceFecPayloadIdOf(mmtpPacket, header) {
|
|
|
484
510
|
0,
|
|
485
511
|
};
|
|
486
512
|
}
|
|
487
|
-
/**
|
|
488
|
-
* MMTP header-extension ext_type assigned to the detached ALTA authenticator
|
|
489
|
-
* trailer (Path 2 / 08-07). Carried in an `[ext_type][ext_length][auth]`
|
|
490
|
-
* block appended after the MPU's declared payload bytes, before the 4-byte
|
|
491
|
-
* Source FEC Payload ID. MMTP X-bit stays 0 — non-ALTA MMTP receivers treat
|
|
492
|
-
* the trailer as bytes past `payload_length` and skip it (per ISO 23008-1
|
|
493
|
-
* §9.2.2 "may be discarded without impacting correct processing").
|
|
494
|
-
*/
|
|
495
|
-
// Re-export the ALTA trailer helper from the zero-dep leaf package. The leaf
|
|
496
|
-
// owns the implementation so container and FEC consumers share one parser
|
|
497
|
-
// without creating a package cycle.
|
|
498
|
-
export const MMTP_EXT_TYPE_ALTA_AUTH = _LEAF_MMTP_EXT_TYPE_ALTA_AUTH;
|
|
499
|
-
export const MMTP_EXT_TRAILER_HEADER_SIZE = _LEAF_MMTP_EXT_TRAILER_HEADER_SIZE;
|
|
500
|
-
export const extractAltaTrailer = _leafExtractAltaTrailer;
|
|
501
513
|
/** Size of Repair FEC Payload ID per ISO/IEC 23008-1 Section C.5.3 */
|
|
502
514
|
export const REPAIR_FEC_PID_SIZE = 13;
|
|
503
515
|
/**
|
package/dist/mmtp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmtp.js","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mmtp.js","sourceRoot":"","sources":["../src/mmtp.ts"],"names":[],"mappings":"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"}
|
package/dist/serial-number.d.ts
CHANGED
|
@@ -25,33 +25,4 @@ export declare function serial32Distance(from: number, to: number): number;
|
|
|
25
25
|
* (neither precedes the other).
|
|
26
26
|
*/
|
|
27
27
|
export declare function serial32Precedes(a: number, b: number): boolean;
|
|
28
|
-
/**
|
|
29
|
-
* First SS_ID of block `sbn` under the K-stride numbering every current
|
|
30
|
-
* sender uses (`SS_ID = SBN * K + ESI`, C.5.2), reduced mod 2^32.
|
|
31
|
-
*/
|
|
32
|
-
export declare function kStrideBlockStart(sbn: number, k: number): number;
|
|
33
|
-
/**
|
|
34
|
-
* Whether block `a` precedes block `b`, ordering the blocks by their first
|
|
35
|
-
* SS_ID in serial arithmetic. Identical to `a < b` for any two blocks of a
|
|
36
|
-
* stream that has not wrapped SS_ID.
|
|
37
|
-
*/
|
|
38
|
-
export declare function kStrideBlockPrecedes(a: number, b: number, k: number): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* How many blocks `a` lies behind `b`: 0 when `a` does not precede `b`,
|
|
41
|
-
* otherwise `ceil(distance / K)` over the SS_ID distance between their first
|
|
42
|
-
* symbols. Without a wrap that is exactly `b - a`; across the wrap the one
|
|
43
|
-
* short pre-wrap block (2^32 mod K symbols) still counts as one block.
|
|
44
|
-
*/
|
|
45
|
-
export declare function kStrideBlocksBehind(a: number, b: number, k: number): number;
|
|
46
|
-
/**
|
|
47
|
-
* Whether `sbn` and `k` describe a block of the K-stride numbering:
|
|
48
|
-
* `sbn` a uint32, `k` an integer in 1..2^31-1.
|
|
49
|
-
*/
|
|
50
|
-
export declare function isKStrideBlock(sbn: number, k: number): boolean;
|
|
51
|
-
/**
|
|
52
|
-
* The block after `sbn`: `sbn + 1`, or 0 once `(sbn + 1) * K` reaches 2^32
|
|
53
|
-
* and the next SS_ID wraps (C.5.2). There are `ceil(2^32 / K)` blocks per
|
|
54
|
-
* wrap, the last of them short when K does not divide 2^32.
|
|
55
|
-
*/
|
|
56
|
-
export declare function kStrideNextBlock(sbn: number, k: number): number;
|
|
57
28
|
//# sourceMappingURL=serial-number.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serial-number.d.ts","sourceRoot":"","sources":["../src/serial-number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0CAA0C;AAC1C,eAAO,MAAM,aAAa,aAAgB,CAAA;AAE1C,2CAA2C;AAC3C,eAAO,MAAM,aAAa,aAAc,CAAA;AAQxC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG9D
|
|
1
|
+
{"version":3,"file":"serial-number.d.ts","sourceRoot":"","sources":["../src/serial-number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0CAA0C;AAC1C,eAAO,MAAM,aAAa,aAAgB,CAAA;AAE1C,2CAA2C;AAC3C,eAAO,MAAM,aAAa,aAAc,CAAA;AAQxC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG9D"}
|
package/dist/serial-number.js
CHANGED
|
@@ -41,58 +41,4 @@ export function serial32Precedes(a, b) {
|
|
|
41
41
|
const distance = serial32Distance(a, b);
|
|
42
42
|
return distance !== 0 && distance < SERIAL32_HALF;
|
|
43
43
|
}
|
|
44
|
-
/**
|
|
45
|
-
* First SS_ID of block `sbn` under the K-stride numbering every current
|
|
46
|
-
* sender uses (`SS_ID = SBN * K + ESI`, C.5.2), reduced mod 2^32.
|
|
47
|
-
*/
|
|
48
|
-
export function kStrideBlockStart(sbn, k) {
|
|
49
|
-
assertUint32(sbn, 'sbn');
|
|
50
|
-
if (!Number.isInteger(k) || k < 1 || k >= SERIAL32_HALF) {
|
|
51
|
-
throw new RangeError(`k must be a positive integer below 2^31 (got ${k})`);
|
|
52
|
-
}
|
|
53
|
-
// sbn < 2^32 and k < 2^31 keep the product below 2^63, but a double is
|
|
54
|
-
// exact only to 2^53; split the product so every step is exact.
|
|
55
|
-
const high = Math.floor(sbn / 0x1_0000); // < 2^16
|
|
56
|
-
const low = sbn % 0x1_0000; // < 2^16
|
|
57
|
-
return (((high * k) % SERIAL32_SPAN) * 0x1_0000 + low * k) % SERIAL32_SPAN;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Whether block `a` precedes block `b`, ordering the blocks by their first
|
|
61
|
-
* SS_ID in serial arithmetic. Identical to `a < b` for any two blocks of a
|
|
62
|
-
* stream that has not wrapped SS_ID.
|
|
63
|
-
*/
|
|
64
|
-
export function kStrideBlockPrecedes(a, b, k) {
|
|
65
|
-
return serial32Precedes(kStrideBlockStart(a, k), kStrideBlockStart(b, k));
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* How many blocks `a` lies behind `b`: 0 when `a` does not precede `b`,
|
|
69
|
-
* otherwise `ceil(distance / K)` over the SS_ID distance between their first
|
|
70
|
-
* symbols. Without a wrap that is exactly `b - a`; across the wrap the one
|
|
71
|
-
* short pre-wrap block (2^32 mod K symbols) still counts as one block.
|
|
72
|
-
*/
|
|
73
|
-
export function kStrideBlocksBehind(a, b, k) {
|
|
74
|
-
const from = kStrideBlockStart(a, k);
|
|
75
|
-
const to = kStrideBlockStart(b, k);
|
|
76
|
-
if (!serial32Precedes(from, to))
|
|
77
|
-
return 0;
|
|
78
|
-
return Math.ceil(serial32Distance(from, to) / k);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Whether `sbn` and `k` describe a block of the K-stride numbering:
|
|
82
|
-
* `sbn` a uint32, `k` an integer in 1..2^31-1.
|
|
83
|
-
*/
|
|
84
|
-
export function isKStrideBlock(sbn, k) {
|
|
85
|
-
return Number.isInteger(sbn) && sbn >= 0 && sbn < SERIAL32_SPAN &&
|
|
86
|
-
Number.isInteger(k) && k >= 1 && k < SERIAL32_HALF;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* The block after `sbn`: `sbn + 1`, or 0 once `(sbn + 1) * K` reaches 2^32
|
|
90
|
-
* and the next SS_ID wraps (C.5.2). There are `ceil(2^32 / K)` blocks per
|
|
91
|
-
* wrap, the last of them short when K does not divide 2^32.
|
|
92
|
-
*/
|
|
93
|
-
export function kStrideNextBlock(sbn, k) {
|
|
94
|
-
assertUint32(sbn, 'sbn');
|
|
95
|
-
kStrideBlockStart(sbn, k); // validates k
|
|
96
|
-
return (sbn + 1) * k >= SERIAL32_SPAN ? 0 : sbn + 1;
|
|
97
|
-
}
|
|
98
44
|
//# sourceMappingURL=serial-number.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serial-number.js","sourceRoot":"","sources":["../src/serial-number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAA;AAE1C,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAA;AAExC,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;QACpE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,0BAA0B,KAAK,GAAG,CAAC,CAAA;IACjE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC;QACtE,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC,GAAG,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,aAAa,CAAA;AAChD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,EAAU;IACvD,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS,EAAE,CAAS;IACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,OAAO,QAAQ,KAAK,CAAC,IAAI,QAAQ,GAAG,aAAa,CAAA;AACnD,CAAC
|
|
1
|
+
{"version":3,"file":"serial-number.js","sourceRoot":"","sources":["../src/serial-number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAA;AAE1C,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAA;AAExC,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;QACpE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,0BAA0B,KAAK,GAAG,CAAC,CAAA;IACjE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC;QACtE,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC,GAAG,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,aAAa,CAAA;AAChD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,EAAU;IACvD,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS,EAAE,CAAS;IACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,OAAO,QAAQ,KAAK,CAAC,IAAI,QAAQ,GAAG,aAAa,CAAA;AACnD,CAAC"}
|
package/dist/signalling.d.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* How the signalling payload of an MMTP packet was framed
|
|
2
|
+
* How the signalling payload of an MMTP packet was framed: always
|
|
3
|
+
* `iso-9.3.4.2`, the 2-byte `f_i(2) RES(4) H(1) A(1) | frag_counter(8)`
|
|
4
|
+
* header of ISO/IEC 23008-1:2023 9.3.4.2 ahead of the message(s).
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* pair is never a valid 9.3.4.2 header for a complete message: f_i=00 with
|
|
10
|
-
* frag_counter=3 claims three further fragments of a message the same
|
|
11
|
-
* header declares complete. The peek is therefore exact, not a heuristic.
|
|
12
|
-
* The legacy branch is deleted once no legacy sender remains (BLO-35597
|
|
13
|
-
* plan, Phase L).
|
|
6
|
+
* The pre-remediation Blockcast form, an AL-FEC message directly after the
|
|
7
|
+
* MMTP header, is not accepted (BLO-35597, Phase L). Its first two bytes,
|
|
8
|
+
* `0x02 0x03`, read as a 9.3.4.2 header claiming three further fragments
|
|
9
|
+
* of a complete message, which the header parser refuses: such a packet
|
|
10
|
+
* parses to null, never to a guess.
|
|
14
11
|
*/
|
|
15
|
-
export type SignallingPayloadForm = 'iso-9.3.4.2'
|
|
12
|
+
export type SignallingPayloadForm = 'iso-9.3.4.2';
|
|
16
13
|
export interface SignallingPayload {
|
|
17
14
|
form: SignallingPayloadForm;
|
|
18
15
|
/** Each complete signalling message, starting at its message_id. */
|
|
@@ -123,9 +120,9 @@ export interface AlFecMessage extends AlFecMessageBody {
|
|
|
123
120
|
*/
|
|
124
121
|
export declare function parseAlFecMessageBody(message: Uint8Array): AlFecMessageBody | null;
|
|
125
122
|
/**
|
|
126
|
-
* Parse the AL-FEC message carried by a full MMTP signalling packet
|
|
127
|
-
*
|
|
128
|
-
*
|
|
123
|
+
* Parse the AL-FEC message carried by a full MMTP signalling packet (a
|
|
124
|
+
* 9.3.4.2 payload, see SignallingPayloadForm). Returns null when the packet
|
|
125
|
+
* carries no AL-FEC message, more than one, or a malformed one.
|
|
129
126
|
*/
|
|
130
127
|
export declare function parseAlFecMessage(mmtpPacket: Uint8Array): AlFecMessage | null;
|
|
131
128
|
/**
|
|
@@ -136,7 +133,9 @@ export declare function parseAlFecMessage(mmtpPacket: Uint8Array): AlFecMessage
|
|
|
136
133
|
export interface AlFecRaptorQFlowConfig {
|
|
137
134
|
sourcePacketIds: number[];
|
|
138
135
|
repairFlowId: number;
|
|
136
|
+
/** Always `SSBG_MODE_1` (`iso-ssbg1-v1`). */
|
|
139
137
|
ssbgMode: number;
|
|
138
|
+
/** The coding byte's low bit as signalled (see AlFecFlow.fecPayloadIdMode). */
|
|
140
139
|
fecPayloadIdMode: 0 | 1;
|
|
141
140
|
repairSymbolSize: number;
|
|
142
141
|
maximumK: number;
|
|
@@ -152,11 +151,17 @@ export interface AlFecRaptorQFlowConfig {
|
|
|
152
151
|
* the profile. Nothing is inferred: K comes from the OTI and must equal
|
|
153
152
|
* maximum_k_for_repair_flow.
|
|
154
153
|
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
154
|
+
* The profile is `iso-ssbg1-v1`, whose AL-FEC coding byte is 0x14
|
|
155
|
+
* (draft-ramadan-moq-fec §7.3; ISO/IEC 23008-1 Table C.3 as replaced by
|
|
156
|
+
* Amd 1:2025): one-stage, ssbg_mode1, ffsrpts_flag 0, fec_payload_id_mode 0.
|
|
157
|
+
* 0x15 is accepted too: its low bit is fec_payload_id_mode 1 under Amd
|
|
158
|
+
* 1:2025 but reserved "1" in the unamended 2023 Table C.3, so a 2023 sender
|
|
159
|
+
* of the same profile emits it. No later field depends on the bit, and each
|
|
160
|
+
* source packet's FEC_type says whether it carries a Source FEC Payload ID,
|
|
161
|
+
* so the bit is reported, not interpreted (BLO-35597 N1). Any other coding
|
|
162
|
+
* byte is refused here, though `parseAlFecMessageBody` still reports it:
|
|
163
|
+
* ssbg_mode0 (0x10/0x11, the retired `k-padded-v1` wire) carries no length
|
|
164
|
+
* field; ffsrpts_flag=1 changes the source/repair packet trailer layout.
|
|
160
165
|
*/
|
|
161
166
|
export declare function alFecRaptorQFlowConfig(flow: AlFecFlow): AlFecRaptorQFlowConfig | null;
|
|
162
167
|
/** location_type values (Table 96) a receiver may meet in an asset location. */
|
|
@@ -303,10 +308,7 @@ export interface MmtSignallingPacket {
|
|
|
303
308
|
* Parse every signalling message of a full MMTP signalling packet (the
|
|
304
309
|
* packet_id 0 flow). Returns null when the packet or any message in it is
|
|
305
310
|
* malformed: one unparseable message leaves the receiver unable to say what
|
|
306
|
-
* the packet signalled.
|
|
307
|
-
*
|
|
308
|
-
* The legacy bare form carries exactly one AL-FEC message; any other message
|
|
309
|
-
* is only accepted inside a 9.3.4.2 payload.
|
|
311
|
+
* the packet signalled. Only the 9.3.4.2 payload form is accepted.
|
|
310
312
|
*/
|
|
311
313
|
export declare function parseSignallingPacket(mmtpPacket: Uint8Array): MmtSignallingPacket | null;
|
|
312
314
|
//# sourceMappingURL=signalling.d.ts.map
|
package/dist/signalling.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalling.d.ts","sourceRoot":"","sources":["../src/signalling.ts"],"names":[],"mappings":"AAiHA
|
|
1
|
+
{"version":3,"file":"signalling.d.ts","sourceRoot":"","sources":["../src/signalling.ts"],"names":[],"mappings":"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"}
|
package/dist/signalling.js
CHANGED
|
@@ -116,9 +116,6 @@ export function parseSignallingPayload(mmtpPacket) {
|
|
|
116
116
|
function splitSignallingPayload(payload) {
|
|
117
117
|
if (payload.length < 2)
|
|
118
118
|
fail('short signalling payload');
|
|
119
|
-
if (payload[0] === (ALFEC_MESSAGE_ID >> 8) && payload[1] === (ALFEC_MESSAGE_ID & 0xff)) {
|
|
120
|
-
return { form: 'legacy-bare-alfec', messages: [payload] };
|
|
121
|
-
}
|
|
122
119
|
const reader = new WireReader(payload);
|
|
123
120
|
const flags = reader.u8();
|
|
124
121
|
const fragmentation = flags >> 6;
|
|
@@ -320,9 +317,9 @@ export function parseAlFecMessageBody(message) {
|
|
|
320
317
|
});
|
|
321
318
|
}
|
|
322
319
|
/**
|
|
323
|
-
* Parse the AL-FEC message carried by a full MMTP signalling packet
|
|
324
|
-
*
|
|
325
|
-
*
|
|
320
|
+
* Parse the AL-FEC message carried by a full MMTP signalling packet (a
|
|
321
|
+
* 9.3.4.2 payload, see SignallingPayloadForm). Returns null when the packet
|
|
322
|
+
* carries no AL-FEC message, more than one, or a malformed one.
|
|
326
323
|
*/
|
|
327
324
|
export function parseAlFecMessage(mmtpPacket) {
|
|
328
325
|
const packet = parseSignallingPacket(mmtpPacket);
|
|
@@ -360,16 +357,22 @@ function canonicalRaptorQOtiK(oti, repairSymbolSize) {
|
|
|
360
357
|
* the profile. Nothing is inferred: K comes from the OTI and must equal
|
|
361
358
|
* maximum_k_for_repair_flow.
|
|
362
359
|
*
|
|
363
|
-
*
|
|
364
|
-
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
360
|
+
* The profile is `iso-ssbg1-v1`, whose AL-FEC coding byte is 0x14
|
|
361
|
+
* (draft-ramadan-moq-fec §7.3; ISO/IEC 23008-1 Table C.3 as replaced by
|
|
362
|
+
* Amd 1:2025): one-stage, ssbg_mode1, ffsrpts_flag 0, fec_payload_id_mode 0.
|
|
363
|
+
* 0x15 is accepted too: its low bit is fec_payload_id_mode 1 under Amd
|
|
364
|
+
* 1:2025 but reserved "1" in the unamended 2023 Table C.3, so a 2023 sender
|
|
365
|
+
* of the same profile emits it. No later field depends on the bit, and each
|
|
366
|
+
* source packet's FEC_type says whether it carries a Source FEC Payload ID,
|
|
367
|
+
* so the bit is reported, not interpreted (BLO-35597 N1). Any other coding
|
|
368
|
+
* byte is refused here, though `parseAlFecMessageBody` still reports it:
|
|
369
|
+
* ssbg_mode0 (0x10/0x11, the retired `k-padded-v1` wire) carries no length
|
|
370
|
+
* field; ffsrpts_flag=1 changes the source/repair packet trailer layout.
|
|
368
371
|
*/
|
|
369
372
|
export function alFecRaptorQFlowConfig(flow) {
|
|
370
373
|
if (flow.fecCodingStructure !== FEC_CODING_STRUCTURE_ONE_STAGE || flow.repairFlows.length !== 1)
|
|
371
374
|
return null;
|
|
372
|
-
if (flow.ssbgMode !==
|
|
375
|
+
if (flow.ssbgMode !== SSBG_MODE_1)
|
|
373
376
|
return null;
|
|
374
377
|
if (flow.ffsrptsFlag !== 0)
|
|
375
378
|
return null;
|
|
@@ -620,10 +623,7 @@ function decodeSignallingMessage(bytes) {
|
|
|
620
623
|
* Parse every signalling message of a full MMTP signalling packet (the
|
|
621
624
|
* packet_id 0 flow). Returns null when the packet or any message in it is
|
|
622
625
|
* malformed: one unparseable message leaves the receiver unable to say what
|
|
623
|
-
* the packet signalled.
|
|
624
|
-
*
|
|
625
|
-
* The legacy bare form carries exactly one AL-FEC message; any other message
|
|
626
|
-
* is only accepted inside a 9.3.4.2 payload.
|
|
626
|
+
* the packet signalled. Only the 9.3.4.2 payload form is accepted.
|
|
627
627
|
*/
|
|
628
628
|
export function parseSignallingPacket(mmtpPacket) {
|
|
629
629
|
const payload = parseSignallingPayload(mmtpPacket);
|
package/dist/signalling.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalling.js","sourceRoot":"","sources":["../src/signalling.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signalling.js","sourceRoot":"","sources":["../src/signalling.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blockcast/mmt-base",
|
|
3
|
-
"version": "0.3.0-main.
|
|
3
|
+
"version": "0.3.0-main.71d61b2a53f2",
|
|
4
4
|
"description": "Shared MMTP parsing primitives and protocol constants (zero FEC dependency). Hosts MMTP_HEADER_SIZE, parseMMTPHeader, extractMFUPayload and friends, plus wire constants such as DEFAULT_AMT_RELAY_PORT, so @blockcast/mmt-fec, @blockcast/mmt-container and @blockcast/mmt-transport can share one definition without a circular dep.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,9 +28,7 @@
|
|
|
28
28
|
"test": "vitest run",
|
|
29
29
|
"test:watch": "vitest"
|
|
30
30
|
},
|
|
31
|
-
"dependencies": {
|
|
32
|
-
"@blockcast/mmt-alta-parse": "0.3.0-main.5bb7058c73ff"
|
|
33
|
-
},
|
|
31
|
+
"dependencies": {},
|
|
34
32
|
"devDependencies": {
|
|
35
33
|
"typescript": "^5.3.0",
|
|
36
34
|
"vitest": "^1.0.0"
|
package/src/fec-block-profile.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* FEC block profile (BLO-35597, ISO/IEC 23008-1 Annex C).
|
|
3
3
|
*
|
|
4
|
-
* Every catalog `fec` object that declares an FEC instance names
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Every catalog `fec` object that declares an FEC instance names its block
|
|
5
|
+
* profile in `fec.blockProfile`. A receiver applies all of a profile's rules
|
|
6
|
+
* or none of them, so the token is the one explicit per-stream discriminator:
|
|
7
|
+
* it is never defaulted and never inferred from the wire.
|
|
8
|
+
*
|
|
9
|
+
* draft-ramadan-moq-fec §5.1 defines exactly one value, and it is the only
|
|
10
|
+
* profile this library implements:
|
|
8
11
|
*
|
|
9
|
-
* - `k-padded-v1` (legacy, Blockcast-private): a source symbol is the
|
|
10
|
-
* protected MMTP packet zero-padded to T with no length field; every block
|
|
11
|
-
* is a K-symbol RaptorQ block whose ESIs `SSB_length..K-1` are implicit
|
|
12
|
-
* zero padding; `SS_ID = SBN*K + ESI`, so `SS_Start = SBN*K`; repair
|
|
13
|
-
* ESI = K + RS_ID; the MoQ repair group id is the SBN.
|
|
14
12
|
* - `iso-ssbg1-v1`: ssbg_mode1 (C.3.3): a source symbol is
|
|
15
13
|
* `u16 length || protected packet || zero padding` to T; a block is a
|
|
16
14
|
* K' = SSB_length RaptorQ block (C.5.3) and repair ESI = SSB_length + RS_ID;
|
|
@@ -19,40 +17,42 @@
|
|
|
19
17
|
* under RFC 1982 serial arithmetic; the MoQ repair group id is the 62-bit
|
|
20
18
|
* wrap-epoch-extended SS_Start. The AL-FEC coding byte for this profile is
|
|
21
19
|
* 0x14 (one-stage, ssbg_mode1, fec_payload_id_mode 0, Amd 1:2025 Table C.3).
|
|
20
|
+
*
|
|
21
|
+
* A track whose `blockProfile` is absent or names any other token (the
|
|
22
|
+
* retired Blockcast-private `k-padded-v1` included) has no FEC: a receiver
|
|
23
|
+
* consumes its source without FEC and joins none of its repair tracks
|
|
24
|
+
* (draft-ramadan-moq-fec §5.1). `parseFecBlockProfile` throws for such a
|
|
25
|
+
* token; the per-track catalog resolver turns the same rule into a typed
|
|
26
|
+
* per-track "FEC unavailable" outcome instead of failing the session.
|
|
22
27
|
*/
|
|
23
28
|
import { serial32Add, serial32Distance, serial32Precedes } from './serial-number.js'
|
|
24
29
|
|
|
25
|
-
/** The
|
|
26
|
-
export type FecBlockProfile = '
|
|
30
|
+
/** The block profile a catalog `fec.blockProfile` may name: the one this library implements. */
|
|
31
|
+
export type FecBlockProfile = 'iso-ssbg1-v1'
|
|
27
32
|
|
|
28
|
-
/** Every accepted `fec.blockProfile` token
|
|
33
|
+
/** Every accepted `fec.blockProfile` token. */
|
|
29
34
|
export const FEC_BLOCK_PROFILES: readonly FecBlockProfile[] = Object.freeze([
|
|
30
|
-
'k-padded-v1',
|
|
31
35
|
'iso-ssbg1-v1',
|
|
32
36
|
])
|
|
33
37
|
|
|
34
|
-
/** True for a
|
|
38
|
+
/** True for a block-profile token this library implements. */
|
|
35
39
|
export function isFecBlockProfile(value: unknown): value is FecBlockProfile {
|
|
36
|
-
return value === '
|
|
40
|
+
return value === 'iso-ssbg1-v1'
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
/**
|
|
40
|
-
* Read a required `fec.blockProfile`. Throws on an absent
|
|
41
|
-
* there is no default and nothing is
|
|
42
|
-
*
|
|
44
|
+
* Read a required `fec.blockProfile`. Throws on an absent token and on any
|
|
45
|
+
* token other than `iso-ssbg1-v1`: there is no default and nothing is
|
|
46
|
+
* inferred from the wire (draft-ramadan-moq-fec §5.1).
|
|
43
47
|
*
|
|
44
48
|
* @param where the catalog path of the field, for the error message.
|
|
45
49
|
*/
|
|
46
50
|
export function parseFecBlockProfile(value: unknown, where: string): FecBlockProfile {
|
|
47
51
|
if (isFecBlockProfile(value)) return value
|
|
48
52
|
if (value === undefined) {
|
|
49
|
-
throw new Error(
|
|
50
|
-
`${where} is required: name the FEC block profile ("k-padded-v1" or "iso-ssbg1-v1")`,
|
|
51
|
-
)
|
|
53
|
+
throw new Error(`${where} is required: name the FEC block profile ("iso-ssbg1-v1")`)
|
|
52
54
|
}
|
|
53
|
-
throw new Error(
|
|
54
|
-
`${where} must be "k-padded-v1" or "iso-ssbg1-v1" (got ${JSON.stringify(value)})`,
|
|
55
|
-
)
|
|
55
|
+
throw new Error(`${where} must be "iso-ssbg1-v1" (got ${JSON.stringify(value)})`)
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/** ISO/IEC 23008-1 C.3.3 ssbg_mode1: the two-octet packet length field. */
|
package/src/mmtp.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MMTP_EXT_TYPE_ALTA_AUTH as _LEAF_MMTP_EXT_TYPE_ALTA_AUTH,
|
|
3
|
-
MMTP_EXT_TRAILER_HEADER_SIZE as _LEAF_MMTP_EXT_TRAILER_HEADER_SIZE,
|
|
4
|
-
extractAltaTrailer as _leafExtractAltaTrailer,
|
|
5
|
-
type AltaTrailer as _LeafAltaTrailer,
|
|
6
|
-
} from '@blockcast/mmt-alta-parse'
|
|
7
|
-
|
|
8
1
|
/**
|
|
9
2
|
* @mmt/container - MMTP Parser
|
|
10
3
|
*
|
|
@@ -353,9 +346,17 @@ function resolveMfuPayloadLayout(
|
|
|
353
346
|
}
|
|
354
347
|
}
|
|
355
348
|
|
|
356
|
-
|
|
349
|
+
// Legacy detached per-packet authenticator suffix `[0xf0a1][len][auth]`. Its
|
|
350
|
+
// producer was removed (BLO-16483) and nothing verifies it any more; provenance
|
|
351
|
+
// is the signed per-group manifest. Receivers still skip an exact suffix so a
|
|
352
|
+
// stale producer degrades to unauthenticated playback instead of dropped
|
|
353
|
+
// packets. ponytail: hard-cut to reject once no deployed producer can emit it.
|
|
354
|
+
const LEGACY_TRAILER_EXT_TYPE = 0xf0a1
|
|
355
|
+
const LEGACY_TRAILER_HEADER_SIZE = 4
|
|
356
|
+
|
|
357
|
+
function isEmptyOrExactLegacyTrailer(payload: Uint8Array, start: number, end: number): boolean {
|
|
357
358
|
if (start === end) return true
|
|
358
|
-
if (start < 0 || end > payload.length || start +
|
|
359
|
+
if (start < 0 || end > payload.length || start + LEGACY_TRAILER_HEADER_SIZE > end) {
|
|
359
360
|
return false
|
|
360
361
|
}
|
|
361
362
|
|
|
@@ -364,10 +365,10 @@ function isEmptyOrExactAltaTrailer(payload: Uint8Array, start: number, end: numb
|
|
|
364
365
|
payload.byteOffset + start,
|
|
365
366
|
end - start,
|
|
366
367
|
)
|
|
367
|
-
if (view.getUint16(0, false) !==
|
|
368
|
+
if (view.getUint16(0, false) !== LEGACY_TRAILER_EXT_TYPE) return false
|
|
368
369
|
|
|
369
370
|
const authLength = view.getUint16(2, false)
|
|
370
|
-
return start +
|
|
371
|
+
return start + LEGACY_TRAILER_HEADER_SIZE + authLength === end
|
|
371
372
|
}
|
|
372
373
|
|
|
373
374
|
interface DeclaredTrailerLayout {
|
|
@@ -383,21 +384,21 @@ function resolveDeclaredTrailers(
|
|
|
383
384
|
if (declaredEnd > payload.length) return null
|
|
384
385
|
|
|
385
386
|
if (options?.skipFecId) {
|
|
386
|
-
return
|
|
387
|
+
return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)
|
|
387
388
|
? { hasFecId: false }
|
|
388
389
|
: null
|
|
389
390
|
}
|
|
390
391
|
|
|
391
392
|
if (fecType === 1) {
|
|
392
393
|
const fecStart = payload.length - SOURCE_FEC_PAYLOAD_ID_SIZE
|
|
393
|
-
if (fecStart < declaredEnd || !
|
|
394
|
+
if (fecStart < declaredEnd || !isEmptyOrExactLegacyTrailer(payload, declaredEnd, fecStart)) {
|
|
394
395
|
return null
|
|
395
396
|
}
|
|
396
397
|
return { hasFecId: true }
|
|
397
398
|
}
|
|
398
399
|
if (fecType !== 0) return null
|
|
399
400
|
|
|
400
|
-
if (
|
|
401
|
+
if (isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)) {
|
|
401
402
|
return { hasFecId: false }
|
|
402
403
|
}
|
|
403
404
|
|
|
@@ -441,8 +442,8 @@ export interface MFUExtraction {
|
|
|
441
442
|
* - Source FEC Payload ID (4 bytes at end, only when `FEC_type == 1`)
|
|
442
443
|
*
|
|
443
444
|
* `payloadLength` is the ISO length-after-field value: six remaining MPU-header
|
|
444
|
-
* bytes, then the MFU DU header when present, then media.
|
|
445
|
-
*
|
|
445
|
+
* bytes, then the MFU DU header when present, then media. The legacy
|
|
446
|
+
* authenticator suffix and the Source FEC trailer are outside that declared span and must consume the exact suffix.
|
|
446
447
|
*
|
|
447
448
|
* @param mmtpPacket Raw MMTP packet (from multicast or MoQ)
|
|
448
449
|
* @param options.skipFecId When true, do NOT subtract the 4-byte Source FEC Payload ID
|
|
@@ -559,7 +560,7 @@ function planMfuExtraction(
|
|
|
559
560
|
gate: 'declared-trailers-unresolved',
|
|
560
561
|
detail:
|
|
561
562
|
`trailer bytes [${layout.dataEnd}, ${payload.length}) are neither empty ` +
|
|
562
|
-
`nor an exact
|
|
563
|
+
`nor an exact legacy authenticator trailer (fecType=${header.fecType})`,
|
|
563
564
|
},
|
|
564
565
|
}
|
|
565
566
|
}
|
|
@@ -732,22 +733,6 @@ export function sourceFecPayloadIdOf(
|
|
|
732
733
|
}
|
|
733
734
|
}
|
|
734
735
|
|
|
735
|
-
/**
|
|
736
|
-
* MMTP header-extension ext_type assigned to the detached ALTA authenticator
|
|
737
|
-
* trailer (Path 2 / 08-07). Carried in an `[ext_type][ext_length][auth]`
|
|
738
|
-
* block appended after the MPU's declared payload bytes, before the 4-byte
|
|
739
|
-
* Source FEC Payload ID. MMTP X-bit stays 0 — non-ALTA MMTP receivers treat
|
|
740
|
-
* the trailer as bytes past `payload_length` and skip it (per ISO 23008-1
|
|
741
|
-
* §9.2.2 "may be discarded without impacting correct processing").
|
|
742
|
-
*/
|
|
743
|
-
// Re-export the ALTA trailer helper from the zero-dep leaf package. The leaf
|
|
744
|
-
// owns the implementation so container and FEC consumers share one parser
|
|
745
|
-
// without creating a package cycle.
|
|
746
|
-
export const MMTP_EXT_TYPE_ALTA_AUTH = _LEAF_MMTP_EXT_TYPE_ALTA_AUTH
|
|
747
|
-
export const MMTP_EXT_TRAILER_HEADER_SIZE = _LEAF_MMTP_EXT_TRAILER_HEADER_SIZE
|
|
748
|
-
export type AltaTrailer = _LeafAltaTrailer
|
|
749
|
-
export const extractAltaTrailer = _leafExtractAltaTrailer
|
|
750
|
-
|
|
751
736
|
/** Size of Repair FEC Payload ID per ISO/IEC 23008-1 Section C.5.3 */
|
|
752
737
|
export const REPAIR_FEC_PID_SIZE = 13
|
|
753
738
|
|
package/src/serial-number.ts
CHANGED
|
@@ -47,61 +47,3 @@ export function serial32Precedes(a: number, b: number): boolean {
|
|
|
47
47
|
const distance = serial32Distance(a, b)
|
|
48
48
|
return distance !== 0 && distance < SERIAL32_HALF
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* First SS_ID of block `sbn` under the K-stride numbering every current
|
|
53
|
-
* sender uses (`SS_ID = SBN * K + ESI`, C.5.2), reduced mod 2^32.
|
|
54
|
-
*/
|
|
55
|
-
export function kStrideBlockStart(sbn: number, k: number): number {
|
|
56
|
-
assertUint32(sbn, 'sbn')
|
|
57
|
-
if (!Number.isInteger(k) || k < 1 || k >= SERIAL32_HALF) {
|
|
58
|
-
throw new RangeError(`k must be a positive integer below 2^31 (got ${k})`)
|
|
59
|
-
}
|
|
60
|
-
// sbn < 2^32 and k < 2^31 keep the product below 2^63, but a double is
|
|
61
|
-
// exact only to 2^53; split the product so every step is exact.
|
|
62
|
-
const high = Math.floor(sbn / 0x1_0000) // < 2^16
|
|
63
|
-
const low = sbn % 0x1_0000 // < 2^16
|
|
64
|
-
return (((high * k) % SERIAL32_SPAN) * 0x1_0000 + low * k) % SERIAL32_SPAN
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Whether block `a` precedes block `b`, ordering the blocks by their first
|
|
69
|
-
* SS_ID in serial arithmetic. Identical to `a < b` for any two blocks of a
|
|
70
|
-
* stream that has not wrapped SS_ID.
|
|
71
|
-
*/
|
|
72
|
-
export function kStrideBlockPrecedes(a: number, b: number, k: number): boolean {
|
|
73
|
-
return serial32Precedes(kStrideBlockStart(a, k), kStrideBlockStart(b, k))
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* How many blocks `a` lies behind `b`: 0 when `a` does not precede `b`,
|
|
78
|
-
* otherwise `ceil(distance / K)` over the SS_ID distance between their first
|
|
79
|
-
* symbols. Without a wrap that is exactly `b - a`; across the wrap the one
|
|
80
|
-
* short pre-wrap block (2^32 mod K symbols) still counts as one block.
|
|
81
|
-
*/
|
|
82
|
-
export function kStrideBlocksBehind(a: number, b: number, k: number): number {
|
|
83
|
-
const from = kStrideBlockStart(a, k)
|
|
84
|
-
const to = kStrideBlockStart(b, k)
|
|
85
|
-
if (!serial32Precedes(from, to)) return 0
|
|
86
|
-
return Math.ceil(serial32Distance(from, to) / k)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Whether `sbn` and `k` describe a block of the K-stride numbering:
|
|
91
|
-
* `sbn` a uint32, `k` an integer in 1..2^31-1.
|
|
92
|
-
*/
|
|
93
|
-
export function isKStrideBlock(sbn: number, k: number): boolean {
|
|
94
|
-
return Number.isInteger(sbn) && sbn >= 0 && sbn < SERIAL32_SPAN &&
|
|
95
|
-
Number.isInteger(k) && k >= 1 && k < SERIAL32_HALF
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* The block after `sbn`: `sbn + 1`, or 0 once `(sbn + 1) * K` reaches 2^32
|
|
100
|
-
* and the next SS_ID wraps (C.5.2). There are `ceil(2^32 / K)` blocks per
|
|
101
|
-
* wrap, the last of them short when K does not divide 2^32.
|
|
102
|
-
*/
|
|
103
|
-
export function kStrideNextBlock(sbn: number, k: number): number {
|
|
104
|
-
assertUint32(sbn, 'sbn')
|
|
105
|
-
kStrideBlockStart(sbn, k) // validates k
|
|
106
|
-
return (sbn + 1) * k >= SERIAL32_SPAN ? 0 : sbn + 1
|
|
107
|
-
}
|
package/src/signalling.ts
CHANGED
|
@@ -112,20 +112,17 @@ function total<T>(parse: () => T | null): T | null {
|
|
|
112
112
|
// ---------------------------------------------------------------------------
|
|
113
113
|
|
|
114
114
|
/**
|
|
115
|
-
* How the signalling payload of an MMTP packet was framed
|
|
115
|
+
* How the signalling payload of an MMTP packet was framed: always
|
|
116
|
+
* `iso-9.3.4.2`, the 2-byte `f_i(2) RES(4) H(1) A(1) | frag_counter(8)`
|
|
117
|
+
* header of ISO/IEC 23008-1:2023 9.3.4.2 ahead of the message(s).
|
|
116
118
|
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* pair is never a valid 9.3.4.2 header for a complete message: f_i=00 with
|
|
123
|
-
* frag_counter=3 claims three further fragments of a message the same
|
|
124
|
-
* header declares complete. The peek is therefore exact, not a heuristic.
|
|
125
|
-
* The legacy branch is deleted once no legacy sender remains (BLO-35597
|
|
126
|
-
* plan, Phase L).
|
|
119
|
+
* The pre-remediation Blockcast form, an AL-FEC message directly after the
|
|
120
|
+
* MMTP header, is not accepted (BLO-35597, Phase L). Its first two bytes,
|
|
121
|
+
* `0x02 0x03`, read as a 9.3.4.2 header claiming three further fragments
|
|
122
|
+
* of a complete message, which the header parser refuses: such a packet
|
|
123
|
+
* parses to null, never to a guess.
|
|
127
124
|
*/
|
|
128
|
-
export type SignallingPayloadForm = 'iso-9.3.4.2'
|
|
125
|
+
export type SignallingPayloadForm = 'iso-9.3.4.2'
|
|
129
126
|
|
|
130
127
|
export interface SignallingPayload {
|
|
131
128
|
form: SignallingPayloadForm
|
|
@@ -158,10 +155,6 @@ export function parseSignallingPayload(mmtpPacket: Uint8Array): SignallingPayloa
|
|
|
158
155
|
|
|
159
156
|
function splitSignallingPayload(payload: Uint8Array): SignallingPayload {
|
|
160
157
|
if (payload.length < 2) fail('short signalling payload')
|
|
161
|
-
if (payload[0] === (ALFEC_MESSAGE_ID >> 8) && payload[1] === (ALFEC_MESSAGE_ID & 0xff)) {
|
|
162
|
-
return { form: 'legacy-bare-alfec', messages: [payload] }
|
|
163
|
-
}
|
|
164
|
-
|
|
165
158
|
const reader = new WireReader(payload)
|
|
166
159
|
const flags = reader.u8()
|
|
167
160
|
const fragmentation = flags >> 6
|
|
@@ -445,9 +438,9 @@ export function parseAlFecMessageBody(message: Uint8Array): AlFecMessageBody | n
|
|
|
445
438
|
}
|
|
446
439
|
|
|
447
440
|
/**
|
|
448
|
-
* Parse the AL-FEC message carried by a full MMTP signalling packet
|
|
449
|
-
*
|
|
450
|
-
*
|
|
441
|
+
* Parse the AL-FEC message carried by a full MMTP signalling packet (a
|
|
442
|
+
* 9.3.4.2 payload, see SignallingPayloadForm). Returns null when the packet
|
|
443
|
+
* carries no AL-FEC message, more than one, or a malformed one.
|
|
451
444
|
*/
|
|
452
445
|
export function parseAlFecMessage(mmtpPacket: Uint8Array): AlFecMessage | null {
|
|
453
446
|
const packet = parseSignallingPacket(mmtpPacket)
|
|
@@ -467,7 +460,9 @@ export function parseAlFecMessage(mmtpPacket: Uint8Array): AlFecMessage | null {
|
|
|
467
460
|
export interface AlFecRaptorQFlowConfig {
|
|
468
461
|
sourcePacketIds: number[]
|
|
469
462
|
repairFlowId: number
|
|
463
|
+
/** Always `SSBG_MODE_1` (`iso-ssbg1-v1`). */
|
|
470
464
|
ssbgMode: number
|
|
465
|
+
/** The coding byte's low bit as signalled (see AlFecFlow.fecPayloadIdMode). */
|
|
471
466
|
fecPayloadIdMode: 0 | 1
|
|
472
467
|
repairSymbolSize: number
|
|
473
468
|
maximumK: number
|
|
@@ -506,15 +501,21 @@ function canonicalRaptorQOtiK(oti: Uint8Array, repairSymbolSize: number): number
|
|
|
506
501
|
* the profile. Nothing is inferred: K comes from the OTI and must equal
|
|
507
502
|
* maximum_k_for_repair_flow.
|
|
508
503
|
*
|
|
509
|
-
*
|
|
510
|
-
*
|
|
511
|
-
*
|
|
512
|
-
*
|
|
513
|
-
*
|
|
504
|
+
* The profile is `iso-ssbg1-v1`, whose AL-FEC coding byte is 0x14
|
|
505
|
+
* (draft-ramadan-moq-fec §7.3; ISO/IEC 23008-1 Table C.3 as replaced by
|
|
506
|
+
* Amd 1:2025): one-stage, ssbg_mode1, ffsrpts_flag 0, fec_payload_id_mode 0.
|
|
507
|
+
* 0x15 is accepted too: its low bit is fec_payload_id_mode 1 under Amd
|
|
508
|
+
* 1:2025 but reserved "1" in the unamended 2023 Table C.3, so a 2023 sender
|
|
509
|
+
* of the same profile emits it. No later field depends on the bit, and each
|
|
510
|
+
* source packet's FEC_type says whether it carries a Source FEC Payload ID,
|
|
511
|
+
* so the bit is reported, not interpreted (BLO-35597 N1). Any other coding
|
|
512
|
+
* byte is refused here, though `parseAlFecMessageBody` still reports it:
|
|
513
|
+
* ssbg_mode0 (0x10/0x11, the retired `k-padded-v1` wire) carries no length
|
|
514
|
+
* field; ffsrpts_flag=1 changes the source/repair packet trailer layout.
|
|
514
515
|
*/
|
|
515
516
|
export function alFecRaptorQFlowConfig(flow: AlFecFlow): AlFecRaptorQFlowConfig | null {
|
|
516
517
|
if (flow.fecCodingStructure !== FEC_CODING_STRUCTURE_ONE_STAGE || flow.repairFlows.length !== 1) return null
|
|
517
|
-
if (flow.ssbgMode !==
|
|
518
|
+
if (flow.ssbgMode !== SSBG_MODE_1) return null
|
|
518
519
|
if (flow.ffsrptsFlag !== 0) return null
|
|
519
520
|
const repair = flow.repairFlows[0]!
|
|
520
521
|
if (repair.fecCodeId !== FEC_CODE_RAPTORQ) return null
|
|
@@ -847,10 +848,7 @@ function decodeSignallingMessage(bytes: Uint8Array): MmtSignallingMessage {
|
|
|
847
848
|
* Parse every signalling message of a full MMTP signalling packet (the
|
|
848
849
|
* packet_id 0 flow). Returns null when the packet or any message in it is
|
|
849
850
|
* malformed: one unparseable message leaves the receiver unable to say what
|
|
850
|
-
* the packet signalled.
|
|
851
|
-
*
|
|
852
|
-
* The legacy bare form carries exactly one AL-FEC message; any other message
|
|
853
|
-
* is only accepted inside a 9.3.4.2 payload.
|
|
851
|
+
* the packet signalled. Only the 9.3.4.2 payload form is accepted.
|
|
854
852
|
*/
|
|
855
853
|
export function parseSignallingPacket(mmtpPacket: Uint8Array): MmtSignallingPacket | null {
|
|
856
854
|
const payload = parseSignallingPayload(mmtpPacket)
|