@blockcast/mmt-base 0.3.0 → 0.4.0-main.2654dbc2ed6d

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.
@@ -20,7 +20,7 @@
20
20
  * receiver that refuses a reserved value cannot accept a conformant revision
21
21
  * of the syntax that assigns it.
22
22
  */
23
- import { ALFEC_MESSAGE_ID, FEC_CODE_RAPTORQ, PACKET_TYPE_SIGNALING, parseMMTPHeader, } from './mmtp.js';
23
+ import { ALFEC_MESSAGE_ID, FEC_CODE_RAPTORQ, FEC_CODE_REED_SOLOMON, MMTP_SIGNALING_PACKET_ID, PACKET_TYPE_SIGNALING, parseMMTPHeader, } from './mmtp.js';
24
24
  // ---------------------------------------------------------------------------
25
25
  // Wire reader
26
26
  // ---------------------------------------------------------------------------
@@ -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, in
324
- * either payload form (see SignallingPayloadForm). Returns null when the
325
- * packet carries no AL-FEC message, more than one, or a malformed one.
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);
@@ -333,77 +330,97 @@ export function parseAlFecMessage(mmtpPacket) {
333
330
  return null;
334
331
  return { ...alFec[0].message, payloadForm: packet.payloadForm };
335
332
  }
336
- const RAPTORQ_PRIVATE_FIELD_LENGTH = 13;
337
333
  const RAPTORQ_MAX_SOURCE_SYMBOLS = 56_403;
338
334
  const REPAIR_SYMBOL_ID_MAX = 0x00ff_ffff;
339
- function canonicalRaptorQOtiK(oti, repairSymbolSize) {
340
- if (oti.length !== 12 || oti[5] !== 0)
341
- return null;
342
- const transferLength = (oti[0] * 0x1_0000_0000) +
343
- (((oti[1] << 24) | (oti[2] << 16) | (oti[3] << 8) | oti[4]) >>> 0);
344
- const symbolSize = (oti[6] << 8) | oti[7];
345
- const sourceBlocks = oti[8];
346
- const subBlocks = (oti[9] << 8) | oti[10];
347
- const alignment = oti[11];
348
- if (!Number.isSafeInteger(transferLength) || transferLength <= 0 ||
349
- symbolSize !== repairSymbolSize || symbolSize === 0 || symbolSize % 8 !== 0 ||
350
- sourceBlocks !== 1 || subBlocks !== 1 || alignment !== 8 ||
351
- transferLength % symbolSize !== 0) {
352
- return null;
353
- }
354
- const k = transferLength / symbolSize;
355
- return Number.isInteger(k) && k >= 1 && k <= RAPTORQ_MAX_SOURCE_SYMBOLS ? k : null;
356
- }
335
+ /** The 12-octet MMTP header plus the 2-octet length of the T - 2 construction (moq-fec-01 Section 7.3). */
336
+ const MIN_REPAIR_SYMBOL_SIZE = 14;
337
+ const REED_SOLOMON_MAX_BLOCK = 255;
357
338
  /**
358
- * Validate one parsed FEC flow against the Blockcast one-stage RaptorQ
359
- * profile and return its decoder geometry, or null when the flow is outside
360
- * the profile. Nothing is inferred: K comes from the OTI and must equal
361
- * maximum_k_for_repair_flow.
339
+ * Validate one parsed FEC flow against draft-ramadan-moq-mmt-01 Sections 8.3
340
+ * and 12.2 and return its decoder geometry, or null when the entry is
341
+ * outside them. Fail closed on everything else:
342
+ *
343
+ * - coding byte other than 0x14 (one-stage, ssbg_mode1, ffsrpts_flag 0,
344
+ * fec_payload_id_mode 0). 0x15 is fec_payload_id_mode 1 under Amd 1:2025,
345
+ * which "iso-ssbg1-v1" does not describe (moq-fec-01 Section 7.3);
346
+ * - number_of_assets other than 1;
347
+ * - fec_code_id_for_repair_flow other than 3 or 1, the retired Blockcast
348
+ * code 2 included (ISO/IEC 23008-10 Table 1);
349
+ * - T < 14, K = 0, P = 0, K + P - 1 > 2^24 - 1;
350
+ * - RaptorQ: T not a multiple of 8, or K > 56403;
351
+ * - Reed-Solomon: K + P > 255;
352
+ * - repair_flow_id 0 (the signalling flow) or the flow's own packet_id.
362
353
  *
363
- * ssbg_mode 0 and 1 are both returned as signalled: which source-symbol
364
- * construction a decoder applies is the stream's FEC block profile, decided
365
- * by its consumer, not here. ffsrpts_flag=1 is refused because the FFSRP_TS
366
- * word changes the source/repair packet trailer layout that every Blockcast
367
- * receiver assumes.
354
+ * Checks that span entries (another entry's packet_id, a duplicate
355
+ * repair_flow_id or Asset) are `alFecMessageFlowConfigs`'.
368
356
  */
369
357
  export function alFecRaptorQFlowConfig(flow) {
370
358
  if (flow.fecCodingStructure !== FEC_CODING_STRUCTURE_ONE_STAGE || flow.repairFlows.length !== 1)
371
359
  return null;
372
- if (flow.ssbgMode !== SSBG_MODE_0 && flow.ssbgMode !== SSBG_MODE_1)
360
+ if (flow.ssbgMode !== SSBG_MODE_1 || flow.ffsrptsFlag !== 0 || flow.fecPayloadIdMode !== 0)
373
361
  return null;
374
- if (flow.ffsrptsFlag !== 0)
362
+ if (flow.packetIds.length !== 1)
375
363
  return null;
376
364
  const repair = flow.repairFlows[0];
377
- if (repair.fecCodeId !== FEC_CODE_RAPTORQ)
378
- return null;
379
- const privateField = repair.privateField;
380
- if (!privateField || privateField.privateFlag !== 1 ||
381
- privateField.data.length !== RAPTORQ_PRIVATE_FIELD_LENGTH) {
365
+ const { fecCodeId, maximumK: k, maximumP: p } = repair;
366
+ const t = flow.repairSymbolSize;
367
+ if (t < MIN_REPAIR_SYMBOL_SIZE || k < 1 || p < 1 || k + p - 1 > REPAIR_SYMBOL_ID_MAX)
382
368
  return null;
369
+ if (fecCodeId === FEC_CODE_RAPTORQ) {
370
+ if (t % 8 !== 0 || k > RAPTORQ_MAX_SOURCE_SYMBOLS)
371
+ return null;
383
372
  }
384
- const oti = privateField.data.slice(0, 12);
385
- const interleaveDepth = privateField.data[12];
386
- const otiK = canonicalRaptorQOtiK(oti, flow.repairSymbolSize);
387
- if (otiK === null || interleaveDepth === 0)
388
- return null;
389
- if (repair.maximumK !== otiK || repair.maximumP === 0 ||
390
- repair.maximumK + repair.maximumP - 1 > REPAIR_SYMBOL_ID_MAX) {
373
+ else if (fecCodeId === FEC_CODE_REED_SOLOMON) {
374
+ if (k + p > REED_SOLOMON_MAX_BLOCK)
375
+ return null;
376
+ }
377
+ else {
391
378
  return null;
392
379
  }
380
+ if (repair.repairFlowId === MMTP_SIGNALING_PACKET_ID || repair.repairFlowId === flow.packetIds[0])
381
+ return null;
393
382
  return {
394
383
  sourcePacketIds: [...flow.packetIds],
395
384
  repairFlowId: repair.repairFlowId,
385
+ fecCodeId,
396
386
  ssbgMode: flow.ssbgMode,
397
387
  fecPayloadIdMode: flow.fecPayloadIdMode,
398
- repairSymbolSize: flow.repairSymbolSize,
399
- maximumK: repair.maximumK,
400
- maximumP: repair.maximumP,
401
- interleaveDepth,
402
- oti,
388
+ repairSymbolSize: t,
389
+ maximumK: k,
390
+ maximumP: p,
403
391
  protectionWindowTime: repair.protectionWindowTime,
404
392
  protectionWindowSize: repair.protectionWindowSize,
405
393
  };
406
394
  }
395
+ /**
396
+ * `alFecRaptorQFlowConfig` for every entry of a message, index for index,
397
+ * plus the draft-ramadan-moq-mmt-01 Section 12.2 checks that span entries: an
398
+ * entry whose repair_flow_id is another entry's Asset packet_id, and every
399
+ * entry of two that name one repair_flow_id or list one Asset, is null.
400
+ */
401
+ export function alFecMessageFlowConfigs(message) {
402
+ const assetCount = new Map();
403
+ const repairCount = new Map();
404
+ const bump = (map, key) => map.set(key, (map.get(key) ?? 0) + 1);
405
+ for (const flow of message.flows) {
406
+ for (const id of flow.packetIds)
407
+ bump(assetCount, id);
408
+ for (const repair of flow.repairFlows)
409
+ bump(repairCount, repair.repairFlowId);
410
+ }
411
+ return message.flows.map(flow => {
412
+ const config = alFecRaptorQFlowConfig(flow);
413
+ if (!config)
414
+ return null;
415
+ const [asset] = config.sourcePacketIds;
416
+ if (assetCount.get(asset) !== 1 || repairCount.get(config.repairFlowId) !== 1)
417
+ return null;
418
+ // Its own packet_id is already refused, so any count here is another entry's.
419
+ if (assetCount.has(config.repairFlowId))
420
+ return null;
421
+ return config;
422
+ });
423
+ }
407
424
  /**
408
425
  * MMT_general_location_info() for an Asset location. "Only the value of
409
426
  * location_type between 0x00 and 0x06 shall be used for an Asset location"
@@ -620,10 +637,7 @@ function decodeSignallingMessage(bytes) {
620
637
  * Parse every signalling message of a full MMTP signalling packet (the
621
638
  * packet_id 0 flow). Returns null when the packet or any message in it is
622
639
  * 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.
640
+ * the packet signalled. Only the 9.3.4.2 payload form is accepted.
627
641
  */
628
642
  export function parseSignallingPacket(mmtpPacket) {
629
643
  const payload = parseSignallingPayload(mmtpPacket);
@@ -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",
3
+ "version": "0.4.0-main.2654dbc2ed6d",
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"
33
- },
31
+ "dependencies": {},
34
32
  "devDependencies": {
35
33
  "typescript": "^5.3.0",
36
34
  "vitest": "^1.0.0"
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Catalog FEC source rules shared by every catalog reader (BLO-40851).
3
+ *
4
+ * These are the dialect-level reads the container resolvers
5
+ * (`resolveRepairLayers`, `catalogFecUnavailable`), the transport endpoint
6
+ * selection (`selectEndpointPacketIds`) and a player's repair inventory all
7
+ * need to agree on. They live here, in the leaf package every one of those
8
+ * depends on, so there is one copy of each rule instead of copies pinned
9
+ * against each other by tests.
10
+ *
11
+ * - `locateCatalogFecSource`: which catalog entry declares a source's `fec`
12
+ * block. hang `video`/`audio` rendition blocks are authoritative over an MSF
13
+ * `tracks[]` entry of the same name.
14
+ * - `catalogFecAvailable`: draft-ramadan-moq-fec §5.1, whether a block's FEC
15
+ * is usable at all (implemented `blockProfile`, usable span).
16
+ * - `catalogFecDeclaresUnconfigurableInstance`: a declared FEC instance whose
17
+ * geometry a decoder cannot configure, which is a malformed catalog rather
18
+ * than "no FEC".
19
+ *
20
+ * Every function is total: it never throws, whatever the input.
21
+ */
22
+ import { isFecBlockProfile } from './fec-block-profile.js'
23
+
24
+ /** The catalog media roles that carry hang renditions. */
25
+ export type CatalogFecRole = 'video' | 'audio'
26
+
27
+ /** One media source's `fec` block, as `locateCatalogFecSource` found it. */
28
+ export type CatalogFecSource =
29
+ | {
30
+ readonly dialect: 'hang'
31
+ readonly role: CatalogFecRole
32
+ /** The rendition object. */
33
+ readonly entry: Record<string, unknown>
34
+ /** The rendition's `fec` value, unvalidated (may be undefined). */
35
+ readonly fec: unknown
36
+ /** JSON path of that `fec` block. */
37
+ readonly fecPath: string
38
+ }
39
+ | {
40
+ readonly dialect: 'msf'
41
+ /** Index of the entry in `tracks[]`. */
42
+ readonly index: number
43
+ /** The `tracks[]` entry (an empty object when the entry is not an object). */
44
+ readonly entry: Record<string, unknown>
45
+ /** The entry's `fec` value, unvalidated (may be undefined). */
46
+ readonly fec: unknown
47
+ /** JSON path of that `fec` block. */
48
+ readonly fecPath: string
49
+ }
50
+
51
+ const ALL_ROLES: readonly CatalogFecRole[] = Object.freeze(['video', 'audio'])
52
+
53
+ function recordOf(value: unknown): Record<string, unknown> | undefined {
54
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
55
+ ? (value as Record<string, unknown>)
56
+ : undefined
57
+ }
58
+
59
+ /**
60
+ * Locate the catalog entry that declares one media source's `fec` block, in
61
+ * either catalog dialect.
62
+ *
63
+ * A hang `video`/`audio` rendition named `source` wins, in `roles` order, over
64
+ * a `tracks[]` entry of the same name: when a catalog carries rendition blocks
65
+ * beside a `tracks[]` switching-set index (the unified ABR ladder catalog),
66
+ * the rendition blocks are authoritative, exactly as they are for hang's own
67
+ * catalog decode. The precedence is keyed on the rendition EXISTING as an
68
+ * object, not on it carrying `fec`: a rendition without `fec` locates with
69
+ * `fec: undefined` and never falls through to `tracks[]`.
70
+ *
71
+ * Otherwise the first `tracks[]` entry named `source` locates. Returns
72
+ * undefined when neither dialect names it, or when `catalog` is not an object.
73
+ *
74
+ * @param roles the hang roles to search, in order (both by default). A typed
75
+ * track reference passes its own role only.
76
+ */
77
+ export function locateCatalogFecSource(
78
+ catalog: unknown,
79
+ source: string,
80
+ roles: readonly CatalogFecRole[] = ALL_ROLES,
81
+ ): CatalogFecSource | undefined {
82
+ const root = recordOf(catalog)
83
+ if (root === undefined) return undefined
84
+ for (const role of roles) {
85
+ const renditions = recordOf(recordOf(root[role])?.['renditions'])
86
+ if (renditions === undefined || !Object.hasOwn(renditions, source)) continue
87
+ const entry = recordOf(renditions[source])
88
+ if (entry === undefined) continue
89
+ return Object.freeze({
90
+ dialect: 'hang' as const,
91
+ role,
92
+ entry,
93
+ fec: entry['fec'],
94
+ fecPath: `$.${role}.renditions[${JSON.stringify(source)}].fec`,
95
+ })
96
+ }
97
+ const tracks = root['tracks']
98
+ if (!Array.isArray(tracks)) return undefined
99
+ const index = tracks.findIndex((track) => recordOf(track)?.['name'] === source)
100
+ if (index < 0) return undefined
101
+ const entry = recordOf(tracks[index]) ?? {}
102
+ return Object.freeze({
103
+ dialect: 'msf' as const,
104
+ index,
105
+ entry,
106
+ fec: entry['fec'],
107
+ fecPath: `$.tracks[${index}].fec`,
108
+ })
109
+ }
110
+
111
+ /**
112
+ * Whether an `iso-ssbg1-v1` block's optional `interleaveDepthMs` span is
113
+ * usable: absent, or a non-negative safe integer. Zero or absence supplies no
114
+ * elapsed deadline and still permits in-band FEC. True for every block that
115
+ * names another profile (the span is not read) and for a non-object.
116
+ */
117
+ export function isoBlockSpanUsable(fec: unknown): boolean {
118
+ const block = recordOf(fec)
119
+ if (block === undefined || block['blockProfile'] !== 'iso-ssbg1-v1') return true
120
+ const ms = block['interleaveDepthMs']
121
+ return ms === undefined || (typeof ms === 'number' && Number.isSafeInteger(ms) && ms >= 0)
122
+ }
123
+
124
+ /**
125
+ * Whether one catalog `fec` block leaves its FEC available
126
+ * (draft-ramadan-moq-fec §5.1): the decision the container's
127
+ * `catalogFecUnavailable` explains with a typed reason.
128
+ *
129
+ * False when the block declares an FEC instance (any `algorithm` but `"none"`)
130
+ * and names no implemented `blockProfile` (the retired `k-padded-v1`
131
+ * included), or carries an `iso-ssbg1-v1` span it cannot use; and when a block
132
+ * declaring no FEC instance carries a profile token that is not implemented.
133
+ * True for a non-object and for every other block. It reads only the profile
134
+ * and the span: malformed geometry (`sourceSymbols`, `symbolSize`) is
135
+ * `catalogFecDeclaresUnconfigurableInstance`'s.
136
+ *
137
+ * A receiver applies no FEC to a source whose block is unavailable and joins
138
+ * none of its repair tracks, without failing the session.
139
+ */
140
+ export function catalogFecAvailable(fec: unknown): boolean {
141
+ const block = recordOf(fec)
142
+ if (block === undefined) return true
143
+ const declaresFecInstance = block['algorithm'] !== 'none'
144
+ const profile = block['blockProfile']
145
+ const profileOk = isFecBlockProfile(profile) || (profile === undefined && !declaresFecInstance)
146
+ return profileOk && (!declaresFecInstance || isoBlockSpanUsable(block))
147
+ }
148
+
149
+ function isPositiveSafeInteger(value: unknown): boolean {
150
+ return typeof value === 'number' && Number.isSafeInteger(value) && value > 0
151
+ }
152
+
153
+ /** Smallest `symbolSize` under `iso-ssbg1-v1` (draft-ramadan-moq-fec-01 5.1, 6.3.4 rule 13). */
154
+ export const ISO_SSBG1_MIN_SYMBOL_SIZE = 14
155
+
156
+ /**
157
+ * Whether a source's `fec` block declares an FEC instance (any `algorithm`
158
+ * but `"none"`) whose `sourceSymbols` or `symbolSize` is not a positive
159
+ * integer, or whose `iso-ssbg1-v1` `symbolSize` is below
160
+ * `ISO_SSBG1_MIN_SYMBOL_SIZE` (rule 13: such a symbol carries no protected
161
+ * MMTP packet). Geometry a decoder cannot configure is a malformed catalog, not
162
+ * "no FEC": the container's per-track resolver throws `track_fec` for exactly
163
+ * this block, whatever its profile or span.
164
+ */
165
+ export function catalogFecDeclaresUnconfigurableInstance(fec: unknown): boolean {
166
+ const block = recordOf(fec)
167
+ if (block === undefined || block['algorithm'] === 'none') return false
168
+ if (!(isPositiveSafeInteger(block['sourceSymbols']) && isPositiveSafeInteger(block['symbolSize']))) return true
169
+ return block['blockProfile'] === 'iso-ssbg1-v1' && (block['symbolSize'] as number) < ISO_SSBG1_MIN_SYMBOL_SIZE
170
+ }
@@ -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 exactly one
5
- * block profile in `fec.blockProfile`. A receiver applies all of a profile's
6
- * rules or none of them, so the token is the one explicit per-stream
7
- * discriminator: it is never defaulted and never inferred from the wire.
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 two block profiles a catalog `fec.blockProfile` may name. */
26
- export type FecBlockProfile = 'k-padded-v1' | 'iso-ssbg1-v1'
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, legacy first. */
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 known block-profile token. */
38
+ /** True for a block-profile token this library implements. */
35
39
  export function isFecBlockProfile(value: unknown): value is FecBlockProfile {
36
- return value === 'k-padded-v1' || value === 'iso-ssbg1-v1'
40
+ return value === 'iso-ssbg1-v1'
37
41
  }
38
42
 
39
43
  /**
40
- * Read a required `fec.blockProfile`. Throws on an absent or unknown token:
41
- * there is no default and nothing is inferred, because the two profiles carry
42
- * identical wire tuples whose repair math differs.
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/index.ts CHANGED
@@ -4,3 +4,5 @@ export * from './ntp-short.js'
4
4
  export * from './signalling.js'
5
5
  export * from './serial-number.js'
6
6
  export * from './fec-block-profile.js'
7
+ export * from './catalog-fec-source.js'
8
+ export * from './multicast-catalog.js'