@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicast-subscription-pool.js","sourceRoot":"","sources":["../src/multicast-subscription-pool.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"multicast-subscription-pool.js","sourceRoot":"","sources":["../src/multicast-subscription-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/multicast-tier.d.ts
CHANGED
|
@@ -8,7 +8,26 @@ export interface MulticastTierEndpoint {
|
|
|
8
8
|
}[];
|
|
9
9
|
bandwidth?: number;
|
|
10
10
|
protocol?: string;
|
|
11
|
+
/** False when every track on this endpoint is a `fec-repair` track, so the
|
|
12
|
+
* endpoint carries repair symbols only and no media. A repair-layer
|
|
13
|
+
* endpoint is joined by the loss-driven layer policy, never by the
|
|
14
|
+
* bandwidth ladder: selecting one as a tier would leave the receiver with
|
|
15
|
+
* no media at all. Set by the catalog policy, which resolves repair-track
|
|
16
|
+
* membership from `depends`/`fec.repairTrack` rather than from names.
|
|
17
|
+
* Undefined means "not classified" and is treated as carrying media, so a
|
|
18
|
+
* caller that builds endpoints without the policy is unaffected. */
|
|
19
|
+
carriesMedia?: boolean;
|
|
11
20
|
}
|
|
12
21
|
export declare function endpointKey(endpoint: MulticastTierEndpoint): string;
|
|
22
|
+
/**
|
|
23
|
+
* Whether this endpoint may be selected as a media tier.
|
|
24
|
+
*
|
|
25
|
+
* Every path that picks a tier must apply this, not only `selectMulticastTier`:
|
|
26
|
+
* the orchestrator's headroom up-selection ranks endpoints itself, because it
|
|
27
|
+
* advances one adjacent rung rather than fitting a bandwidth budget. Exported
|
|
28
|
+
* so both rankings share one definition of "carries media" instead of
|
|
29
|
+
* repeating the comparison and drifting apart.
|
|
30
|
+
*/
|
|
31
|
+
export declare function carriesMedia(endpoint: MulticastTierEndpoint): boolean;
|
|
13
32
|
export declare function selectMulticastTier(endpoints: readonly MulticastTierEndpoint[], estimate: number | undefined): MulticastTierEndpoint | undefined;
|
|
14
33
|
//# sourceMappingURL=multicast-tier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicast-tier.d.ts","sourceRoot":"","sources":["../src/multicast-tier.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"multicast-tier.d.ts","sourceRoot":"","sources":["../src/multicast-tier.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;yEAOqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAEnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAErE;AAED,wBAAgB,mBAAmB,CAClC,SAAS,EAAE,SAAS,qBAAqB,EAAE,EAC3C,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC1B,qBAAqB,GAAG,SAAS,CAoBnC"}
|
package/dist/multicast-tier.js
CHANGED
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
export function endpointKey(endpoint) {
|
|
2
2
|
return `${endpoint.sourceAddress ?? ""}|${endpoint.groupAddress}|${endpoint.port}`;
|
|
3
3
|
}
|
|
4
|
+
/**
|
|
5
|
+
* Whether this endpoint may be selected as a media tier.
|
|
6
|
+
*
|
|
7
|
+
* Every path that picks a tier must apply this, not only `selectMulticastTier`:
|
|
8
|
+
* the orchestrator's headroom up-selection ranks endpoints itself, because it
|
|
9
|
+
* advances one adjacent rung rather than fitting a bandwidth budget. Exported
|
|
10
|
+
* so both rankings share one definition of "carries media" instead of
|
|
11
|
+
* repeating the comparison and drifting apart.
|
|
12
|
+
*/
|
|
13
|
+
export function carriesMedia(endpoint) {
|
|
14
|
+
return endpoint.carriesMedia !== false;
|
|
15
|
+
}
|
|
4
16
|
export function selectMulticastTier(endpoints, estimate) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
17
|
+
// Repair-only endpoints are never a media tier. Filtering once here covers
|
|
18
|
+
// every return path below, including the two early returns and the fallback:
|
|
19
|
+
// a ladder that has only repair-layer endpoints returns undefined rather
|
|
20
|
+
// than joining one and receiving no media.
|
|
21
|
+
const media = endpoints.filter(carriesMedia);
|
|
22
|
+
if (media.length <= 1)
|
|
23
|
+
return media[0];
|
|
24
|
+
const ranked = media
|
|
8
25
|
.filter((endpoint) => typeof endpoint.bandwidth === "number" && endpoint.bandwidth > 0)
|
|
9
26
|
.sort((a, b) => a.bandwidth - b.bandwidth);
|
|
10
27
|
if (ranked.length < 2)
|
|
11
|
-
return
|
|
28
|
+
return media[0];
|
|
12
29
|
if (estimate === undefined)
|
|
13
30
|
return ranked[0];
|
|
14
31
|
const budget = estimate * 0.8;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicast-tier.js","sourceRoot":"","sources":["../src/multicast-tier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"multicast-tier.js","sourceRoot":"","sources":["../src/multicast-tier.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,WAAW,CAAC,QAA+B;IAC1D,OAAO,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,QAA+B;IAC3D,OAAO,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAClC,SAA2C,EAC3C,QAA4B;IAE5B,2EAA2E;IAC3E,6EAA6E;IAC7E,yEAAyE;IACzE,2CAA2C;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,KAAK;SAClB,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;SACtF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAU,GAAG,CAAC,CAAC,SAAU,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC9B,IAAI,QAA2C,CAAC;IAChD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,SAAU,IAAI,MAAM;YAAE,QAAQ,GAAG,QAAQ,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/no-modules.d.ts
CHANGED
|
@@ -1,16 +1,42 @@
|
|
|
1
|
-
import { AdaptiveBitrateController } from "./abr-controller.js";
|
|
2
|
-
import { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig } from "./endpoint-config.js";
|
|
1
|
+
import { AdaptiveBitrateController, validateQualityLadder } from "./abr-controller.js";
|
|
2
|
+
import { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, toWindowMulticastSubscribeConfig } from "./endpoint-config.js";
|
|
3
3
|
import { MulticastOrchestrator } from "./multicast-orchestrator.js";
|
|
4
|
+
import { endpointToMulticastConfig, hasMulticastCatalogBaseline, hasUnicastMediaRenditions, isMulticastOnlyCatalog, isRecoverableMulticastSignalReadError, mergeUrlMulticastPolicy, normalizeMulticastConfig, readPlayerMulticastConfig, requiresMulticastCapability, sameMulticastConfig, selectEndpointPacketIds, selectMulticastCandidate, catalogQualityLadder, urlOverrideBlocksMulticastCandidate, withMulticastEndpoints } from "./multicast-catalog-policy.js";
|
|
5
|
+
import { createMulticastSignalingReconciler, normalizeCatalogEndpoints } from "./multicast-signaling-reconciler.js";
|
|
4
6
|
import { MulticastSubscriptionPool } from "./multicast-subscription-pool.js";
|
|
5
7
|
import { endpointKey, selectMulticastTier } from "./multicast-tier.js";
|
|
6
|
-
import {
|
|
8
|
+
import { moqtPublisherPriority, moqtSubscriberPriority } from "./moqt-priority.js";
|
|
9
|
+
import { classifyStall, TransportStallDetector } from "./stall-detector.js";
|
|
7
10
|
import { makeSourceSwitchHandler, wireStarvationDetector } from "./takeover.js";
|
|
8
11
|
import { TransportManager } from "./transport-manager.js";
|
|
9
12
|
import { runUnicastFallback } from "./unicast-fallback.js";
|
|
10
13
|
declare const api: {
|
|
11
14
|
AdaptiveBitrateController: typeof AdaptiveBitrateController;
|
|
15
|
+
validateQualityLadder: typeof validateQualityLadder;
|
|
16
|
+
catalogQualityLadder: typeof catalogQualityLadder;
|
|
17
|
+
classifyStall: typeof classifyStall;
|
|
18
|
+
createMulticastSignalingReconciler: typeof createMulticastSignalingReconciler;
|
|
19
|
+
endpointToMulticastConfig: typeof endpointToMulticastConfig;
|
|
20
|
+
hasMulticastCatalogBaseline: typeof hasMulticastCatalogBaseline;
|
|
21
|
+
hasUnicastMediaRenditions: typeof hasUnicastMediaRenditions;
|
|
22
|
+
isRecoverableMulticastSignalReadError: typeof isRecoverableMulticastSignalReadError;
|
|
23
|
+
isMulticastOnlyCatalog: typeof isMulticastOnlyCatalog;
|
|
12
24
|
MulticastOrchestrator: typeof MulticastOrchestrator;
|
|
13
25
|
MulticastSubscriptionPool: typeof MulticastSubscriptionPool;
|
|
26
|
+
MOQT_PUBLISHER_PRIORITY: Readonly<{
|
|
27
|
+
catalog: import("./moqt-priority.js").MoqtPublisherPriority;
|
|
28
|
+
source: import("./moqt-priority.js").MoqtPublisherPriority;
|
|
29
|
+
repair: import("./moqt-priority.js").MoqtPublisherPriority;
|
|
30
|
+
}>;
|
|
31
|
+
MOQT_SUBSCRIBER_PRIORITY: Readonly<{
|
|
32
|
+
catalog: import("./moqt-priority.js").MoqtSubscriberPriority;
|
|
33
|
+
deadlineRepair: import("./moqt-priority.js").MoqtSubscriberPriority;
|
|
34
|
+
audio: import("./moqt-priority.js").MoqtSubscriberPriority;
|
|
35
|
+
video: import("./moqt-priority.js").MoqtSubscriberPriority;
|
|
36
|
+
backgroundRepair: import("./moqt-priority.js").MoqtSubscriberPriority;
|
|
37
|
+
}>;
|
|
38
|
+
moqtPublisherPriority: typeof moqtPublisherPriority;
|
|
39
|
+
moqtSubscriberPriority: typeof moqtSubscriberPriority;
|
|
14
40
|
TransportManager: typeof TransportManager;
|
|
15
41
|
TransportStallDetector: typeof TransportStallDetector;
|
|
16
42
|
endpointKey: typeof endpointKey;
|
|
@@ -18,11 +44,22 @@ declare const api: {
|
|
|
18
44
|
isUsableMulticastEndpoint: typeof isUsableMulticastEndpoint;
|
|
19
45
|
isValidMulticastGroupAddress: typeof isValidMulticastGroupAddress;
|
|
20
46
|
makeSourceSwitchHandler: typeof makeSourceSwitchHandler;
|
|
47
|
+
mergeUrlMulticastPolicy: typeof mergeUrlMulticastPolicy;
|
|
21
48
|
multicastEndpointKey: typeof multicastEndpointKey;
|
|
49
|
+
normalizeCatalogEndpoints: typeof normalizeCatalogEndpoints;
|
|
50
|
+
normalizeMulticastConfig: typeof normalizeMulticastConfig;
|
|
22
51
|
normalizeMulticastEndpoint: typeof normalizeMulticastEndpoint;
|
|
52
|
+
readPlayerMulticastConfig: typeof readPlayerMulticastConfig;
|
|
23
53
|
readUrlMulticastConfig: typeof readUrlMulticastConfig;
|
|
54
|
+
toWindowMulticastSubscribeConfig: typeof toWindowMulticastSubscribeConfig;
|
|
55
|
+
requiresMulticastCapability: typeof requiresMulticastCapability;
|
|
24
56
|
runUnicastFallback: typeof runUnicastFallback;
|
|
57
|
+
sameMulticastConfig: typeof sameMulticastConfig;
|
|
58
|
+
selectEndpointPacketIds: typeof selectEndpointPacketIds;
|
|
59
|
+
selectMulticastCandidate: typeof selectMulticastCandidate;
|
|
25
60
|
selectMulticastTier: typeof selectMulticastTier;
|
|
61
|
+
urlOverrideBlocksMulticastCandidate: typeof urlOverrideBlocksMulticastCandidate;
|
|
62
|
+
withMulticastEndpoints: typeof withMulticastEndpoints;
|
|
26
63
|
wireStarvationDetector: typeof wireStarvationDetector;
|
|
27
64
|
};
|
|
28
65
|
export default api;
|
package/dist/no-modules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-modules.d.ts","sourceRoot":"","sources":["../src/no-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"no-modules.d.ts","sourceRoot":"","sources":["../src/no-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,gCAAgC,EAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mCAAmC,EACnC,sBAAsB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,kCAAkC,EAClC,yBAAyB,EACzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAGN,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,QAAA,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCR,CAAC;AASF,eAAe,GAAG,CAAC"}
|
package/dist/no-modules.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
import { AdaptiveBitrateController } from "./abr-controller.js";
|
|
2
|
-
import { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, } from "./endpoint-config.js";
|
|
1
|
+
import { AdaptiveBitrateController, validateQualityLadder } from "./abr-controller.js";
|
|
2
|
+
import { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, toWindowMulticastSubscribeConfig, } from "./endpoint-config.js";
|
|
3
3
|
import { MulticastOrchestrator } from "./multicast-orchestrator.js";
|
|
4
|
+
import { endpointToMulticastConfig, hasMulticastCatalogBaseline, hasUnicastMediaRenditions, isMulticastOnlyCatalog, isRecoverableMulticastSignalReadError, mergeUrlMulticastPolicy, normalizeMulticastConfig, readPlayerMulticastConfig, requiresMulticastCapability, sameMulticastConfig, selectEndpointPacketIds, selectMulticastCandidate, catalogQualityLadder, urlOverrideBlocksMulticastCandidate, withMulticastEndpoints, } from "./multicast-catalog-policy.js";
|
|
5
|
+
import { createMulticastSignalingReconciler, normalizeCatalogEndpoints, } from "./multicast-signaling-reconciler.js";
|
|
4
6
|
import { MulticastSubscriptionPool } from "./multicast-subscription-pool.js";
|
|
5
7
|
import { endpointKey, selectMulticastTier } from "./multicast-tier.js";
|
|
6
|
-
import {
|
|
8
|
+
import { MOQT_PUBLISHER_PRIORITY, MOQT_SUBSCRIBER_PRIORITY, moqtPublisherPriority, moqtSubscriberPriority, } from "./moqt-priority.js";
|
|
9
|
+
import { classifyStall, TransportStallDetector } from "./stall-detector.js";
|
|
7
10
|
import { makeSourceSwitchHandler, wireStarvationDetector } from "./takeover.js";
|
|
8
11
|
import { TransportManager } from "./transport-manager.js";
|
|
9
12
|
import { runUnicastFallback } from "./unicast-fallback.js";
|
|
10
13
|
const api = {
|
|
11
14
|
AdaptiveBitrateController,
|
|
15
|
+
validateQualityLadder,
|
|
16
|
+
catalogQualityLadder,
|
|
17
|
+
classifyStall,
|
|
18
|
+
createMulticastSignalingReconciler,
|
|
19
|
+
endpointToMulticastConfig,
|
|
20
|
+
hasMulticastCatalogBaseline,
|
|
21
|
+
hasUnicastMediaRenditions,
|
|
22
|
+
isRecoverableMulticastSignalReadError,
|
|
23
|
+
isMulticastOnlyCatalog,
|
|
12
24
|
MulticastOrchestrator,
|
|
13
25
|
MulticastSubscriptionPool,
|
|
26
|
+
MOQT_PUBLISHER_PRIORITY,
|
|
27
|
+
MOQT_SUBSCRIBER_PRIORITY,
|
|
28
|
+
moqtPublisherPriority,
|
|
29
|
+
moqtSubscriberPriority,
|
|
14
30
|
TransportManager,
|
|
15
31
|
TransportStallDetector,
|
|
16
32
|
endpointKey,
|
|
@@ -18,11 +34,22 @@ const api = {
|
|
|
18
34
|
isUsableMulticastEndpoint,
|
|
19
35
|
isValidMulticastGroupAddress,
|
|
20
36
|
makeSourceSwitchHandler,
|
|
37
|
+
mergeUrlMulticastPolicy,
|
|
21
38
|
multicastEndpointKey,
|
|
39
|
+
normalizeCatalogEndpoints,
|
|
40
|
+
normalizeMulticastConfig,
|
|
22
41
|
normalizeMulticastEndpoint,
|
|
42
|
+
readPlayerMulticastConfig,
|
|
23
43
|
readUrlMulticastConfig,
|
|
44
|
+
toWindowMulticastSubscribeConfig,
|
|
45
|
+
requiresMulticastCapability,
|
|
24
46
|
runUnicastFallback,
|
|
47
|
+
sameMulticastConfig,
|
|
48
|
+
selectEndpointPacketIds,
|
|
49
|
+
selectMulticastCandidate,
|
|
25
50
|
selectMulticastTier,
|
|
51
|
+
urlOverrideBlocksMulticastCandidate,
|
|
52
|
+
withMulticastEndpoints,
|
|
26
53
|
wireStarvationDetector,
|
|
27
54
|
};
|
|
28
55
|
Object.defineProperty(globalThis, "__MmtTransport", {
|
package/dist/no-modules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-modules.js","sourceRoot":"","sources":["../src/no-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"no-modules.js","sourceRoot":"","sources":["../src/no-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,gCAAgC,GAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mCAAmC,EACnC,sBAAsB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,kCAAkC,EAClC,yBAAyB,GACzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,GAAG,GAAG;IACX,yBAAyB;IACzB,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;IACb,kCAAkC;IAClC,yBAAyB;IACzB,2BAA2B;IAC3B,yBAAyB;IACzB,qCAAqC;IACrC,sBAAsB;IACtB,qBAAqB;IACrB,yBAAyB;IACzB,uBAAuB;IACvB,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,gBAAgB;IAChB,sBAAsB;IACtB,WAAW;IACX,6BAA6B;IAC7B,yBAAyB;IACzB,4BAA4B;IAC5B,uBAAuB;IACvB,uBAAuB;IACvB,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,0BAA0B;IAC1B,yBAAyB;IACzB,sBAAsB;IACtB,gCAAgC;IAChC,2BAA2B;IAC3B,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,wBAAwB;IACxB,mBAAmB;IACnB,mCAAmC;IACnC,sBAAsB;IACtB,sBAAsB;CACtB,CAAC;AAEF,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE;IACnD,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;CACzB,CAAC,CAAC;AAEH,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WindowMulticastSubscription } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* True when `subscription` delivers packets in batches through the `packets`
|
|
4
|
+
* provider extension (BLO-36599).
|
|
5
|
+
*
|
|
6
|
+
* The pim window-multicast-bridge (0.2.0 and later) advertises the extension
|
|
7
|
+
* in `eventTypes`. It builds only the events some listener asked for, so a
|
|
8
|
+
* consumer that listens to `packets` alone gets one event per reader batch
|
|
9
|
+
* instead of one DOM event per packet. A provider without the field, or one
|
|
10
|
+
* that does not list `packets`, is a v1 provider: listen to `bytes`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function subscriptionDeliversPacketBatches(subscription: Pick<WindowMulticastSubscription, "eventTypes">): boolean;
|
|
13
|
+
//# sourceMappingURL=packet-batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet-batch.d.ts","sourceRoot":"","sources":["../src/packet-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,IAAI,CAAC,2BAA2B,EAAE,YAAY,CAAC,GAC3D,OAAO,CAET"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when `subscription` delivers packets in batches through the `packets`
|
|
3
|
+
* provider extension (BLO-36599).
|
|
4
|
+
*
|
|
5
|
+
* The pim window-multicast-bridge (0.2.0 and later) advertises the extension
|
|
6
|
+
* in `eventTypes`. It builds only the events some listener asked for, so a
|
|
7
|
+
* consumer that listens to `packets` alone gets one event per reader batch
|
|
8
|
+
* instead of one DOM event per packet. A provider without the field, or one
|
|
9
|
+
* that does not list `packets`, is a v1 provider: listen to `bytes`.
|
|
10
|
+
*/
|
|
11
|
+
export function subscriptionDeliversPacketBatches(subscription) {
|
|
12
|
+
return subscription.eventTypes?.includes("packets") === true;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=packet-batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet-batch.js","sourceRoot":"","sources":["../src/packet-batch.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,iCAAiC,CAChD,YAA6D;IAE7D,OAAO,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;AAC9D,CAAC"}
|
package/dist/stall-detector.d.ts
CHANGED
|
@@ -11,6 +11,16 @@ export interface StallDetectorConfig {
|
|
|
11
11
|
onRecovery(): void;
|
|
12
12
|
now?: () => number;
|
|
13
13
|
}
|
|
14
|
+
export interface PlayerStallSnapshot {
|
|
15
|
+
liveQ?: number | null;
|
|
16
|
+
decodeCallsDelta?: number | null;
|
|
17
|
+
fps?: number | null;
|
|
18
|
+
}
|
|
19
|
+
export interface PlayerStallClassification {
|
|
20
|
+
verdict: "DECODE-BOUND" | "PIPELINE-STARVED" | "STARVED-OR-SLOW" | "INDETERMINATE";
|
|
21
|
+
reason: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function classifyStall({ liveQ, decodeCallsDelta, fps, }?: PlayerStallSnapshot): PlayerStallClassification;
|
|
14
24
|
export declare class TransportStallDetector {
|
|
15
25
|
#private;
|
|
16
26
|
private readonly config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detector.d.ts","sourceRoot":"","sources":["../src/stall-detector.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,IAAI,IAAI,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,qBAAa,sBAAsB;;IAOtB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,mBAAmB;IAKxD,IAAI,SAAS,IAAI,OAAO,CAA0B;IAElD,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IA4B3C,KAAK,IAAI,IAAI;CAKb"}
|
|
1
|
+
{"version":3,"file":"stall-detector.d.ts","sourceRoot":"","sources":["../src/stall-detector.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,IAAI,IAAI,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACzC,OAAO,EAAE,cAAc,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,eAAe,CAAC;IACnF,MAAM,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,EAC7B,KAAY,EACZ,gBAAuB,EACvB,GAAU,GACV,GAAE,mBAAwB,GAAG,yBAAyB,CAoBtD;AAED,qBAAa,sBAAsB;;IAOtB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,mBAAmB;IAKxD,IAAI,SAAS,IAAI,OAAO,CAA0B;IAElD,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IA4B3C,KAAK,IAAI,IAAI;CAKb"}
|
package/dist/stall-detector.js
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
export function classifyStall({ liveQ = null, decodeCallsDelta = null, fps = null, } = {}) {
|
|
2
|
+
if (liveQ != null && liveQ >= 20) {
|
|
3
|
+
return {
|
|
4
|
+
verdict: "DECODE-BOUND",
|
|
5
|
+
reason: `decode queue backlogged now (liveQ=${liveQ})`,
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
if (liveQ != null && liveQ <= 2 && decodeCallsDelta != null && decodeCallsDelta <= 1) {
|
|
9
|
+
return {
|
|
10
|
+
verdict: "PIPELINE-STARVED",
|
|
11
|
+
reason: `queue empty (liveQ=${liveQ}) and decode flatlined (Δcalls=${decodeCallsDelta}) — nothing reaching the decoder; suspect delivery/FEC/failback, not decode perf`,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
if (fps != null && fps < 45) {
|
|
15
|
+
return {
|
|
16
|
+
verdict: "STARVED-OR-SLOW",
|
|
17
|
+
reason: `low decode rate (fps=${fps}) without a queue/flatline signal to disambiguate`,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { verdict: "INDETERMINATE", reason: "no signal supports a verdict" };
|
|
21
|
+
}
|
|
1
22
|
export class TransportStallDetector {
|
|
2
23
|
config;
|
|
3
24
|
#last = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detector.js","sourceRoot":"","sources":["../src/stall-detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stall-detector.js","sourceRoot":"","sources":["../src/stall-detector.ts"],"names":[],"mappings":"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"}
|
package/dist/takeover.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export declare function makeSourceSwitchHandler(options: {
|
|
|
10
10
|
warn?(message: string): void;
|
|
11
11
|
}): (source: string) => Promise<void>;
|
|
12
12
|
export interface LossArcSession {
|
|
13
|
+
/** TrackSession state. Optional so non-TrackSession hosts keep the generic API. */
|
|
14
|
+
readonly state?: string;
|
|
13
15
|
lossDetected(): void;
|
|
14
16
|
lossRecovered(): void;
|
|
15
17
|
}
|
|
@@ -39,6 +41,7 @@ export declare function wireStarvationDetector(args: {
|
|
|
39
41
|
trackName: string;
|
|
40
42
|
fecInterleaveMs: number;
|
|
41
43
|
fecK: number;
|
|
44
|
+
deliveryWindowMs?: number;
|
|
42
45
|
makeDetector(config: {
|
|
43
46
|
windowMs: number;
|
|
44
47
|
onStarvation(): void;
|
package/dist/takeover.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"takeover.d.ts","sourceRoot":"","sources":["../src/takeover.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAAG,iBAAiB,IAAI,IAAI,CAAC;CAAE;AAEnE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAChD,wBAAwB,EAAE,OAAO,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACnD,oBAAoB,CAAC,IAAI,IAAI,CAAC;IAC9B,eAAe,CAAC,IAAI,IAAI,CAAC;IACzB,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAmBpC;AAED,MAAM,WAAW,cAAc;
|
|
1
|
+
{"version":3,"file":"takeover.d.ts","sourceRoot":"","sources":["../src/takeover.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAAG,iBAAiB,IAAI,IAAI,CAAC;CAAE;AAEnE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAChD,wBAAwB,EAAE,OAAO,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACnD,oBAAoB,CAAC,IAAI,IAAI,CAAC;IAC9B,eAAe,CAAC,IAAI,IAAI,CAAC;IACzB,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAmBpC;AAED,MAAM,WAAW,cAAc;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,IAAI,IAAI,CAAC;IACrB,aAAa,IAAI,IAAI,CAAC;CACtB;AACD,MAAM,WAAW,qBAAqB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,sBAAsB;IAAG,MAAM,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAAC,KAAK,IAAI,IAAI,CAAC;CAAE;AACzG,MAAM,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAEvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,IAAI,IAAI,CAAC;QAAC,UAAU,IAAI,IAAI,CAAA;KAAE,GAAG,iBAAiB,CAAC;CACxG,GAAG,iBAAiB,GAAG,IAAI,CAO3B;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,IAAI,IAAI,CAAC;QAAC,UAAU,IAAI,IAAI,CAAA;KAAE,GAAG,sBAAsB,CAAC;IAC7G,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAyCzC"}
|
package/dist/takeover.js
CHANGED
|
@@ -31,13 +31,46 @@ export function wireStallDetector(args) {
|
|
|
31
31
|
export async function wireStarvationDetector(args) {
|
|
32
32
|
if (!args.session || args.fecInterleaveMs <= 0 || args.fecK <= 0)
|
|
33
33
|
return null;
|
|
34
|
+
const windowMs = args.deliveryWindowMs ?? Math.ceil(args.fecInterleaveMs * 3);
|
|
35
|
+
if (!Number.isFinite(windowMs) || windowMs <= 0) {
|
|
36
|
+
args.warn?.(`Unable to create starvation detector for ${args.trackName}: invalid delivery window ${windowMs}`);
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
34
39
|
const detector = wireStallDetector({
|
|
35
40
|
session: args.session,
|
|
36
|
-
windowMs
|
|
41
|
+
windowMs,
|
|
37
42
|
makeDetector: args.makeDetector,
|
|
38
43
|
});
|
|
39
44
|
if (!detector)
|
|
40
45
|
args.warn?.(`Unable to create starvation detector for ${args.trackName}`);
|
|
41
|
-
|
|
46
|
+
if (!detector || typeof args.session.state !== "string")
|
|
47
|
+
return detector;
|
|
48
|
+
// Stats flow while TrackSession is still `joining`. Feeding them directly can
|
|
49
|
+
// age a starvation episode past its window before the first multicast RAP,
|
|
50
|
+
// causing the first post-cutover sample to flip a healthy session to
|
|
51
|
+
// `failing`. Start with a fresh baseline only once multicast/AMT is primary;
|
|
52
|
+
// retain the detector through `failing` so it can observe recovery.
|
|
53
|
+
let active = false;
|
|
54
|
+
return {
|
|
55
|
+
update(snapshot) {
|
|
56
|
+
const state = args.session.state;
|
|
57
|
+
const shouldObserve = state === "multicast" || state === "amt" || state === "failing";
|
|
58
|
+
if (!shouldObserve) {
|
|
59
|
+
if (active)
|
|
60
|
+
detector.reset();
|
|
61
|
+
active = false;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!active) {
|
|
65
|
+
detector.reset();
|
|
66
|
+
active = true;
|
|
67
|
+
}
|
|
68
|
+
detector.update(snapshot);
|
|
69
|
+
},
|
|
70
|
+
reset() {
|
|
71
|
+
active = false;
|
|
72
|
+
detector.reset();
|
|
73
|
+
},
|
|
74
|
+
};
|
|
42
75
|
}
|
|
43
76
|
//# sourceMappingURL=takeover.js.map
|
package/dist/takeover.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"takeover.js","sourceRoot":"","sources":["../src/takeover.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,OAOvC;IACA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE;QACvB,IAAI,MAAM,KAAK,WAAW;YAAE,OAAO;QACnC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACvC,IAAI,CAAC,+EAA+E,CAAC,CAAC;YACtF,OAAO;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,IAAI,CAAC,oFAAoF,CAAC,CAAC;YAC3F,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,OAAO;QACR,CAAC;QACD,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAC1E,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC7B,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAClC,CAAC,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"takeover.js","sourceRoot":"","sources":["../src/takeover.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* - Seamless transport switching with session continuity
|
|
20
20
|
* - Unified FEC/ABR pipeline across all transport modes
|
|
21
21
|
*/
|
|
22
|
-
import type {
|
|
22
|
+
import type { TransportConnectConfig, TransportCapabilities, TransportState, QualityLevel } from "./types.js";
|
|
23
23
|
import { type MulticastTierPacket, type OrchestratorCommand, type OrchestratorOptions } from "./multicast-orchestrator.js";
|
|
24
24
|
import type { MulticastTierEndpoint } from "./multicast-tier.js";
|
|
25
25
|
/**
|
|
@@ -27,15 +27,13 @@ import type { MulticastTierEndpoint } from "./multicast-tier.js";
|
|
|
27
27
|
*
|
|
28
28
|
* Manages transport connections with automatic mode selection:
|
|
29
29
|
* WebTransport -> window.multicast -> AMT proxy -> WebSocket
|
|
30
|
-
*
|
|
31
|
-
* Renamed from SSMTransportManager - the old name is preserved
|
|
32
|
-
* as a deprecated alias for backwards compatibility.
|
|
33
30
|
*/
|
|
34
31
|
export declare class TransportManager {
|
|
35
32
|
private state;
|
|
36
33
|
private capabilities;
|
|
37
34
|
private subscription;
|
|
38
35
|
private driad;
|
|
36
|
+
/** Built by `connect()` from the caller's ladder; there is no built-in one. */
|
|
39
37
|
private abr;
|
|
40
38
|
private multicastOrchestrator;
|
|
41
39
|
private onOrchestratorCommand?;
|
|
@@ -43,7 +41,6 @@ export declare class TransportManager {
|
|
|
43
41
|
private onPacket?;
|
|
44
42
|
private onError?;
|
|
45
43
|
private onStateChange?;
|
|
46
|
-
constructor();
|
|
47
44
|
private getWindow;
|
|
48
45
|
private getWindowMulticastGateway;
|
|
49
46
|
private getGatewayCapabilities;
|
|
@@ -59,8 +56,15 @@ export declare class TransportManager {
|
|
|
59
56
|
* 1. window.multicast gateway bytes
|
|
60
57
|
* 2. AMT proxy (specified or discovered via DRIAD)
|
|
61
58
|
* 3. MOQ WebTransport (final fallback)
|
|
59
|
+
*
|
|
60
|
+
* The ABR ladder (`abrLadder`) and initial rendition (`initialQuality`)
|
|
61
|
+
* are checked first, before anything is torn down. A config that fails is
|
|
62
|
+
* refused with the same shape as an invalid endpoint, the error to the
|
|
63
|
+
* error callback and `false` resolved; unlike one, it is caught before the
|
|
64
|
+
* live subscription closes, so a refused reconnect leaves that subscription,
|
|
65
|
+
* its state and any connect already in flight untouched.
|
|
62
66
|
*/
|
|
63
|
-
connect(config:
|
|
67
|
+
connect(config: TransportConnectConfig): Promise<boolean>;
|
|
64
68
|
/**
|
|
65
69
|
* Connect via the lowercase window.multicast bytes gateway.
|
|
66
70
|
*/
|
|
@@ -82,16 +86,24 @@ export declare class TransportManager {
|
|
|
82
86
|
*/
|
|
83
87
|
getState(): TransportState;
|
|
84
88
|
/**
|
|
85
|
-
*
|
|
89
|
+
* The rung of the live connection's `abrLadder` ABR is on; `null` when
|
|
90
|
+
* there is no ladder (before `connect(config)` succeeds, after
|
|
91
|
+
* `disconnect()`, or after a reconnect that was torn down and bailed).
|
|
86
92
|
*/
|
|
87
|
-
getQuality(): QualityLevel;
|
|
93
|
+
getQuality(): QualityLevel | null;
|
|
88
94
|
/**
|
|
89
|
-
* Force
|
|
95
|
+
* Force the rung named `name` of the live connection's `abrLadder`.
|
|
96
|
+
* Throws `Error` when there is no ladder (see `getQuality()`), and
|
|
97
|
+
* `RangeError` when the ladder has no rung of that name; it never falls
|
|
98
|
+
* back to another rung.
|
|
90
99
|
*/
|
|
91
100
|
setQuality(name: string): void;
|
|
101
|
+
/** The controller `connect()` built; before it there is no ladder to adapt over. */
|
|
102
|
+
private requireAbr;
|
|
92
103
|
/** Configures multicast-only ABR while leaving the caller's MoQ ABR untouched. */
|
|
93
104
|
configureMulticastTiers(options: OrchestratorOptions, onCommand?: (command: OrchestratorCommand) => void): MulticastTierEndpoint | undefined;
|
|
94
105
|
recordMulticastGoodput(bitrate: number | undefined): OrchestratorCommand | undefined;
|
|
106
|
+
recordMulticastHeadroom(healthy: boolean): OrchestratorCommand | undefined;
|
|
95
107
|
recordMulticastTierPacket(packet: MulticastTierPacket): OrchestratorCommand | undefined;
|
|
96
108
|
pollMulticastTierSwitch(): OrchestratorCommand | undefined;
|
|
97
109
|
/**
|
|
@@ -113,12 +125,4 @@ export declare class TransportManager {
|
|
|
113
125
|
private dispatchOrchestratorCommand;
|
|
114
126
|
}
|
|
115
127
|
export declare const transportManager: TransportManager;
|
|
116
|
-
/**
|
|
117
|
-
* @deprecated Use `TransportManager` instead. This alias is preserved for backwards compatibility.
|
|
118
|
-
*/
|
|
119
|
-
export declare const SSMTransportManager: typeof TransportManager;
|
|
120
|
-
/**
|
|
121
|
-
* @deprecated Use `transportManager` instead. This alias is preserved for backwards compatibility.
|
|
122
|
-
*/
|
|
123
|
-
export declare const ssmTransport: TransportManager;
|
|
124
128
|
//# sourceMappingURL=transport-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport-manager.d.ts","sourceRoot":"","sources":["../src/transport-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"transport-manager.d.ts","sourceRoot":"","sources":["../src/transport-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAEX,sBAAsB,EAEtB,qBAAqB,EACrB,cAAc,EACd,YAAY,EAIZ,MAAM,YAAY,CAAC;AAGpB,OAAO,EAEN,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAIjE;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,KAAK,CAMX;IAEF,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,KAAK,CAAwB;IACrC,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAA0C;IACrD,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,qBAAqB,CAAC,CAAyC;IACvE,OAAO,CAAC,oBAAoB,CAAK;IAEjC,OAAO,CAAC,QAAQ,CAAC,CAA8B;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAyB;IACzC,OAAO,CAAC,aAAa,CAAC,CAAkC;IAExD,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,yBAAyB;YAInB,sBAAsB;YActB,oBAAoB;IAUlC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAoB1D;;;;;;;;;;;;;;OAcG;IACG,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgG/D;;OAEG;YACW,sBAAsB;IAmDpC;;OAEG;YACW,UAAU;IAgCxB;;OAEG;YACW,eAAe;IAkF7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,QAAQ,IAAI,cAAc;IAI1B;;;;OAIG;IACH,UAAU,IAAI,YAAY,GAAG,IAAI;IAIjC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM;IAIvB,oFAAoF;IACpF,OAAO,CAAC,UAAU;IAKlB,kFAAkF;IAClF,uBAAuB,CACtB,OAAO,EAAE,mBAAmB,EAC5B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAChD,qBAAqB,GAAG,SAAS;IAOpC,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS;IAIpF,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS;IAI1E,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,SAAS;IAIvF,uBAAuB,IAAI,mBAAmB,GAAG,SAAS;IAI1D;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;IAIvD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IAIjD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI;IAI1D;;OAEG;IACH,UAAU;IAoBV,OAAO,CAAC,2BAA2B;CAInC;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|