@blockcast/mmt-transport 0.2.2 → 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.
- package/README.md +44 -58
- package/dist/abr-controller.d.ts +34 -4
- package/dist/abr-controller.d.ts.map +1 -1
- package/dist/abr-controller.js +66 -17
- package/dist/abr-controller.js.map +1 -1
- package/dist/amt-gateway.d.ts.map +1 -1
- package/dist/amt-gateway.js +3 -4
- package/dist/amt-gateway.js.map +1 -1
- package/dist/driad-discovery.d.ts.map +1 -1
- package/dist/driad-discovery.js +3 -6
- package/dist/driad-discovery.js.map +1 -1
- package/dist/endpoint-config.d.ts +68 -0
- package/dist/endpoint-config.d.ts.map +1 -1
- package/dist/endpoint-config.js +118 -3
- package/dist/endpoint-config.js.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -11
- package/dist/index.js.map +1 -1
- package/dist/mmt-transport.no-modules.js +881 -60
- package/dist/mmt-transport.no-modules.js.map +4 -4
- package/dist/moqt-priority.d.ts +39 -0
- package/dist/moqt-priority.d.ts.map +1 -0
- package/dist/moqt-priority.js +41 -0
- package/dist/moqt-priority.js.map +1 -0
- package/dist/multicast-catalog-policy.d.ts +96 -0
- package/dist/multicast-catalog-policy.d.ts.map +1 -0
- package/dist/multicast-catalog-policy.js +660 -0
- package/dist/multicast-catalog-policy.js.map +1 -0
- package/dist/multicast-orchestrator.d.ts +24 -0
- package/dist/multicast-orchestrator.d.ts.map +1 -1
- package/dist/multicast-orchestrator.js +102 -9
- package/dist/multicast-orchestrator.js.map +1 -1
- package/dist/multicast-signaling-reconciler.d.ts +37 -0
- package/dist/multicast-signaling-reconciler.d.ts.map +1 -0
- package/dist/multicast-signaling-reconciler.js +161 -0
- package/dist/multicast-signaling-reconciler.js.map +1 -0
- package/dist/multicast-subscription-pool.d.ts.map +1 -1
- package/dist/multicast-subscription-pool.js +37 -10
- package/dist/multicast-subscription-pool.js.map +1 -1
- package/dist/multicast-tier.d.ts +19 -0
- package/dist/multicast-tier.d.ts.map +1 -1
- package/dist/multicast-tier.js +21 -4
- package/dist/multicast-tier.js.map +1 -1
- package/dist/no-modules.d.ts +40 -3
- package/dist/no-modules.d.ts.map +1 -1
- package/dist/no-modules.js +30 -3
- package/dist/no-modules.js.map +1 -1
- package/dist/packet-batch.d.ts +13 -0
- package/dist/packet-batch.d.ts.map +1 -0
- package/dist/packet-batch.js +14 -0
- package/dist/packet-batch.js.map +1 -0
- package/dist/stall-detector.d.ts +10 -0
- package/dist/stall-detector.d.ts.map +1 -1
- package/dist/stall-detector.js +21 -0
- package/dist/stall-detector.js.map +1 -1
- package/dist/takeover.d.ts +3 -0
- package/dist/takeover.d.ts.map +1 -1
- package/dist/takeover.js +35 -2
- package/dist/takeover.js.map +1 -1
- package/dist/transport-manager.d.ts +21 -17
- package/dist/transport-manager.d.ts.map +1 -1
- package/dist/transport-manager.js +63 -29
- package/dist/transport-manager.js.map +1 -1
- package/dist/types.d.ts +98 -123
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -50
- package/dist/types.js.map +1 -1
- package/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
- package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
- package/node_modules/@blockcast/mmt-base/README.md +134 -0
- package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +55 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +128 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts +7 -0
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/index.js +7 -0
- package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +292 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js +612 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
- 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 +49 -0
- package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +145 -0
- package/node_modules/@blockcast/mmt-base/src/index.ts +6 -0
- package/node_modules/@blockcast/mmt-base/src/mmtp.ts +892 -0
- 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/package.json +13 -6
- package/src/abr-controller.ts +81 -17
- package/src/amt-gateway.ts +3 -5
- package/src/driad-discovery.ts +3 -6
- package/src/endpoint-config.ts +157 -3
- package/src/index.ts +54 -33
- package/src/moqt-priority.ts +51 -0
- package/src/multicast-catalog-policy.ts +753 -0
- package/src/multicast-orchestrator.ts +114 -10
- package/src/multicast-signaling-reconciler.ts +156 -0
- package/src/multicast-subscription-pool.ts +46 -11
- package/src/multicast-tier.ts +30 -3
- package/src/no-modules.ts +54 -2
- package/src/packet-batch.ts +17 -0
- package/src/stall-detector.ts +37 -0
- package/src/takeover.ts +41 -3
- package/src/transport-manager.ts +64 -34
- package/src/types.ts +103 -160
- package/dist/endpoint-config.test.d.ts +0 -2
- package/dist/endpoint-config.test.d.ts.map +0 -1
- package/dist/endpoint-config.test.js +0 -39
- package/dist/endpoint-config.test.js.map +0 -1
- package/dist/fec-client.d.ts +0 -442
- package/dist/fec-client.d.ts.map +0 -1
- package/dist/fec-client.js +0 -789
- package/dist/fec-client.js.map +0 -1
- package/dist/fec-client.test.d.ts +0 -8
- package/dist/fec-client.test.d.ts.map +0 -1
- package/dist/fec-client.test.js +0 -112
- package/dist/fec-client.test.js.map +0 -1
- package/dist/multicast-subscription-pool.test.d.ts +0 -2
- package/dist/multicast-subscription-pool.test.d.ts.map +0 -1
- package/dist/multicast-subscription-pool.test.js +0 -108
- package/dist/multicast-subscription-pool.test.js.map +0 -1
- package/dist/multicast-tier.test.d.ts +0 -2
- package/dist/multicast-tier.test.d.ts.map +0 -1
- package/dist/multicast-tier.test.js +0 -75
- package/dist/multicast-tier.test.js.map +0 -1
- package/dist/stall-detector.test.d.ts +0 -2
- package/dist/stall-detector.test.d.ts.map +0 -1
- package/dist/stall-detector.test.js +0 -33
- package/dist/stall-detector.test.js.map +0 -1
- package/dist/transport-manager.test.d.ts +0 -2
- package/dist/transport-manager.test.d.ts.map +0 -1
- package/dist/transport-manager.test.js +0 -155
- package/dist/transport-manager.test.js.map +0 -1
- package/src/endpoint-config.test.ts +0 -54
- package/src/fec-client.test.ts +0 -140
- package/src/fec-client.ts +0 -1103
- package/src/multicast-subscription-pool.test.ts +0 -115
- package/src/multicast-tier.test.ts +0 -80
- package/src/stall-detector.test.ts +0 -34
- package/src/transport-manager.test.ts +0 -192
|
@@ -29,9 +29,6 @@ import { normalizeMulticastEndpoint } from "./endpoint-config.js";
|
|
|
29
29
|
*
|
|
30
30
|
* Manages transport connections with automatic mode selection:
|
|
31
31
|
* WebTransport -> window.multicast -> AMT proxy -> WebSocket
|
|
32
|
-
*
|
|
33
|
-
* Renamed from SSMTransportManager - the old name is preserved
|
|
34
|
-
* as a deprecated alias for backwards compatibility.
|
|
35
32
|
*/
|
|
36
33
|
export class TransportManager {
|
|
37
34
|
state = {
|
|
@@ -44,16 +41,14 @@ export class TransportManager {
|
|
|
44
41
|
capabilities = null;
|
|
45
42
|
subscription = null;
|
|
46
43
|
driad = new DRIADDiscovery();
|
|
47
|
-
|
|
44
|
+
/** Built by `connect()` from the caller's ladder; there is no built-in one. */
|
|
45
|
+
abr = null;
|
|
48
46
|
multicastOrchestrator = null;
|
|
49
47
|
onOrchestratorCommand;
|
|
50
48
|
connectionGeneration = 0;
|
|
51
49
|
onPacket;
|
|
52
50
|
onError;
|
|
53
51
|
onStateChange;
|
|
54
|
-
constructor() {
|
|
55
|
-
this.abr = new AdaptiveBitrateController();
|
|
56
|
-
}
|
|
57
52
|
getWindow() {
|
|
58
53
|
return typeof window === "undefined" ? undefined : window;
|
|
59
54
|
}
|
|
@@ -111,11 +106,41 @@ export class TransportManager {
|
|
|
111
106
|
* 1. window.multicast gateway bytes
|
|
112
107
|
* 2. AMT proxy (specified or discovered via DRIAD)
|
|
113
108
|
* 3. MOQ WebTransport (final fallback)
|
|
109
|
+
*
|
|
110
|
+
* The ABR ladder (`abrLadder`) and initial rendition (`initialQuality`)
|
|
111
|
+
* are checked first, before anything is torn down. A config that fails is
|
|
112
|
+
* refused with the same shape as an invalid endpoint, the error to the
|
|
113
|
+
* error callback and `false` resolved; unlike one, it is caught before the
|
|
114
|
+
* live subscription closes, so a refused reconnect leaves that subscription,
|
|
115
|
+
* its state and any connect already in flight untouched.
|
|
114
116
|
*/
|
|
115
117
|
async connect(config) {
|
|
118
|
+
let abr;
|
|
119
|
+
try {
|
|
120
|
+
abr = new AdaptiveBitrateController({
|
|
121
|
+
ladder: config.abrLadder,
|
|
122
|
+
initialQuality: config.initialQuality?.name,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
// A refused config is a caller bug. Without an error callback, say so
|
|
127
|
+
// on the console, since `false` alone also means "no multicast path";
|
|
128
|
+
// with one, the callback is the report.
|
|
129
|
+
const refused = error instanceof Error ? error : new Error(String(error));
|
|
130
|
+
if (this.onError)
|
|
131
|
+
this.onError(refused);
|
|
132
|
+
else
|
|
133
|
+
console.error("[Transport] ABR config refused, not connecting:", refused);
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
116
136
|
const generation = ++this.connectionGeneration;
|
|
117
137
|
this.subscription?.close();
|
|
118
138
|
this.subscription = null;
|
|
139
|
+
// The previous connection's ladder ends with it, as in disconnect(): a
|
|
140
|
+
// reconnect that bails below (invalid endpoint, or superseded while
|
|
141
|
+
// detecting capabilities) leaves no ladder, and only the success path
|
|
142
|
+
// installs `abr`.
|
|
143
|
+
this.abr = null;
|
|
119
144
|
this.state = {
|
|
120
145
|
mode: "disconnected",
|
|
121
146
|
connected: false,
|
|
@@ -148,11 +173,10 @@ export class TransportManager {
|
|
|
148
173
|
const caps = await this.detectCapabilities();
|
|
149
174
|
if (generation !== this.connectionGeneration)
|
|
150
175
|
return false;
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
this.abr.setCallback((quality) => {
|
|
176
|
+
// ABR adapts over the caller's ladder (the catalog's renditions),
|
|
177
|
+
// validated above before anything was torn down.
|
|
178
|
+
this.abr = abr;
|
|
179
|
+
abr.setCallback((quality) => {
|
|
156
180
|
this.state.quality = quality;
|
|
157
181
|
this.subscription?.onqualitychange?.(quality);
|
|
158
182
|
this.onStateChange?.(this.state);
|
|
@@ -225,7 +249,7 @@ export class TransportManager {
|
|
|
225
249
|
connected: true,
|
|
226
250
|
group: config.group,
|
|
227
251
|
source: config.source,
|
|
228
|
-
quality: this.
|
|
252
|
+
quality: this.requireAbr().getCurrentQuality(),
|
|
229
253
|
packetsReceived: 0,
|
|
230
254
|
bytesReceived: 0,
|
|
231
255
|
lastPacketTime: 0,
|
|
@@ -278,8 +302,8 @@ export class TransportManager {
|
|
|
278
302
|
async connectAmtProxy(config, amtRelay, generation) {
|
|
279
303
|
try {
|
|
280
304
|
const relayHost = amtRelay.includes(":") && !amtRelay.startsWith("[") ? `[${amtRelay}]` : amtRelay;
|
|
281
|
-
|
|
282
|
-
const wsUrl = new URL(`wss://${
|
|
305
|
+
// amtRelayPort is the relay's RFC 7450 UDP port, not the proxy's HTTPS port.
|
|
306
|
+
const wsUrl = new URL(`wss://${relayHost}/amt-proxy`);
|
|
283
307
|
wsUrl.searchParams.set("group", config.group);
|
|
284
308
|
wsUrl.searchParams.set("source", config.source || "");
|
|
285
309
|
wsUrl.searchParams.set("port", String(config.port));
|
|
@@ -309,7 +333,7 @@ export class TransportManager {
|
|
|
309
333
|
group: config.group,
|
|
310
334
|
source: config.source,
|
|
311
335
|
amtRelay,
|
|
312
|
-
quality: this.
|
|
336
|
+
quality: this.requireAbr().getCurrentQuality(),
|
|
313
337
|
packetsReceived: 0,
|
|
314
338
|
bytesReceived: 0,
|
|
315
339
|
lastPacketTime: 0,
|
|
@@ -356,7 +380,8 @@ export class TransportManager {
|
|
|
356
380
|
this.state.bytesReceived += data.byteLength;
|
|
357
381
|
this.state.lastPacketTime = Date.now();
|
|
358
382
|
// Update ABR with sample
|
|
359
|
-
|
|
383
|
+
// Packets reach here only through a connect()ed join, which built the ABR.
|
|
384
|
+
this.abr?.recordSample(data.byteLength, 0);
|
|
360
385
|
// Forward to callback
|
|
361
386
|
this.onPacket?.(data);
|
|
362
387
|
}
|
|
@@ -367,16 +392,27 @@ export class TransportManager {
|
|
|
367
392
|
return { ...this.state };
|
|
368
393
|
}
|
|
369
394
|
/**
|
|
370
|
-
*
|
|
395
|
+
* The rung of the live connection's `abrLadder` ABR is on; `null` when
|
|
396
|
+
* there is no ladder (before `connect(config)` succeeds, after
|
|
397
|
+
* `disconnect()`, or after a reconnect that was torn down and bailed).
|
|
371
398
|
*/
|
|
372
399
|
getQuality() {
|
|
373
|
-
return this.abr
|
|
400
|
+
return this.abr?.getCurrentQuality() ?? null;
|
|
374
401
|
}
|
|
375
402
|
/**
|
|
376
|
-
* Force
|
|
403
|
+
* Force the rung named `name` of the live connection's `abrLadder`.
|
|
404
|
+
* Throws `Error` when there is no ladder (see `getQuality()`), and
|
|
405
|
+
* `RangeError` when the ladder has no rung of that name; it never falls
|
|
406
|
+
* back to another rung.
|
|
377
407
|
*/
|
|
378
408
|
setQuality(name) {
|
|
379
|
-
this.
|
|
409
|
+
this.requireAbr().setQuality(name);
|
|
410
|
+
}
|
|
411
|
+
/** The controller `connect()` built; before it there is no ladder to adapt over. */
|
|
412
|
+
requireAbr() {
|
|
413
|
+
if (!this.abr)
|
|
414
|
+
throw new Error("[Transport] ABR has no ladder before connect(config)");
|
|
415
|
+
return this.abr;
|
|
380
416
|
}
|
|
381
417
|
/** Configures multicast-only ABR while leaving the caller's MoQ ABR untouched. */
|
|
382
418
|
configureMulticastTiers(options, onCommand) {
|
|
@@ -388,6 +424,9 @@ export class TransportManager {
|
|
|
388
424
|
recordMulticastGoodput(bitrate) {
|
|
389
425
|
return this.dispatchOrchestratorCommand(this.multicastOrchestrator?.onGoodput({ bitrate }));
|
|
390
426
|
}
|
|
427
|
+
recordMulticastHeadroom(healthy) {
|
|
428
|
+
return this.dispatchOrchestratorCommand(this.multicastOrchestrator?.onHeadroom({ healthy }));
|
|
429
|
+
}
|
|
391
430
|
recordMulticastTierPacket(packet) {
|
|
392
431
|
return this.dispatchOrchestratorCommand(this.multicastOrchestrator?.onTierPacket(packet));
|
|
393
432
|
}
|
|
@@ -419,6 +458,9 @@ export class TransportManager {
|
|
|
419
458
|
this.connectionGeneration++;
|
|
420
459
|
this.subscription?.close();
|
|
421
460
|
this.subscription = null;
|
|
461
|
+
// No ladder after a disconnect, as before the first connect():
|
|
462
|
+
// getQuality() is null and setQuality() throws until connect(config).
|
|
463
|
+
this.abr = null;
|
|
422
464
|
this.dispatchOrchestratorCommand(this.multicastOrchestrator?.cancel());
|
|
423
465
|
this.multicastOrchestrator = null;
|
|
424
466
|
this.onOrchestratorCommand = undefined;
|
|
@@ -439,12 +481,4 @@ export class TransportManager {
|
|
|
439
481
|
}
|
|
440
482
|
// Export singleton instance
|
|
441
483
|
export const transportManager = new TransportManager();
|
|
442
|
-
/**
|
|
443
|
-
* @deprecated Use `TransportManager` instead. This alias is preserved for backwards compatibility.
|
|
444
|
-
*/
|
|
445
|
-
export const SSMTransportManager = TransportManager;
|
|
446
|
-
/**
|
|
447
|
-
* @deprecated Use `transportManager` instead. This alias is preserved for backwards compatibility.
|
|
448
|
-
*/
|
|
449
|
-
export const ssmTransport = transportManager;
|
|
450
484
|
//# sourceMappingURL=transport-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport-manager.js","sourceRoot":"","sources":["../src/transport-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport-manager.js","sourceRoot":"","sources":["../src/transport-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -3,26 +3,80 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Shared interfaces for unified transport (WebTransport, SSM, AMT, DRIAD) and FEC.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
7
|
-
export interface
|
|
6
|
+
/** Native IP-multicast request for the window.multicast gateway. */
|
|
7
|
+
export interface WindowMulticastSubscribeConfigBytes {
|
|
8
8
|
group: string;
|
|
9
9
|
port: number;
|
|
10
10
|
source?: string;
|
|
11
11
|
consume: "bytes";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
origin?: "ip-multicast";
|
|
13
|
+
/** MMTP packet IDs to forward before data enters the page transport queue. */
|
|
14
|
+
packetIds?: readonly number[];
|
|
15
|
+
/** Catalog track identities corresponding to the selected packet IDs. */
|
|
16
|
+
tracks?: ReadonlyArray<{
|
|
17
|
+
name: string;
|
|
18
|
+
packetId: number;
|
|
19
|
+
}>;
|
|
15
20
|
}
|
|
21
|
+
/** AMT relay request for the window.multicast gateway. */
|
|
22
|
+
export interface WindowMulticastSubscribeConfigAmt {
|
|
23
|
+
group: string;
|
|
24
|
+
port: number;
|
|
25
|
+
source?: string;
|
|
26
|
+
consume: "bytes";
|
|
27
|
+
origin: "amt";
|
|
28
|
+
relay: string;
|
|
29
|
+
relayPort: number;
|
|
30
|
+
/** MMTP packet IDs to forward before data enters the page transport queue. */
|
|
31
|
+
packetIds?: readonly number[];
|
|
32
|
+
}
|
|
33
|
+
/** Canonical window.multicast config for byte subscriptions. */
|
|
34
|
+
export type WindowMulticastSubscribeConfig = WindowMulticastSubscribeConfigBytes | WindowMulticastSubscribeConfigAmt;
|
|
16
35
|
export type WindowMulticastSubscriptionState = "connecting" | "connected" | "reconnecting" | "closed";
|
|
17
36
|
export interface WindowMulticastSubscriptionEventMap {
|
|
18
37
|
bytes: CustomEvent<ArrayBuffer>;
|
|
38
|
+
/**
|
|
39
|
+
* Provider extension, not part of the frozen v1 contract (BLO-36599): every
|
|
40
|
+
* packet the provider decoded in one dispatch batch, in arrival order. Each
|
|
41
|
+
* element is exactly what one `bytes` event would have carried. Emitted
|
|
42
|
+
* only by a subscription whose `eventTypes` lists `"packets"`; see
|
|
43
|
+
* {@link subscriptionDeliversPacketBatches}. A consumer listens to exactly
|
|
44
|
+
* one of `bytes` and `packets`, because both carry the same packets.
|
|
45
|
+
*/
|
|
46
|
+
packets: CustomEvent<readonly ArrayBuffer[]>;
|
|
19
47
|
state: CustomEvent<WindowMulticastSubscriptionState>;
|
|
20
48
|
error: CustomEvent<unknown>;
|
|
21
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* How a window.multicast subscription hands packets to the page.
|
|
52
|
+
*
|
|
53
|
+
* - `"datagram"`: packets are independent datagrams; a pause in arrivals may
|
|
54
|
+
* mean loss.
|
|
55
|
+
* - `"ordered-relay"`: the provider relays one receiving socket over a
|
|
56
|
+
* reliable, ordered stream (for example a BCDS bridge WebTransport uni
|
|
57
|
+
* stream). The relay may drop packets (a bounded queue discarding its
|
|
58
|
+
* oldest on overflow) but never reorders them: what arrives is a
|
|
59
|
+
* subsequence of the socket's receive order, so a pause in arrivals
|
|
60
|
+
* carries no loss information.
|
|
61
|
+
*
|
|
62
|
+
* A provider declares `"ordered-relay"` only when every packet of the
|
|
63
|
+
* subscription travels that one ordered stream for the life of the
|
|
64
|
+
* subscription. Absent means no ordering promise, which consumers treat as
|
|
65
|
+
* `"datagram"`.
|
|
66
|
+
*/
|
|
67
|
+
export type WindowMulticastDelivery = "datagram" | "ordered-relay";
|
|
22
68
|
/** window.multicast subscription returned by the IWA gateway surface. */
|
|
23
69
|
export interface WindowMulticastSubscription {
|
|
24
70
|
readonly id?: string;
|
|
25
71
|
readonly state?: WindowMulticastSubscriptionState;
|
|
72
|
+
/** How this subscription delivers packets; see WindowMulticastDelivery. */
|
|
73
|
+
readonly delivery?: WindowMulticastDelivery;
|
|
74
|
+
/**
|
|
75
|
+
* Events this subscription emits, when the provider advertises them. A
|
|
76
|
+
* provider without the field emits the v1 events only (`bytes`, `state`,
|
|
77
|
+
* `error`).
|
|
78
|
+
*/
|
|
79
|
+
readonly eventTypes?: readonly string[];
|
|
26
80
|
addEventListener<K extends keyof WindowMulticastSubscriptionEventMap>(type: K, listener: (ev: WindowMulticastSubscriptionEventMap[K]) => void, options?: AddEventListenerOptions | boolean): void;
|
|
27
81
|
removeEventListener<K extends keyof WindowMulticastSubscriptionEventMap>(type: K, listener: (ev: WindowMulticastSubscriptionEventMap[K]) => void, options?: EventListenerOptions | boolean): void;
|
|
28
82
|
unsubscribe: () => Promise<void> | void;
|
|
@@ -59,17 +113,37 @@ export interface TransportConfig {
|
|
|
59
113
|
mode?: "auto" | "native" | "tunnel";
|
|
60
114
|
/** DRIAD discovery enabled */
|
|
61
115
|
driadEnabled?: boolean;
|
|
62
|
-
|
|
116
|
+
}
|
|
117
|
+
/** What `TransportManager.connect()` needs beyond the subscription itself. */
|
|
118
|
+
export interface TransportConnectConfig extends TransportConfig {
|
|
119
|
+
/**
|
|
120
|
+
* The stream's renditions the ABR controller adapts over, e.g. its catalog
|
|
121
|
+
* video tracks. Required: there is no built-in ladder. `connect()` checks
|
|
122
|
+
* it (`validateQualityLadder`) and `initialQuality` before tearing anything
|
|
123
|
+
* down; a config that fails is refused through the error callback and
|
|
124
|
+
* `connect()` resolves `false`, leaving a live subscription untouched.
|
|
125
|
+
* `catalogQualityLadder(catalog)` builds it from a catalog.
|
|
126
|
+
*/
|
|
127
|
+
abrLadder: readonly QualityLevel[];
|
|
128
|
+
/**
|
|
129
|
+
* Ladder rendition to start on, matched by `name` against `abrLadder`; the
|
|
130
|
+
* lowest-bitrate rung when omitted. A name `abrLadder` does not carry is
|
|
131
|
+
* not a fallback to that rung: `TransportManager.connect()` refuses the
|
|
132
|
+
* config (error callback, resolves `false`) before tearing anything down.
|
|
133
|
+
*/
|
|
63
134
|
initialQuality?: QualityLevel;
|
|
64
135
|
}
|
|
65
|
-
/** @deprecated Use TransportConfig instead */
|
|
66
|
-
export type SSMConfig = TransportConfig;
|
|
67
136
|
export interface QualityLevel {
|
|
68
137
|
name: string;
|
|
138
|
+
/** Bits per second: what the ABR controller ranks and costs a rendition by. */
|
|
69
139
|
bitrate: number;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Dimensions and frame rate as the stream's catalog states them; absent
|
|
142
|
+
* when it does not. ABR never reads them, so none is defaulted.
|
|
143
|
+
*/
|
|
144
|
+
width?: number;
|
|
145
|
+
height?: number;
|
|
146
|
+
fps?: number;
|
|
73
147
|
}
|
|
74
148
|
export interface TransportCapabilities {
|
|
75
149
|
nativeSSM: boolean;
|
|
@@ -100,8 +174,6 @@ export interface TransportSubscription {
|
|
|
100
174
|
onqualitychange?: (quality: QualityLevel) => void;
|
|
101
175
|
close: () => void;
|
|
102
176
|
}
|
|
103
|
-
/** @deprecated Use TransportSubscription instead */
|
|
104
|
-
export type SSMSubscription = TransportSubscription;
|
|
105
177
|
/** DRIAD Relay information (RFC 8777) */
|
|
106
178
|
export interface DRIADRelay {
|
|
107
179
|
host: string;
|
|
@@ -131,52 +203,6 @@ export interface PacketMetadata {
|
|
|
131
203
|
transport: "native" | "tunnel" | "websocket";
|
|
132
204
|
timestamp: number;
|
|
133
205
|
}
|
|
134
|
-
/** MFU Fragment for reassembly */
|
|
135
|
-
export interface MfuFragment {
|
|
136
|
-
mpuSequenceNumber: number;
|
|
137
|
-
fragmentationIndicator: number;
|
|
138
|
-
fragmentCounter: number;
|
|
139
|
-
data: Uint8Array;
|
|
140
|
-
timestamp: bigint;
|
|
141
|
-
}
|
|
142
|
-
/** Reassembled MFU */
|
|
143
|
-
export interface ReassembledMfu {
|
|
144
|
-
mpuSequenceNumber: number;
|
|
145
|
-
data: Uint8Array;
|
|
146
|
-
timestamp: bigint;
|
|
147
|
-
fragmentCount: number;
|
|
148
|
-
recoveredViaFec: boolean;
|
|
149
|
-
}
|
|
150
|
-
/** FEC + MFU processing statistics */
|
|
151
|
-
export interface ProcessingStats {
|
|
152
|
-
mfuComplete: number;
|
|
153
|
-
mfuReassembled: number;
|
|
154
|
-
mfuTimedOut: number;
|
|
155
|
-
fecSourcePackets: number;
|
|
156
|
-
fecRepairPackets: number;
|
|
157
|
-
fecBlocksComplete: number;
|
|
158
|
-
fecBlocksRecovered: number;
|
|
159
|
-
fecBlocksFailed: number;
|
|
160
|
-
fecRecoveryRate: number;
|
|
161
|
-
greenFillFrames: number;
|
|
162
|
-
}
|
|
163
|
-
/** Options for MmtFecClient */
|
|
164
|
-
export interface MmtFecClientOptions {
|
|
165
|
-
/** Interleave depth for FEC (default: 30 for ~1s at 30fps) */
|
|
166
|
-
interleaveDepth?: number;
|
|
167
|
-
/** Block timeout in milliseconds (default: 2000) */
|
|
168
|
-
blockTimeoutMs?: number;
|
|
169
|
-
/** MFU timeout in milliseconds (default: 1000) */
|
|
170
|
-
mfuTimeoutMs?: number;
|
|
171
|
-
/** Enable green-fill for failed frames (default: true) */
|
|
172
|
-
greenFillEnabled?: boolean;
|
|
173
|
-
/** Callback when MFU is ready */
|
|
174
|
-
onMfuReady?: (mfu: ReassembledMfu) => void;
|
|
175
|
-
/** Callback for green-fill frame */
|
|
176
|
-
onGreenFill?: (timestamp: bigint) => void;
|
|
177
|
-
/** Callback for stats update */
|
|
178
|
-
onStatsUpdate?: (stats: ProcessingStats) => void;
|
|
179
|
-
}
|
|
180
206
|
/** Time types (microseconds) */
|
|
181
207
|
export type Micro = number & {
|
|
182
208
|
readonly __micro: unique symbol;
|
|
@@ -226,51 +252,24 @@ export interface MulticastSubscriptionHandle {
|
|
|
226
252
|
readonly stats: SubscriptionStats;
|
|
227
253
|
close(): Promise<void>;
|
|
228
254
|
}
|
|
229
|
-
/** FEC Configuration for MMT streams */
|
|
230
|
-
export interface FecConfig {
|
|
231
|
-
enabled?: boolean;
|
|
232
|
-
oti?: Uint8Array;
|
|
233
|
-
interleaveDepth?: number;
|
|
234
|
-
blockTimeoutMs?: number;
|
|
235
|
-
greenFillEnabled?: boolean;
|
|
236
|
-
}
|
|
237
|
-
/** FEC Statistics */
|
|
238
|
-
export interface FecStats {
|
|
239
|
-
sourcePackets: number;
|
|
240
|
-
repairPackets: number;
|
|
241
|
-
blocksComplete: number;
|
|
242
|
-
blocksRecovered: number;
|
|
243
|
-
blocksFailed: number;
|
|
244
|
-
recoveryRate: number;
|
|
245
|
-
greenFillFrames: number;
|
|
246
|
-
}
|
|
247
|
-
/** Extended MulticastConfig with FEC support */
|
|
248
|
-
export interface MulticastConfigWithFec extends MulticastConfig {
|
|
249
|
-
fec?: FecConfig;
|
|
250
|
-
onFecStats?: (stats: FecStats) => void;
|
|
251
|
-
}
|
|
252
255
|
/** Main Multicast Bridge API */
|
|
253
256
|
export interface MulticastBridge {
|
|
254
|
-
subscribe(config: MulticastConfig
|
|
257
|
+
subscribe(config: MulticastConfig): Promise<MulticastSubscriptionHandle>;
|
|
255
258
|
getSubscriptions(): Promise<MulticastSubscriptionHandle[]>;
|
|
256
259
|
isNativeSupported(): Promise<boolean>;
|
|
257
|
-
getFecStats?(): FecStats | null;
|
|
258
260
|
}
|
|
259
261
|
/**
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*/
|
|
263
|
-
export declare const FEC_CONFIG_MESSAGE_TYPE = 80;
|
|
264
|
-
/**
|
|
265
|
-
* Repair track suffix per draft-ramadan-moq-fec-00 Section 5.1
|
|
266
|
-
* Repair tracks are named by appending this suffix to the source track path
|
|
267
|
-
*/
|
|
268
|
-
export declare const REPAIR_TRACK_SUFFIX = "repair";
|
|
269
|
-
/**
|
|
270
|
-
* Get the repair track path for a given source track
|
|
262
|
+
* Build a conventional repair track path by appending "repair" to a source
|
|
263
|
+
* track path.
|
|
271
264
|
*
|
|
272
|
-
*
|
|
273
|
-
*
|
|
265
|
+
* Track names carry no protocol meaning. A repair track's layer, its source
|
|
266
|
+
* and its symbol budget are resolved from the catalog via `resolveRepairLayers`
|
|
267
|
+
* in `@blockcast/mmt-container`, never from a name or a name suffix. This
|
|
268
|
+
* helper is a naming convenience for producers only.
|
|
269
|
+
*
|
|
270
|
+
* @deprecated Naming convenience only. Never classify a track or resolve a
|
|
271
|
+
* repair layer from its path; use `resolveRepairLayers` from
|
|
272
|
+
* `@blockcast/mmt-container`.
|
|
274
273
|
*
|
|
275
274
|
* @param sourceTrack - The source track path (e.g., "live/video")
|
|
276
275
|
* @returns The repair track path (e.g., "live/video/repair")
|
|
@@ -280,35 +279,11 @@ export declare const REPAIR_TRACK_SUFFIX = "repair";
|
|
|
280
279
|
* repairTrackPath("broadcast/video/1080p") // returns "broadcast/video/1080p/repair"
|
|
281
280
|
*/
|
|
282
281
|
export declare function repairTrackPath(sourceTrack: string): string;
|
|
283
|
-
/**
|
|
284
|
-
* Check if a track path is a repair track
|
|
285
|
-
*
|
|
286
|
-
* @param path - The track path to check
|
|
287
|
-
* @returns True if the path ends with the repair track suffix
|
|
288
|
-
*
|
|
289
|
-
* @example
|
|
290
|
-
* isRepairTrack("live/video/repair") // returns true
|
|
291
|
-
* isRepairTrack("repair") // returns true
|
|
292
|
-
* isRepairTrack("live/video") // returns false
|
|
293
|
-
*/
|
|
294
|
-
export declare function isRepairTrack(path: string): boolean;
|
|
295
|
-
/**
|
|
296
|
-
* Get the source track path from a repair track path
|
|
297
|
-
*
|
|
298
|
-
* @param repairTrack - The repair track path
|
|
299
|
-
* @returns The source track path, or null if not a valid repair track
|
|
300
|
-
*
|
|
301
|
-
* @example
|
|
302
|
-
* sourceTrackFromRepair("live/video/repair") // returns "live/video"
|
|
303
|
-
* sourceTrackFromRepair("repair") // returns ""
|
|
304
|
-
* sourceTrackFromRepair("live/video") // returns null
|
|
305
|
-
*/
|
|
306
|
-
export declare function sourceTrackFromRepair(repairTrack: string): string | null;
|
|
307
282
|
/**
|
|
308
283
|
* MoQ FEC Configuration per draft-ramadan-moq-fec-00
|
|
309
284
|
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
285
|
+
* These parameters are signalled in each track's catalog `fec` block;
|
|
286
|
+
* no FEC_CONFIG control message is sent or parsed.
|
|
312
287
|
*/
|
|
313
288
|
export interface MoqFecConfig {
|
|
314
289
|
/** Subscribe ID this config applies to */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -7,20 +7,17 @@
|
|
|
7
7
|
// FEC Constants and Utilities per draft-ramadan-moq-fec-00
|
|
8
8
|
// ============================================================
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*/
|
|
18
|
-
export const REPAIR_TRACK_SUFFIX = "repair";
|
|
19
|
-
/**
|
|
20
|
-
* Get the repair track path for a given source track
|
|
10
|
+
* Build a conventional repair track path by appending "repair" to a source
|
|
11
|
+
* track path.
|
|
12
|
+
*
|
|
13
|
+
* Track names carry no protocol meaning. A repair track's layer, its source
|
|
14
|
+
* and its symbol budget are resolved from the catalog via `resolveRepairLayers`
|
|
15
|
+
* in `@blockcast/mmt-container`, never from a name or a name suffix. This
|
|
16
|
+
* helper is a naming convenience for producers only.
|
|
21
17
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
18
|
+
* @deprecated Naming convenience only. Never classify a track or resolve a
|
|
19
|
+
* repair layer from its path; use `resolveRepairLayers` from
|
|
20
|
+
* `@blockcast/mmt-container`.
|
|
24
21
|
*
|
|
25
22
|
* @param sourceTrack - The source track path (e.g., "live/video")
|
|
26
23
|
* @returns The repair track path (e.g., "live/video/repair")
|
|
@@ -31,44 +28,9 @@ export const REPAIR_TRACK_SUFFIX = "repair";
|
|
|
31
28
|
*/
|
|
32
29
|
export function repairTrackPath(sourceTrack) {
|
|
33
30
|
if (!sourceTrack || sourceTrack.length === 0) {
|
|
34
|
-
return
|
|
35
|
-
}
|
|
36
|
-
return `${sourceTrack}/${REPAIR_TRACK_SUFFIX}`;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Check if a track path is a repair track
|
|
40
|
-
*
|
|
41
|
-
* @param path - The track path to check
|
|
42
|
-
* @returns True if the path ends with the repair track suffix
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* isRepairTrack("live/video/repair") // returns true
|
|
46
|
-
* isRepairTrack("repair") // returns true
|
|
47
|
-
* isRepairTrack("live/video") // returns false
|
|
48
|
-
*/
|
|
49
|
-
export function isRepairTrack(path) {
|
|
50
|
-
return path === REPAIR_TRACK_SUFFIX || path.endsWith(`/${REPAIR_TRACK_SUFFIX}`);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Get the source track path from a repair track path
|
|
54
|
-
*
|
|
55
|
-
* @param repairTrack - The repair track path
|
|
56
|
-
* @returns The source track path, or null if not a valid repair track
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* sourceTrackFromRepair("live/video/repair") // returns "live/video"
|
|
60
|
-
* sourceTrackFromRepair("repair") // returns ""
|
|
61
|
-
* sourceTrackFromRepair("live/video") // returns null
|
|
62
|
-
*/
|
|
63
|
-
export function sourceTrackFromRepair(repairTrack) {
|
|
64
|
-
if (repairTrack === REPAIR_TRACK_SUFFIX) {
|
|
65
|
-
return "";
|
|
66
|
-
}
|
|
67
|
-
const suffix = `/${REPAIR_TRACK_SUFFIX}`;
|
|
68
|
-
if (repairTrack.endsWith(suffix)) {
|
|
69
|
-
return repairTrack.slice(0, -suffix.length);
|
|
31
|
+
return "repair";
|
|
70
32
|
}
|
|
71
|
-
return
|
|
33
|
+
return `${sourceTrack}/repair`;
|
|
72
34
|
}
|
|
73
35
|
/**
|
|
74
36
|
* FEC algorithm identifier per draft-ramadan-moq-fec-00
|