@blockcast/fec-worker 0.1.0 → 0.3.0

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.
Files changed (40) hide show
  1. package/README.md +17 -7
  2. package/dist/block-order.d.ts +38 -0
  3. package/dist/block-order.d.ts.map +1 -0
  4. package/dist/block-order.js +78 -0
  5. package/dist/block-order.js.map +1 -0
  6. package/dist/fec-worker-client.d.ts +20 -7
  7. package/dist/fec-worker-client.d.ts.map +1 -1
  8. package/dist/fec-worker-client.js +106 -30
  9. package/dist/fec-worker-client.js.map +1 -1
  10. package/dist/fec-worker-types.d.ts +153 -25
  11. package/dist/fec-worker-types.d.ts.map +1 -1
  12. package/dist/fec-worker.js +382 -88
  13. package/dist/fec-worker.js.map +4 -4
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/shred-fec-worker.js +23 -2
  18. package/dist/shred-fec-worker.js.map +2 -2
  19. package/dist/shred-worker-types.d.ts +16 -1
  20. package/dist/shred-worker-types.d.ts.map +1 -1
  21. package/dist/shred-worker-types.js +16 -1
  22. package/dist/shred-worker-types.js.map +1 -1
  23. package/package.json +8 -3
  24. package/src/block-order.ts +93 -0
  25. package/src/fec-worker-client.ts +115 -32
  26. package/src/fec-worker-types.ts +152 -21
  27. package/src/fec-worker.ts +583 -129
  28. package/src/index.ts +3 -0
  29. package/src/shred-fec-worker.ts +34 -3
  30. package/src/shred-worker-types.ts +16 -1
  31. package/src/__tests__/fec-worker-alta.test.ts +0 -231
  32. package/src/__tests__/fec-worker-cleanup-integration.test.ts +0 -250
  33. package/src/__tests__/fec-worker-pending-queue.test.ts +0 -315
  34. package/src/__tests__/fec-worker-repair-size.test.ts +0 -1029
  35. package/src/__tests__/fec-worker-wasm-contract.test.ts +0 -84
  36. package/src/__tests__/shred-fec-worker.test.ts +0 -448
  37. package/src/fec-worker-client.test.ts +0 -530
  38. package/src/fec-worker-types.test.ts +0 -400
  39. package/src/shred-worker-client.test.ts +0 -182
  40. package/src/transfer.test.ts +0 -24
@@ -7,6 +7,21 @@
7
7
  *
8
8
  * Types here are importable from both main thread and Worker contexts.
9
9
  */
10
+ /**
11
+ * FEC block profile (BLO-35597, ISO/IEC 23008-1 Annex C): the catalog
12
+ * `fec.blockProfile` token. Both profiles carry identical wire tuples whose
13
+ * block math differs, so it is required and never inferred.
14
+ *
15
+ * - `k-padded-v1` (legacy): SBN = floor(SS_ID / K), ESI = SS_ID % K;
16
+ * SS_Start = SBN * K; repair ESI = K + RS_ID.
17
+ * - `iso-ssbg1-v1` (C.3.3 ssbg_mode1): SS_ID increments by one per source
18
+ * packet mod 2^32; a block is `[SS_Start, SS_Start + SSB_length)` keyed by
19
+ * SS_Start; `k` is only the maximum SSB_length; repair ESI =
20
+ * SSB_length + RS_ID.
21
+ *
22
+ * Mirrors @blockcast/mmt-base `FecBlockProfile`.
23
+ */
24
+ export type FecBlockProfile = "k-padded-v1" | "iso-ssbg1-v1";
10
25
  /** Per-track FEC configuration. Matches design spec section 3.2 FecTrackConfig. */
11
26
  export interface FecTrackConfig {
12
27
  /** Codec string, e.g. 'avc1.64001f', 'mp4a.40.2' */
@@ -26,13 +41,22 @@ export interface FecTrackConfig {
26
41
  sampleRate?: number;
27
42
  /** FEC algorithm identifier: 'raptor', 'reed-solomon', 'none' */
28
43
  algorithm: string;
29
- /** Source symbols per block (K) */
44
+ /** Block profile; the Worker refuses to configure without a known token. */
45
+ blockProfile: FecBlockProfile;
46
+ /** Source symbols per block (K). Under `iso-ssbg1-v1` the maximum SSB_length (kMax). */
30
47
  k: number;
31
48
  /** Repair symbols per block (P). NOT symbol size. */
32
49
  repairCount: number;
33
50
  /** Bytes per symbol */
34
51
  symbolSize: number;
35
- /** Interleave depth in frames (D) */
52
+ /** Retained decoder horizon as a BLOCK COUNT (SBN distance), not D.
53
+ * `isRetiredSbn` retires blocks more than this many blocks behind
54
+ * `liveSbn` (serial order on SS_ID, BLO-35597 iso:5) and
55
+ * `MmtFecDecoder::new` documents it as "the number of interleaved blocks".
56
+ * Under `iso-ssbg1-v1` the distance is `isoBlocksBehind(SS_ID, live SS_ID, k)`
57
+ * (block-order.ts), the lower bound every ISO receiver layer shares.
58
+ * Never assign `deriveFecInterleaveDepth()` here — that returns media units
59
+ * per block, which is a different quantity (BLO-35597). */
36
60
  interleaveDepth: number;
37
61
  /** Interleave depth in milliseconds (D * frameDurationMs) */
38
62
  interleaveMs: number;
@@ -49,16 +73,22 @@ export interface FecTrackConfig {
49
73
  }
50
74
  /** Per-block snapshot for live block visualization and stats. */
51
75
  export interface FecBlockSnapshot {
52
- /** Source block number */
76
+ /** Block key: the source block number under `k-padded-v1`, the block's
77
+ * SS_Start under `iso-ssbg1-v1`. */
53
78
  sbn: number;
54
79
  /** Current block state */
55
- state: "collecting" | "complete" | "recovered" | "failed" | "green-fill";
80
+ state: "collecting" | "complete" | "recovered" | "failed";
56
81
  /** Number of source symbols received */
57
82
  sourceReceived: number;
58
83
  /** Number of repair symbols received */
59
84
  repairReceived: number;
60
- /** Expected source symbols (K) */
85
+ /** Configured source-block geometry (K); under `iso-ssbg1-v1` the block's SSB_length. */
61
86
  k: number;
87
+ /** Authored source symbols (SSB_length) once a repair symbol declared it.
88
+ * Under `iso-ssbg1-v1` a block is only known from a repair symbol, so it is
89
+ * always set — except on a cleanup tombstone for a block the Worker never
90
+ * saw, whose length nothing declared. */
91
+ ssbLength?: number;
62
92
  /** Expected repair symbols (P) */
63
93
  repairCount: number;
64
94
  /** Timestamp of first symbol arrival (ms) */
@@ -88,8 +118,6 @@ export interface FecTrackStats {
88
118
  blocksRecovered: number;
89
119
  /** Blocks that failed (unrecoverable) */
90
120
  blocksFailed: number;
91
- /** Frames replaced with green-fill */
92
- greenFillFrames: number;
93
121
  /** Recovery success rate 0-100 */
94
122
  recoveryRate: number;
95
123
  /** Packets with valid publisher ALTA signature */
@@ -128,11 +156,12 @@ export interface FecTrackStats {
128
156
  relayBlocksVerified: number;
129
157
  /** Blocks with invalid relay signature */
130
158
  relayBlocksFailed: number;
131
- /** Current live source block number */
159
+ /** Live media position: the newest source block number under
160
+ * `k-padded-v1`, the newest accepted SS_ID / SS_Start under `iso-ssbg1-v1`. */
132
161
  liveSbn: number;
133
162
  /** Active block snapshots */
134
163
  blocks: FecBlockSnapshot[];
135
- /** Number of blocks in the interleave window */
164
+ /** Number of blocks in the FEC block span */
136
165
  interleaveWindowBlocks: number;
137
166
  /** Average recovery latency (ms) */
138
167
  avgRecoveryMs: number;
@@ -140,6 +169,51 @@ export interface FecTrackStats {
140
169
  maxRecoveryMs: number;
141
170
  /** Repair symbols rejected before WASM because their byte length did not match T. */
142
171
  repairSymbolSizeMismatch?: number;
172
+ /**
173
+ * Source symbols whose SBN had already fallen below the retained window.
174
+ *
175
+ * This and its two peers below are dropped before WASM and narrow the
176
+ * explanations for a block that settles at K-1 source symbols (BLO-35597
177
+ * defect 2): a late symbol past retention, a symbol for a block that had
178
+ * already settled (complete, recovered *or failed*), or a repeated
179
+ * (SBN, ESI).
180
+ *
181
+ * They narrow; they do not uniquely attribute. A symbol lost in transit
182
+ * never reaches the worker and increments nothing, so all three reading
183
+ * zero on a short block means only that no *receiver-side* drop was
184
+ * recorded — wire loss and a short authored block both remain open. Use
185
+ * `FecBlockSnapshot.ssbLength` to separate them: below `k` is a genuinely
186
+ * short authored block, equal to `k` with fewer accepted is loss-or-late.
187
+ * `ssbLength` is undefined until a repair symbol declares it, in which case
188
+ * both stay open.
189
+ *
190
+ * All three are cumulative across decoder epochs: `configure` clears block
191
+ * tracking but none of them, so they stay comparable against the
192
+ * `sourceSymbols` denominator. Only a reset zeroes them.
193
+ */
194
+ sourceDroppedRetired?: number;
195
+ /** Source symbols for a block that had already completed, recovered or failed. */
196
+ sourceDroppedTerminal?: number;
197
+ /**
198
+ * Source symbols repeating an (SBN, ESI) already accepted in the current
199
+ * epoch; `configure` clears the accepted-ESI sets.
200
+ *
201
+ * Unlike the other two, this one cannot fire once a block settles — the
202
+ * terminal check returns first, and marking a block terminal retires its
203
+ * accepted-ESI set anyway — so a non-zero value means the repeat reached
204
+ * the worker while the block was **still collecting**. It attributes the
205
+ * timing, not the origin: usually a duplicate packet on the wire,
206
+ * sometimes an SBN/ESI derivation collision.
207
+ */
208
+ sourceDroppedDuplicate?: number;
209
+ /**
210
+ * `iso-ssbg1-v1` only: accepted source symbols whose block never became
211
+ * known (no repair symbol named a range containing them) before their
212
+ * SS_ID fell behind the retained horizon. They were already fed to the
213
+ * decoder and routed directly; this counts the bookkeeping retired with
214
+ * them, i.e. evidence that a block's repair symbols never arrived.
215
+ */
216
+ sourceUnplacedRetired?: number;
143
217
  /** Native decoder counters, converted to numbers so browser diagnostics remain JSON-safe. */
144
218
  decoder?: {
145
219
  sourcePackets: number;
@@ -152,17 +226,32 @@ export interface FecTrackStats {
152
226
  };
153
227
  }
154
228
  /** Stable identities for Worker failures whose message text contains live values. */
155
- export type FecWorkerErrorCode = "recovered-symbol-size-unconfigured" | "recovered-block-too-short" | "repair-symbol-size-mismatch" | "reset-failed" | "unknown-command" | "command-failed" | "worker-runtime" | "worker-message";
229
+ export type FecWorkerErrorCode = "recovered-symbol-size-unconfigured" | "recovered-block-too-short" | "recovered-symbol-ssb-length-invalid" | "repair-symbol-size-mismatch" | "repair-ssb-length-conflict"
230
+ /** `iso-ssbg1-v1`: a repair's `[SS_Start, SS_Start + SSB_length)` overlaps a different known block. */
231
+ | "repair-block-overlap"
232
+ /** `iso-ssbg1-v1`: a recovered symbol's ssbg_mode1 length field exceeds T-2 or its padding is non-zero. */
233
+ | "recovered-ssbg1-symbol-invalid"
234
+ /** `iso-ssbg1-v1`: the decoder returned a recovered block for a source the Worker could not place in a known block. */
235
+ | "recovered-block-unplaced" | "reset-failed" | "unknown-command" | "command-failed" | "worker-runtime" | "worker-message";
156
236
  /** Per-frame metadata emitted with frame events from Worker. */
157
237
  export interface FrameMeta {
158
238
  /** ALTA verification result: true/false after check, null when ALTA not configured (AUTH-04) */
159
239
  altaVerified: boolean | null;
160
240
  /** Whether this frame was recovered via FEC (not received directly) */
161
241
  recovered: boolean;
162
- /** Source block number this frame belongs to */
242
+ /** Block key this frame belongs to: SBN (`k-padded-v1`) or SS_Start (`iso-ssbg1-v1`) */
163
243
  sbn: number;
164
- /** Encoding Symbol ID within the recovered source block (0..K-1). */
244
+ /** Encoding Symbol ID within the recovered source block (0..ssbLength-1).
245
+ * Under `iso-ssbg1-v1` a recovered frame is the full T-byte ssbg_mode1
246
+ * symbol (length field, packet, zero padding); the Worker validates but
247
+ * never trims it. */
165
248
  esi?: number;
249
+ /**
250
+ * Authored source-symbol count of the recovered block (the repair
251
+ * symbols' SSB_length, 1..K). Recovered frames are ESI 0..ssbLength-1;
252
+ * ESIs ssbLength..K-1 are encoder zero padding and are never emitted.
253
+ */
254
+ ssbLength?: number;
166
255
  }
167
256
  /** Discriminated union of all commands sent from main thread to Worker. */
168
257
  export type FecWorkerCommand = {
@@ -180,9 +269,13 @@ export type FecWorkerCommand = {
180
269
  } | {
181
270
  type: "feedSource";
182
271
  /** Flat 32-bit Source Symbol ID from the MMTP Source FEC Payload ID
183
- * (ISO 23008-1 §C.5.2). The WASM decoder derives SBN = floor(ssId/K)
184
- * and ESI = ssId % K internally — do NOT pre-compute. */
272
+ * (ISO 23008-1 §C.5.2). Under `k-padded-v1` the WASM decoder derives
273
+ * SBN = floor(ssId/K) and ESI = ssId % K internally — do NOT
274
+ * pre-compute. Under `iso-ssbg1-v1` SS_IDs are consecutive per source
275
+ * packet mod 2^32 and the block comes from a repair's range. */
185
276
  ssId: number;
277
+ /** `k-padded-v1`: the source symbol. `iso-ssbg1-v1`: the protected
278
+ * packet exactly, unpadded and without its SS_ID (at most T-2 bytes). */
186
279
  data: ArrayBuffer;
187
280
  ts: number;
188
281
  /** Optional ALTA authenticator bytes (detached mode — 08-07 MMTP
@@ -199,17 +292,28 @@ export type FecWorkerCommand = {
199
292
  altaPayloadEnd?: number;
200
293
  } | {
201
294
  type: "feedRepair";
202
- /** SS_Start: SS_ID of the first source symbol in the block
203
- * (= SBN * SSB_length), from the MMTP Repair FEC Payload ID
204
- * (ISO 23008-1 §C.5.3). */
295
+ /** SS_Start: SS_ID of the first source symbol in the block, from the
296
+ * MMTP Repair FEC Payload ID (ISO 23008-1 §C.5.3). `k-padded-v1`:
297
+ * = SBN * configured K. `iso-ssbg1-v1`: any uint32; the block key. */
205
298
  ssStart: number;
206
- /** SSB_length: K for this block (variable-K allowed per spec). */
299
+ /** Authored source-symbol count for this block; 1..configured K. */
207
300
  ssbLength: number;
208
- /** RS_ID: repair symbol index within the block; WASM maps to
209
- * repair ESI = SSB_length + RS_ID. */
301
+ /** RS_ID: repair symbol index within the block; WASM maps to repair
302
+ * ESI = configured K + RS_ID (`k-padded-v1`) or SSB_length + RS_ID
303
+ * (`iso-ssbg1-v1`). */
210
304
  rsId: number;
211
305
  data: ArrayBuffer;
212
306
  ts: number;
307
+ } | {
308
+ /**
309
+ * Every source and repair symbol the page fed in one task, in feed
310
+ * order, sharing one transfer list. The client sends symbols this
311
+ * way instead of one message per symbol (BLO-36599); the Worker
312
+ * handles each record exactly like the single-symbol command of the
313
+ * same `type`, and a record that fails does not stop the others.
314
+ */
315
+ type: "feedSymbols";
316
+ symbols: FecSymbolCommand[];
213
317
  } | {
214
318
  type: "relayBlockSig";
215
319
  sbn: number;
@@ -217,13 +321,29 @@ export type FecWorkerCommand = {
217
321
  hash: ArrayBuffer;
218
322
  } | {
219
323
  type: "cleanup";
220
- /** Every timed-out block covered by this coalesced queue-drain barrier. */
324
+ /** Every timed-out block covered by this coalesced queue-drain barrier,
325
+ * by block key: SBN (`k-padded-v1`) or SS_Start (`iso-ssbg1-v1`). */
221
326
  sbns: number[];
222
327
  } | {
223
328
  type: "reset";
329
+ }
330
+ /**
331
+ * Ask the Worker to post a blockUpdate on every block transition. Without
332
+ * it the Worker posts none: each one is a structured clone and a task on
333
+ * the page thread, and the player does not consume them (BLO-36599).
334
+ * Sent only to a Worker that announced it in `capabilities`.
335
+ */
336
+ | {
337
+ type: "subscribeBlockUpdates";
224
338
  } | {
225
339
  type: "dispose";
226
340
  };
341
+ /** One symbol record of a `feedSymbols` batch. */
342
+ export type FecSymbolCommand = Extract<FecWorkerCommand, {
343
+ type: "feedSource";
344
+ } | {
345
+ type: "feedRepair";
346
+ }>;
227
347
  /** Discriminated union of all events emitted from Worker to main thread. */
228
348
  export type FecWorkerEvent = {
229
349
  type: "frame";
@@ -235,18 +355,26 @@ export type FecWorkerEvent = {
235
355
  } | {
236
356
  type: "blockUpdate";
237
357
  block: FecBlockSnapshot;
238
- } | {
239
- type: "greenFill";
240
- sbn: number;
241
- data: ArrayBuffer;
242
358
  } | {
243
359
  type: "cleanupComplete";
244
360
  sbns: number[];
245
361
  } | {
246
362
  type: "resetComplete";
363
+ }
364
+ /**
365
+ * Optional commands this Worker accepts, posted once it is configured.
366
+ * The client uses `feedSymbols` only after the Worker names it, so a page
367
+ * that meets an older cached Worker bundle keeps sending one command per
368
+ * symbol instead of a batch that Worker would reject (BLO-36599).
369
+ */
370
+ | {
371
+ type: "capabilities";
372
+ commands: FecWorkerOptionalCommand[];
247
373
  } | {
248
374
  type: "error";
249
375
  message: string;
250
376
  code?: FecWorkerErrorCode;
251
377
  };
378
+ /** Commands a client may send only after the Worker announced them. */
379
+ export type FecWorkerOptionalCommand = "feedSymbols" | "subscribeBlockUpdates";
252
380
  //# sourceMappingURL=fec-worker-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fec-worker-types.d.ts","sourceRoot":"","sources":["../src/fec-worker-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fec-worker-types.d.ts","sourceRoot":"","sources":["../src/fec-worker-types.ts"],"names":[],"mappings":"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"}