@blockcast/mmt-container 0.1.0-main.cf0df54ddcf4 → 0.1.0-main.d0bb31684c09
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 +49 -3
- package/dist/browser-runtime.js +3087 -439
- package/dist/browser-runtime.js.map +4 -4
- package/dist/carp-catalog.d.ts +66 -4
- package/dist/carp-catalog.d.ts.map +1 -1
- package/dist/carp-catalog.js +49 -24
- package/dist/carp-catalog.js.map +3 -3
- package/dist/catalog-fec-params.d.ts +9 -8
- package/dist/catalog-fec-params.d.ts.map +1 -1
- package/dist/catalog-fec-params.js +54 -18
- package/dist/catalog-fec-params.js.map +4 -4
- package/dist/catalog-network-source.d.ts +25 -2
- package/dist/catalog-network-source.d.ts.map +1 -1
- package/dist/catalog-network-source.js +21 -2
- package/dist/catalog-network-source.js.map +4 -4
- package/dist/cmaf-block-assembler.d.ts +35 -0
- package/dist/cmaf-block-assembler.d.ts.map +1 -1
- package/dist/cmaf-block-assembler.js +342 -44
- package/dist/cmaf-block-assembler.js.map +3 -3
- package/dist/cmaf-group-batcher.js.map +1 -1
- package/dist/codec-utils.d.ts +144 -8
- package/dist/codec-utils.d.ts.map +1 -1
- package/dist/codec-utils.js +316 -38
- package/dist/codec-utils.js.map +2 -2
- package/dist/conceal-timeline.d.ts +26 -3
- package/dist/conceal-timeline.d.ts.map +1 -1
- package/dist/conceal-timeline.js +19 -4
- package/dist/conceal-timeline.js.map +2 -2
- package/dist/delivery-gap.d.ts +75 -0
- package/dist/delivery-gap.d.ts.map +1 -0
- package/dist/delivery-gap.js +88 -0
- package/dist/delivery-gap.js.map +7 -0
- package/dist/fec-manager.d.ts +102 -2
- package/dist/fec-manager.d.ts.map +1 -1
- package/dist/fec-manager.js +845 -66
- package/dist/fec-manager.js.map +4 -4
- package/dist/fec-state.d.ts +99 -0
- package/dist/fec-state.d.ts.map +1 -0
- package/dist/fec-state.js +54 -0
- package/dist/fec-state.js.map +7 -0
- package/dist/fec-worker-setup.d.ts.map +1 -1
- package/dist/fec-worker-setup.js +15 -5
- package/dist/fec-worker-setup.js.map +2 -2
- package/dist/index.d.ts +13 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -2
- package/dist/index.js.map +2 -2
- package/dist/media-router.d.ts +12 -4
- package/dist/media-router.d.ts.map +1 -1
- package/dist/media-router.js +22 -4
- package/dist/media-router.js.map +2 -2
- package/dist/mfu-reassembler.js +5 -0
- package/dist/mfu-reassembler.js.map +3 -3
- package/dist/mmtp-container-parser.d.ts +12 -0
- package/dist/mmtp-container-parser.d.ts.map +1 -1
- package/dist/mmtp-container-parser.js +140 -6
- package/dist/mmtp-container-parser.js.map +3 -3
- package/dist/mmtp-container-parser.no-modules.js +248 -47
- package/dist/mmtp-container-parser.no-modules.js.map +3 -3
- package/dist/mmtp-decode-pipeline.js +140 -6
- package/dist/mmtp-decode-pipeline.js.map +3 -3
- package/dist/mmtp-router.d.ts +145 -4
- package/dist/mmtp-router.d.ts.map +1 -1
- package/dist/mmtp-router.js +908 -166
- package/dist/mmtp-router.js.map +4 -4
- package/dist/mmtp-to-cmaf.d.ts +18 -0
- package/dist/mmtp-to-cmaf.d.ts.map +1 -1
- package/dist/mmtp-to-cmaf.js +25 -15
- package/dist/mmtp-to-cmaf.js.map +2 -2
- package/dist/multicast-input.d.ts +64 -2
- package/dist/multicast-input.d.ts.map +1 -1
- package/dist/multicast-input.js +123 -14
- package/dist/multicast-input.js.map +3 -3
- package/dist/multicast-manager.d.ts +153 -10
- package/dist/multicast-manager.d.ts.map +1 -1
- package/dist/multicast-manager.js +4170 -1984
- package/dist/multicast-manager.js.map +4 -4
- package/dist/multicast-transport.d.ts +122 -1
- package/dist/multicast-transport.d.ts.map +1 -1
- package/dist/multicast-transport.js +413 -37
- package/dist/multicast-transport.js.map +4 -4
- package/dist/multicast-unwrap.js +5 -0
- package/dist/multicast-unwrap.js.map +3 -3
- package/dist/no-modules.d.ts +1 -0
- package/dist/no-modules.d.ts.map +1 -1
- package/dist/no-modules.js +242 -44
- package/dist/no-modules.js.map +3 -3
- package/dist/repair-fetch.d.ts +51 -2
- package/dist/repair-fetch.d.ts.map +1 -1
- package/dist/repair-fetch.js +76 -3
- package/dist/repair-fetch.js.map +2 -2
- package/dist/signaling.js +429 -95
- package/dist/signaling.js.map +3 -3
- package/dist/timestamp-codec.js +5 -0
- package/dist/timestamp-codec.js.map +3 -3
- package/dist/track-pipeline-setup.d.ts +11 -0
- package/dist/track-pipeline-setup.d.ts.map +1 -1
- package/dist/track-pipeline-setup.js +8 -3
- package/dist/track-pipeline-setup.js.map +2 -2
- package/dist/track-session.d.ts +16 -0
- package/dist/track-session.d.ts.map +1 -1
- package/dist/track-session.js +16 -0
- package/dist/track-session.js.map +2 -2
- package/dist/wasm-mfu-reassembler.js +5 -0
- package/dist/wasm-mfu-reassembler.js.map +3 -3
- package/dist/wasm-mmtp-container-parser.js +140 -6
- package/dist/wasm-mmtp-container-parser.js.map +3 -3
- package/node_modules/@blockcast/fec-worker/README.md +4 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +22 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.js +38 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +43 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +1 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +50 -12
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +3 -3
- package/node_modules/@blockcast/fec-worker/src/block-order.ts +42 -0
- package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +43 -1
- package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +69 -15
- package/node_modules/@blockcast/mmt-base/README.md +15 -2
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts +4 -0
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -1
- package/node_modules/@blockcast/mmt-base/dist/index.js +4 -0
- package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -1
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -36
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -1
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js +2 -140
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -1
- package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
- package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
- package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/package.json +1 -1
- package/node_modules/@blockcast/mmt-base/src/index.ts +4 -0
- package/node_modules/@blockcast/mmt-base/src/mmtp.ts +2 -130
- package/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
- package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
- package/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
- package/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +1 -1
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +6 -1
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +1 -1
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +1 -1
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +1 -1
- package/node_modules/@blockcast/mmt-fec/dist/index.js +1 -1
- package/node_modules/@blockcast/mmt-fec/dist/index.js.map +1 -1
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +89 -3
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +1 -1
- package/node_modules/@blockcast/mmt-fec/dist/oti.js +131 -3
- package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +1 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +15 -2
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +4 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +4 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -36
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +2 -140
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +1 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +4 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +2 -130
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
- package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +7 -1
- package/node_modules/@blockcast/mmt-fec/src/index.ts +3 -0
- package/node_modules/@blockcast/mmt-fec/src/oti.ts +152 -6
- package/package.json +10 -6
- package/schemas/catalog.schema.json +2 -32
- package/src/carp-catalog.ts +104 -32
- package/src/catalog-fec-params.ts +39 -18
- package/src/catalog-network-source.ts +29 -4
- package/src/cmaf-block-assembler.ts +237 -25
- package/src/codec-utils.ts +426 -53
- package/src/conceal-timeline.ts +44 -6
- package/src/delivery-gap.ts +147 -0
- package/src/fec-manager.ts +907 -76
- package/src/fec-state.ts +173 -0
- package/src/fec-worker-setup.ts +63 -5
- package/src/index.ts +53 -0
- package/src/media-router.ts +36 -8
- package/src/mmtp-container-parser.ts +51 -3
- package/src/mmtp-router.ts +790 -168
- package/src/mmtp-to-cmaf.ts +70 -17
- package/src/multicast-input.ts +352 -18
- package/src/multicast-manager.ts +517 -8
- package/src/multicast-transport.ts +429 -18
- package/src/no-modules.ts +1 -0
- package/src/repair-fetch.ts +170 -8
- package/src/track-pipeline-setup.ts +18 -2
- package/src/track-session.ts +16 -0
- package/test-vectors/catalog/README.md +28 -2
- package/test-vectors/catalog/negative/multicast-network-source-empty.json +43 -0
- package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +42 -0
- package/test-vectors/catalog-validation.json +469 -25
- package/test-vectors/hevc-x265-repeat-headers-v1.json +40 -0
package/README.md
CHANGED
|
@@ -117,7 +117,7 @@ function parseMPUHeader(buf: Uint8Array, offset: number): MPUHeader
|
|
|
117
117
|
function extractMFUPayload(packet: Uint8Array): MFUExtraction | null
|
|
118
118
|
function extractFecPayloadId(packet: Uint8Array): { ssId: number } | null
|
|
119
119
|
function extractRepairFecPayloadId(packet: Uint8Array): RepairFecId | null
|
|
120
|
-
function parseAlFecMessage(buf: Uint8Array):
|
|
120
|
+
function parseAlFecMessage(buf: Uint8Array): AlFecMessage | null // every FEC flow (Table C.3, Amd 1:2025)
|
|
121
121
|
function parseMoqRepairFrame(buf: Uint8Array): MoqRepairFrame
|
|
122
122
|
```
|
|
123
123
|
|
|
@@ -192,14 +192,21 @@ interface FecCatalogConfig {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
interface MulticastEndpoint {
|
|
195
|
-
protocol: "ssm" | "asm" | "amt"
|
|
195
|
+
protocol: "ssm" | "asm" | "amt" | "atsc3"
|
|
196
196
|
sourceAddress?: string // REQUIRED for SSM
|
|
197
197
|
groupAddress: string
|
|
198
198
|
port: number
|
|
199
199
|
tracks: string[]
|
|
200
|
-
relayAddress?: string
|
|
200
|
+
// relayAddress?: string — deprecated, read-only (see Breaking, below)
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
+
// Relay/tuning discovery is catalog-level, not per-endpoint:
|
|
204
|
+
// multicast.networkSource: [{ type: "amt", discovery: "driad" | "manual",
|
|
205
|
+
// relay?: string, port?: number }]
|
|
206
|
+
// `relay` is REQUIRED for discovery: "manual"; "driad" resolves it at runtime.
|
|
207
|
+
// An endpoint-level `relayAddress` is retired — the schema and moq-rs both
|
|
208
|
+
// reject it.
|
|
209
|
+
|
|
203
210
|
interface TrackTimingConfig {
|
|
204
211
|
groupDurationMs: number // REQUIRED, positive integer
|
|
205
212
|
groupDurationTicks?: number // override when ms × timescale isn't integer
|
|
@@ -211,6 +218,45 @@ function resolveGroupDurationTicks(timing: TrackTimingConfig, timescale: number)
|
|
|
211
218
|
function validateSwitchingSetTiming(...): { ok: true } | { ok: false; ... }
|
|
212
219
|
```
|
|
213
220
|
|
|
221
|
+
#### Breaking: multicast emitter output (BLO-37834)
|
|
222
|
+
|
|
223
|
+
`multicastFromConfig` / `multicastFromEnv` no longer emit
|
|
224
|
+
`endpoints[].relayAddress` or `amtFallback`. Both are lifted into catalog-level
|
|
225
|
+
`multicast.networkSource` (`{type: "amt", discovery, relay?}`), and a native
|
|
226
|
+
multicast catalog omits `networkSource` entirely (BLO-37926). A reader that
|
|
227
|
+
still looks for `relayAddress` or `amtFallback` reads `undefined`: read
|
|
228
|
+
`networkSource` instead (`catalogAmtNetworkSource` in `./catalog-network-source`
|
|
229
|
+
resolves a dialable AMT relay from it, skipping `discovery: "driad"` entries
|
|
230
|
+
whose `relay` is a DNS name for a runtime lookup rather than an address), and
|
|
231
|
+
keep accepting `relayAddress` from catalogs published before this change until
|
|
232
|
+
every emitter is on it.
|
|
233
|
+
|
|
234
|
+
Inputs are unchanged: `relayAddress` and `amtFallback` are still accepted and
|
|
235
|
+
lifted. An input relay that would not survive into the emitted `networkSource`
|
|
236
|
+
(two endpoints with different relays, one overridden by
|
|
237
|
+
`amtFallback.relayDns` or an explicit `networkSource`, or one matched only by a
|
|
238
|
+
`discovery: "driad"` entry, whose relay is a runtime discovery hint) now throws
|
|
239
|
+
`conflicting_amt_relay` instead of being dropped. For that last case — wanting
|
|
240
|
+
DRIAD *and* a named relay — emit both entries, `[{type: "amt", discovery:
|
|
241
|
+
"manual", relay}, {type: "amt", discovery: "driad"}]`: readers join the first
|
|
242
|
+
non-DRIAD AMT entry, so the manual one carries the relay while the DRIAD one
|
|
243
|
+
keeps the discovery request. An `atsc3` endpoint now
|
|
244
|
+
requires a `{type: "atsc3", …}` entry and throws `atsc3_requires_tuning`
|
|
245
|
+
without one: that entry carries the frequency, PLP, service id and SLS URI,
|
|
246
|
+
which is the only tuning information an ATSC3 receiver has, and the schema
|
|
247
|
+
cannot enforce it because `networkSource` is optional there (a native join has
|
|
248
|
+
none). `version`, `validUntil` and `enabled` are still emitted and still
|
|
249
|
+
outside `$defs/multicast` (the BLO-3323 freshness model, tracked separately).
|
|
250
|
+
|
|
251
|
+
`MulticastInputErrorKind` gains two members, `atsc3_requires_tuning` and
|
|
252
|
+
`invalid_endpoints`. The union is exported, so a consumer that `switch`es on it
|
|
253
|
+
exhaustively needs the two new arms to keep compiling.
|
|
254
|
+
|
|
255
|
+
The package version stays `0.1.0`: consumers pin a libmmt commit (`file:` or the
|
|
256
|
+
per-commit `0.1.0-main.<sha>` prerelease from `stamp-prerelease.mjs`), and a
|
|
257
|
+
`0.2.0` would fall outside the `^0.1.0` range that siblings such as
|
|
258
|
+
`mmt-render` declare.
|
|
259
|
+
|
|
214
260
|
#### Track-role convention (Phase 14)
|
|
215
261
|
|
|
216
262
|
This is **project-specific**, not in any IETF draft yet. The container's switching-set parser derives its internal role from the last `/`-segment of a track name. MMTP catalogs may also carry the publisher-owned `trackRole` dispatch tag; the canonical schema validates it as a non-empty string. `parseTrackRole` remains the name-based helper for base/delta/repair switching sets (`carp-catalog.ts:41-79`):
|