@blockcast/mmt-container 2.2.0-main.73af0eedcbc8 → 2.2.0-main.75b39a2cdddf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -17
- package/dist/browser-runtime.js +1001 -215
- package/dist/browser-runtime.js.map +4 -4
- package/dist/carp-catalog.js.map +1 -1
- package/dist/catalog-fec-params.d.ts +17 -1
- package/dist/catalog-fec-params.d.ts.map +1 -1
- package/dist/catalog-fec-params.js +15 -0
- package/dist/catalog-fec-params.js.map +2 -2
- package/dist/catalog-network-source.js.map +1 -1
- package/dist/cmcd-producer.d.ts +60 -47
- package/dist/cmcd-producer.d.ts.map +1 -1
- package/dist/cmcd-producer.js +138 -109
- package/dist/cmcd-producer.js.map +2 -2
- package/dist/delivery-catalog.js +26 -16
- package/dist/delivery-catalog.js.map +2 -2
- package/dist/delta-fallback-config.js.map +1 -1
- package/dist/fec-manager.d.ts +33 -1
- package/dist/fec-manager.d.ts.map +1 -1
- package/dist/fec-manager.js +222 -6
- package/dist/fec-manager.js.map +2 -2
- package/dist/fec-state.js.map +1 -1
- package/dist/fec-worker-setup.d.ts +1 -1
- package/dist/fec-worker-setup.js +1 -1
- package/dist/fec-worker-setup.js.map +1 -1
- package/dist/held-layer-admission.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +2 -2
- package/dist/iso-block-locator.d.ts +9 -0
- package/dist/iso-block-locator.d.ts.map +1 -1
- package/dist/iso-block-locator.js +17 -0
- package/dist/iso-block-locator.js.map +2 -2
- package/dist/iso-bmff-timing.d.ts +10 -1
- package/dist/iso-bmff-timing.d.ts.map +1 -1
- package/dist/iso-bmff-timing.js +36 -2
- package/dist/iso-bmff-timing.js.map +2 -2
- package/dist/media-router.js.map +1 -1
- package/dist/mfu-reassembler.js +12 -19
- package/dist/mfu-reassembler.js.map +2 -2
- package/dist/mmtp-container-parser.d.ts +58 -10
- package/dist/mmtp-container-parser.d.ts.map +1 -1
- package/dist/mmtp-container-parser.js +105 -34
- package/dist/mmtp-container-parser.js.map +2 -2
- package/dist/mmtp-container-parser.no-modules.js +229 -51
- package/dist/mmtp-container-parser.no-modules.js.map +3 -3
- package/dist/mmtp-decode-pipeline.js +104 -34
- package/dist/mmtp-decode-pipeline.js.map +2 -2
- package/dist/mmtp-fec-session.d.ts +41 -3
- package/dist/mmtp-fec-session.d.ts.map +1 -1
- package/dist/mmtp-fec-session.js +118 -13
- package/dist/mmtp-fec-session.js.map +3 -3
- package/dist/mmtp-router.d.ts +18 -1
- package/dist/mmtp-router.d.ts.map +1 -1
- package/dist/mmtp-router.js +323 -64
- package/dist/mmtp-router.js.map +2 -2
- package/dist/multicast-auth-catalog.js.map +1 -1
- package/dist/multicast-input.js.map +1 -1
- package/dist/multicast-manager.js +547 -72
- package/dist/multicast-manager.js.map +2 -2
- package/dist/multicast-transport.js +28 -18
- package/dist/multicast-transport.js.map +2 -2
- package/dist/multicast-unwrap.js +12 -19
- package/dist/multicast-unwrap.js.map +2 -2
- package/dist/no-modules.js +222 -48
- package/dist/no-modules.js.map +3 -3
- package/dist/repair-fetch.js.map +1 -1
- package/dist/repair-layer-subscriptions.d.ts +82 -0
- package/dist/repair-layer-subscriptions.d.ts.map +1 -0
- package/dist/repair-layer-subscriptions.js +192 -0
- package/dist/repair-layer-subscriptions.js.map +7 -0
- package/dist/signaling.js.map +1 -1
- package/dist/timestamp-codec.js +12 -19
- package/dist/timestamp-codec.js.map +2 -2
- package/dist/track-session.d.ts +1 -1
- package/dist/track-session.js.map +1 -1
- package/dist/wasm-mfu-reassembler.js.map +1 -1
- package/dist/wasm-mmtp-container-parser.js +104 -34
- package/dist/wasm-mmtp-container-parser.js.map +2 -2
- package/package.json +8 -5
- package/schemas/catalog.schema.json +4 -0
- package/src/catalog-fec-params.ts +36 -1
- package/src/cmcd-producer.ts +189 -179
- package/src/fec-manager.ts +277 -6
- package/src/fec-worker-setup.ts +2 -2
- package/src/index.ts +18 -2
- package/src/iso-block-locator.ts +19 -0
- package/src/iso-bmff-timing.ts +40 -1
- package/src/mmtp-container-parser.ts +125 -19
- package/src/mmtp-fec-session.ts +115 -15
- package/src/mmtp-router.ts +350 -13
- package/src/repair-layer-subscriptions.ts +261 -0
- package/src/track-session.ts +1 -1
|
@@ -2,6 +2,7 @@ import { FEC_BLOCK_PROFILES, isFecBlockProfile, parseFecBlockProfile, type FecBi
|
|
|
2
2
|
import { catalogFecInterleaveMs, type FecInterleaveCatalog } from "@blockcast/mmt-fec";
|
|
3
3
|
import type { RepairLayerParams, RepairLayersResolution, RepairOverlayParams } from "./repair-layers.js";
|
|
4
4
|
import type { RepairTarget } from "./repair-fetch.js";
|
|
5
|
+
import type { MoqRepairDelivery } from "./repair-layer-subscriptions.js";
|
|
5
6
|
export { catalogFecInterleaveMs, type FecInterleaveCatalog };
|
|
6
7
|
export { FEC_BLOCK_PROFILES, isFecBlockProfile, parseFecBlockProfile, type FecBlockProfile };
|
|
7
8
|
export { validateFecCatalog, type FecCatalogCode, type FecCatalogInstance, type FecCatalogIssue, type FecCatalogOutcome, type FecCatalogReceiver, type FecCatalogReport, } from "@blockcast/mmt-base";
|
|
@@ -160,6 +161,9 @@ export type TrackFecParams = {
|
|
|
160
161
|
/** Keyframe overlay instances declared for this track. Present (possibly
|
|
161
162
|
* empty) whenever repairLayers is. */
|
|
162
163
|
repairOverlays?: readonly RepairOverlayParams[];
|
|
164
|
+
/** The publisher's MoQ delivery mode (`catalogTrackDeliveryMode`).
|
|
165
|
+
* Present whenever repairLayers is; `RepairLayerSubscriptions` reads it. */
|
|
166
|
+
deliveryMode?: MoqRepairDelivery;
|
|
163
167
|
fps?: number;
|
|
164
168
|
sampleRate?: number;
|
|
165
169
|
};
|
|
@@ -171,7 +175,7 @@ export type TrackFecParams = {
|
|
|
171
175
|
* A keyframe overlay is a separate FEC instance with its own K, its own
|
|
172
176
|
* RSB_length and its own RS_ID space, so it is never added here however it was
|
|
173
177
|
* joined. Counting it would overstate the base instance's P and misreport
|
|
174
|
-
* CMCD `
|
|
178
|
+
* CMCD `com.blockcast-fp`.
|
|
175
179
|
*
|
|
176
180
|
* Falls back to P_0 when the track declares no layers, which is the
|
|
177
181
|
* single-layer identity rather than a default: with one layer, P_0 is the
|
|
@@ -191,6 +195,18 @@ export declare function catalogTrackFecUnavailable(catalog: RepairLayerCatalog |
|
|
|
191
195
|
* receiver then joins none of its repair tracks. Never throws.
|
|
192
196
|
*/
|
|
193
197
|
export declare function resolveRepairLayers(catalog: RepairLayerCatalog | undefined, source: string | CatalogTrackRef): RepairLayersResolution | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* The publisher's MoQ delivery mode for one source track: `deliveryMode` on
|
|
200
|
+
* its base track entry (the hang rendition or MSF `tracks[]` entry its FEC
|
|
201
|
+
* binds to). `stream` means QUIC retransmits, so the receiver subscribes no
|
|
202
|
+
* repair track. Absent or any other value is `datagram`, FFmpeg's
|
|
203
|
+
* `moq_delivery_mode` default: a receiver never silently drops repair on a
|
|
204
|
+
* lossy path. When a track is declared both as a hang rendition and as an
|
|
205
|
+
* MSF `tracks[]` entry, the rendition is authoritative: a `deliveryMode` on
|
|
206
|
+
* the shadowed `tracks[]` entry is not read (fails safe to `datagram`).
|
|
207
|
+
* Never throws.
|
|
208
|
+
*/
|
|
209
|
+
export declare function catalogTrackDeliveryMode(catalog: RepairLayerCatalog | undefined, source: string | CatalogTrackRef): MoqRepairDelivery;
|
|
194
210
|
/**
|
|
195
211
|
* The on-demand repair target of one source track: its base layer 0 repair
|
|
196
212
|
* track and the two catalog priorities draft-ramadan-moq-fec §11.4.5 derives
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-fec-params.d.ts","sourceRoot":"","sources":["../src/catalog-fec-params.ts"],"names":[],"mappings":"AAeA,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EAEpB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EAEpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEvF,OAAO,KAAK,EACX,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog-fec-params.d.ts","sourceRoot":"","sources":["../src/catalog-fec-params.ts"],"names":[],"mappings":"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"}
|
|
@@ -688,6 +688,19 @@ function resolveRepairLayers(catalog, source) {
|
|
|
688
688
|
totalBaseRepairSymbols: binding.totalBaseRepairSymbols
|
|
689
689
|
};
|
|
690
690
|
}
|
|
691
|
+
function valueAt(catalog, pointer) {
|
|
692
|
+
let node = catalog;
|
|
693
|
+
for (const segment of pointer.split("/").slice(1)) {
|
|
694
|
+
if (typeof node !== "object" || node === null) return void 0;
|
|
695
|
+
node = node[segment.replace(/~1/g, "/").replace(/~0/g, "~")];
|
|
696
|
+
}
|
|
697
|
+
return node;
|
|
698
|
+
}
|
|
699
|
+
function catalogTrackDeliveryMode(catalog, source) {
|
|
700
|
+
const binding = bindingOf(catalog, source);
|
|
701
|
+
const entry = binding ? valueAt(catalog, binding.pointer) : void 0;
|
|
702
|
+
return entry?.deliveryMode === "stream" ? "stream" : "datagram";
|
|
703
|
+
}
|
|
691
704
|
function moqtPriority(value) {
|
|
692
705
|
return Number.isSafeInteger(value) && value >= 0 && value <= 255 ? value : null;
|
|
693
706
|
}
|
|
@@ -731,6 +744,7 @@ function fecParams(catalog, track, fps, sampleRate) {
|
|
|
731
744
|
repairTrackName: base.repairTrack,
|
|
732
745
|
repairLayers: repair.baseLayers,
|
|
733
746
|
repairOverlays: repair.overlays,
|
|
747
|
+
deliveryMode: catalogTrackDeliveryMode(catalog, track),
|
|
734
748
|
...mediaRate
|
|
735
749
|
};
|
|
736
750
|
}
|
|
@@ -789,6 +803,7 @@ export {
|
|
|
789
803
|
catalogGroupDurationMs,
|
|
790
804
|
catalogKeyframeCadenceMs,
|
|
791
805
|
catalogRepairTarget,
|
|
806
|
+
catalogTrackDeliveryMode,
|
|
792
807
|
catalogTrackFecUnavailable,
|
|
793
808
|
isFecBlockProfile,
|
|
794
809
|
joinedRepairSymbolCount,
|