@blockcast/mmt-container 2.2.0-main.10bec7edb00b → 2.2.0-main.16290a06015f
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 +29 -17
- package/dist/browser-runtime.js +657 -168
- package/dist/browser-runtime.js.map +3 -3
- package/dist/catalog-fec-params.d.ts +1 -1
- package/dist/catalog-fec-params.js.map +1 -1
- package/dist/cmcd-producer.d.ts +60 -47
- package/dist/cmcd-producer.d.ts.map +1 -1
- package/dist/cmcd-producer.js +138 -109
- package/dist/cmcd-producer.js.map +2 -2
- package/dist/delivery-catalog.js +17 -12
- package/dist/delivery-catalog.js.map +2 -2
- package/dist/delta-fallback-config.js.map +1 -1
- package/dist/fec-manager.d.ts +33 -1
- package/dist/fec-manager.d.ts.map +1 -1
- package/dist/fec-manager.js +213 -6
- package/dist/fec-manager.js.map +2 -2
- package/dist/fec-worker-setup.d.ts +1 -1
- package/dist/fec-worker-setup.js +1 -1
- package/dist/fec-worker-setup.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +2 -2
- package/dist/iso-block-locator.d.ts +9 -0
- package/dist/iso-block-locator.d.ts.map +1 -1
- package/dist/iso-block-locator.js +17 -0
- package/dist/iso-block-locator.js.map +2 -2
- package/dist/iso-bmff-timing.d.ts +10 -1
- package/dist/iso-bmff-timing.d.ts.map +1 -1
- package/dist/iso-bmff-timing.js +36 -2
- package/dist/iso-bmff-timing.js.map +2 -2
- package/dist/media-router.js.map +1 -1
- package/dist/mmtp-container-parser.d.ts +37 -2
- package/dist/mmtp-container-parser.d.ts.map +1 -1
- package/dist/mmtp-container-parser.js +86 -9
- package/dist/mmtp-container-parser.js.map +2 -2
- package/dist/mmtp-container-parser.no-modules.js +89 -11
- package/dist/mmtp-container-parser.no-modules.js.map +2 -2
- package/dist/mmtp-decode-pipeline.js +85 -9
- package/dist/mmtp-decode-pipeline.js.map +2 -2
- package/dist/mmtp-router.d.ts +16 -1
- package/dist/mmtp-router.d.ts.map +1 -1
- package/dist/mmtp-router.js +288 -35
- package/dist/mmtp-router.js.map +2 -2
- package/dist/multicast-manager.js +501 -41
- package/dist/multicast-manager.js.map +2 -2
- package/dist/multicast-transport.js +17 -12
- package/dist/multicast-transport.js.map +2 -2
- package/dist/no-modules.js +85 -9
- package/dist/no-modules.js.map +2 -2
- package/dist/track-session.d.ts +1 -1
- package/dist/track-session.js.map +1 -1
- package/dist/wasm-mmtp-container-parser.js +85 -9
- package/dist/wasm-mmtp-container-parser.js.map +2 -2
- package/package.json +8 -5
- package/src/catalog-fec-params.ts +1 -1
- package/src/cmcd-producer.ts +189 -179
- package/src/fec-manager.ts +256 -6
- package/src/fec-worker-setup.ts +2 -2
- package/src/index.ts +6 -2
- package/src/iso-block-locator.ts +19 -0
- package/src/iso-bmff-timing.ts +40 -1
- package/src/mmtp-container-parser.ts +96 -8
- package/src/mmtp-router.ts +320 -13
- package/src/track-session.ts +1 -1
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ The package exposes a wide subpath surface so consumers can tree-shake aggressiv
|
|
|
74
74
|
| `./multicast-unwrap` | Container-aware MMTP dispatch (LOC vs raw MMTP) |
|
|
75
75
|
| `./signaling` | Packet-type classifier (`isSignalingPacket`, `isSourcePacket`, `classifyPacket`) |
|
|
76
76
|
| `./mmtp-container-parser` | `MmtpContainerParser` (the unified, transport-agnostic parser) |
|
|
77
|
-
| `./cmcd-producer` | `CmcdProducer` —
|
|
77
|
+
| `./cmcd-producer` | `CmcdProducer` — CMCD v2 Event-mode reports (CTA-5004-B) with `com.blockcast-*` custom keys |
|
|
78
78
|
| `./cmaf-block-assembler` | `CmafBlockAssembler` — assembles one CMAF segment per FEC source block |
|
|
79
79
|
| `./cmaf-group-batcher` | `CmafGroupBatcher` — MoQ group → CMAF segment batcher |
|
|
80
80
|
| `./carp-catalog` | CARP / CMSF catalog types, track-role parser, switching-set validator, track-timing |
|
|
@@ -425,36 +425,47 @@ Per-track timestamp rebase (`#videoBaseTs` / `#audioBaseTs` at `mmtp-to-cmaf.ts:
|
|
|
425
425
|
|
|
426
426
|
### CMCD producer (`./cmcd-producer`)
|
|
427
427
|
|
|
428
|
-
|
|
428
|
+
CMCD v2 Event-mode reports (**CTA-5004-B** §2.2) for a player. Maps `FecTrackStats` snapshots, repair lifecycle events and `TransportSnapshot` state to newline-separated `application/cmcd` records (§3.3). Each record is an RFC 8941 dictionary with keys in alphabetical order and carries `v=2`, `ts`, `e`, `sn` and `sid`. Does NOT call `fetch()`: the player POSTs the body handed to `onCmcdPost` with `Content-Type: application/cmcd`.
|
|
429
429
|
|
|
430
430
|
```ts
|
|
431
431
|
class CmcdProducer {
|
|
432
|
-
constructor(opts:
|
|
432
|
+
constructor(opts: { onCmcdPost?: (body: string) => void; intervalMs?: number; sessionId?: string; now?: () => number })
|
|
433
433
|
updateTransport(snapshot: TransportSnapshot): void
|
|
434
434
|
updatePlayMode(mode: "full" | "base-only" | "single-track"): void
|
|
435
435
|
updateDeltaFailRate(rate: number): void
|
|
436
|
+
updateFecFailClosed(reason: FecFailClosedReason): void
|
|
437
|
+
updateManifestVerification(stats: ManifestVerificationStats): void
|
|
436
438
|
incrementSwitchMiscount(): void
|
|
439
|
+
onRepairLifecycle(event: RepairLifecycleEvent): void
|
|
437
440
|
emitSwitchDrift(driftUs: number): void
|
|
438
441
|
onSnapshot(data: SnapshotData): void
|
|
442
|
+
onTransportSnapshot(data: TransportOnlySnapshotData): void
|
|
439
443
|
onTransition(event: TransportTransitionEvent): void
|
|
440
444
|
}
|
|
441
445
|
```
|
|
442
446
|
|
|
443
|
-
|
|
447
|
+
Reports:
|
|
444
448
|
|
|
445
|
-
|
|
|
449
|
+
| `e` | When | Carries |
|
|
450
|
+
|-----|------|---------|
|
|
451
|
+
| `t` | heartbeat, every `intervalMs` (default 30 s), driven by snapshots | Table 1 keys only |
|
|
452
|
+
| `ce`, `cen="com.blockcast-fec"` | with each `t` | the `com.blockcast-*` counters below |
|
|
453
|
+
| `e` | FEC fails closed (fec-01 6.3.9), once per reason | `ec` = reason code |
|
|
454
|
+
| `ce`, `cen="com.blockcast-ct"` | transport transition | `-ct` (`mc-start` / `mc-to-uc` / `amt-start`), transport keys |
|
|
455
|
+
| `ce`, `cen="com.blockcast-switch-drift"` | `emitSwitchDrift()` | `-sdu` |
|
|
456
|
+
|
|
457
|
+
Custom keys ride only `e=ce` (§2.2 admits only Table 1 keys on Event reports; the Table 1 `cen` row admits a custom key-value pair). Values are STRING or TOKEN of at most 64 characters (§4.1); numbers go out as strings, and a longer value is omitted. A value that is unknown is omitted, never sent as zero (§3). Counters are absolute since session start.
|
|
458
|
+
|
|
459
|
+
| Key (`com.blockcast-`) | Source | Value |
|
|
446
460
|
|-----|--------|-------|
|
|
447
|
-
| `
|
|
448
|
-
| `
|
|
449
|
-
| `
|
|
450
|
-
| `
|
|
451
|
-
| `
|
|
452
|
-
| `
|
|
453
|
-
| `
|
|
454
|
-
| `
|
|
455
|
-
| `x-bc-ct` | transport transition | `mc-start` / `mc-to-uc` / `amt-start` |
|
|
456
|
-
|
|
457
|
-
All string values pass through `sanitize()` (T-06-01) — commas, `\r`, `\n` are stripped to prevent header injection.
|
|
461
|
+
| `fa`, `fk`, `fp` | FEC config | algorithm; K; P as joined |
|
|
462
|
+
| `pr`, `pl`, `pu` | `FecTrackStats` | source packets received; missing before FEC; still missing after FEC |
|
|
463
|
+
| `fbf` | `FecTrackStats.blocksFailed` | failed blocks |
|
|
464
|
+
| `fbr`, `fbq`, `fbfk` | repair lifecycle (video blocks) | recovered in band; recovered by repair FETCH; failed keyframe-class. Absent until `onRepairLifecycle` is fed |
|
|
465
|
+
| `tr`, `sg`, `ar` | `TransportSnapshot` | `ssm` / `amt` / `moq`; `"<group>@<source>"`; AMT relay |
|
|
466
|
+
| `pm`, `dfr` | play mode | `full` / `base-only` / `single-track`; delta fail rate, 3 decimals |
|
|
467
|
+
| `ffc`, `ffl` | FEC fail-closed | reason code; held layer |
|
|
468
|
+
| `sm`, `mv`, `mf` | switching set, source auth | miscount; manifests verified; verification failures |
|
|
458
469
|
|
|
459
470
|
### Multicast transport (`./multicast-transport`)
|
|
460
471
|
|
|
@@ -527,7 +538,8 @@ Roles are required by:
|
|
|
527
538
|
- **draft-ramadan-moq-mmt-01** — MMT-over-MoQ wire format (§4.4.2 group-duration signaling, §4 MoQ object mapping, §5 MFU mode)
|
|
528
539
|
- **draft-ramadan-moq-fec** — AL-FEC over MoQ (§5.3 FEC Source Info object extension 0x11: SS_ID(32), fixed 4 bytes)
|
|
529
540
|
- **RFC 6330** — RaptorQ Forward Error Correction (strict OTI codec in `@blockcast/mmt-fec`)
|
|
530
|
-
- **
|
|
541
|
+
- **CTA-5004-B** — CMCD v2 (used by `CmcdProducer`, Event mode)
|
|
542
|
+
- **RFC 8941** — Structured Field Values (CMCD record encoding)
|
|
531
543
|
- **ATSC A/331:2026-02 (informative for draft-fec-01 / draft-mmt-01; 7.2 SLS/MP table, 8.1.2.1 MMTP session, 8.1.2.5 AL-FEC) and A/331:2026-04 (normative for draft-multicast-01)** — Signaling, Delivery, Synchronization, Error Protection
|
|
532
544
|
|
|
533
545
|
## Related packages
|