@blockcast/mmt-container 0.1.0-main.149f78a4adae
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 +432 -0
- package/dist/.build-stamp +0 -0
- package/dist/__tests__/test-utils.d.ts +71 -0
- package/dist/__tests__/test-utils.d.ts.map +1 -0
- package/dist/align.d.ts +148 -0
- package/dist/align.d.ts.map +1 -0
- package/dist/align.js +88 -0
- package/dist/align.js.map +7 -0
- package/dist/audio-init-parser.d.ts +66 -0
- package/dist/audio-init-parser.d.ts.map +1 -0
- package/dist/audio-init-parser.js +118 -0
- package/dist/audio-init-parser.js.map +7 -0
- package/dist/audio-ring-buffer.d.ts +50 -0
- package/dist/audio-ring-buffer.d.ts.map +1 -0
- package/dist/audio-ring-buffer.js +93 -0
- package/dist/audio-ring-buffer.js.map +7 -0
- package/dist/authored-timing.d.ts +32 -0
- package/dist/authored-timing.d.ts.map +1 -0
- package/dist/authored-timing.js +32 -0
- package/dist/authored-timing.js.map +7 -0
- package/dist/browser-runtime.js +17109 -0
- package/dist/browser-runtime.js.map +7 -0
- package/dist/carp-catalog.d.ts +318 -0
- package/dist/carp-catalog.d.ts.map +1 -0
- package/dist/carp-catalog.js +549 -0
- package/dist/carp-catalog.js.map +7 -0
- package/dist/catalog-fec-params.d.ts +82 -0
- package/dist/catalog-fec-params.d.ts.map +1 -0
- package/dist/catalog-fec-params.js +66 -0
- package/dist/catalog-fec-params.js.map +7 -0
- package/dist/catalog-network-source.d.ts +19 -0
- package/dist/catalog-network-source.d.ts.map +1 -0
- package/dist/catalog-network-source.js +22 -0
- package/dist/catalog-network-source.js.map +7 -0
- package/dist/catalog-validator.d.ts +18 -0
- package/dist/catalog-validator.d.ts.map +1 -0
- package/dist/catalog-validator.js +7747 -0
- package/dist/catalog-validator.js.map +7 -0
- package/dist/cmaf-block-assembler.d.ts +168 -0
- package/dist/cmaf-block-assembler.d.ts.map +1 -0
- package/dist/cmaf-block-assembler.js +1755 -0
- package/dist/cmaf-block-assembler.js.map +7 -0
- package/dist/cmaf-group-batcher.d.ts +38 -0
- package/dist/cmaf-group-batcher.d.ts.map +1 -0
- package/dist/cmaf-group-batcher.js +195 -0
- package/dist/cmaf-group-batcher.js.map +7 -0
- package/dist/cmcd-producer.d.ts +104 -0
- package/dist/cmcd-producer.d.ts.map +1 -0
- package/dist/cmcd-producer.js +207 -0
- package/dist/cmcd-producer.js.map +7 -0
- package/dist/codec-utils.d.ts +235 -0
- package/dist/codec-utils.d.ts.map +1 -0
- package/dist/codec-utils.js +1225 -0
- package/dist/codec-utils.js.map +7 -0
- package/dist/fec-codec.d.ts +32 -0
- package/dist/fec-codec.d.ts.map +1 -0
- package/dist/fec-codec.js +47 -0
- package/dist/fec-codec.js.map +7 -0
- package/dist/fec-manager.d.ts +266 -0
- package/dist/fec-manager.d.ts.map +1 -0
- package/dist/fec-manager.js +1447 -0
- package/dist/fec-manager.js.map +7 -0
- package/dist/fec-starvation-detector.d.ts +59 -0
- package/dist/fec-starvation-detector.d.ts.map +1 -0
- package/dist/fec-starvation-detector.js +75 -0
- package/dist/fec-starvation-detector.js.map +7 -0
- package/dist/fec-worker-setup.d.ts +76 -0
- package/dist/fec-worker-setup.d.ts.map +1 -0
- package/dist/fec-worker-setup.js +603 -0
- package/dist/fec-worker-setup.js.map +7 -0
- package/dist/fmp4-completion.d.ts +30 -0
- package/dist/fmp4-completion.d.ts.map +1 -0
- package/dist/fmp4-completion.js +21 -0
- package/dist/fmp4-completion.js.map +7 -0
- package/dist/fmp4-reader.d.ts +37 -0
- package/dist/fmp4-reader.d.ts.map +1 -0
- package/dist/fmp4-reader.js +100 -0
- package/dist/fmp4-reader.js.map +7 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +330 -0
- package/dist/index.js.map +7 -0
- package/dist/iso-bmff-timing.d.ts +47 -0
- package/dist/iso-bmff-timing.d.ts.map +1 -0
- package/dist/iso-bmff-timing.js +526 -0
- package/dist/iso-bmff-timing.js.map +7 -0
- package/dist/loc.d.ts +68 -0
- package/dist/loc.d.ts.map +1 -0
- package/dist/loc.js +143 -0
- package/dist/loc.js.map +7 -0
- package/dist/manifest-auth-plan.d.ts +30 -0
- package/dist/manifest-auth-plan.d.ts.map +1 -0
- package/dist/manifest-auth-plan.js +1267 -0
- package/dist/manifest-auth-plan.js.map +7 -0
- package/dist/media-router.d.ts +338 -0
- package/dist/media-router.d.ts.map +1 -0
- package/dist/media-router.js +802 -0
- package/dist/media-router.js.map +7 -0
- package/dist/mfu-reassembler.d.ts +264 -0
- package/dist/mfu-reassembler.d.ts.map +1 -0
- package/dist/mfu-reassembler.js +2668 -0
- package/dist/mfu-reassembler.js.map +7 -0
- package/dist/mfu-reassembly-policy.d.ts +24 -0
- package/dist/mfu-reassembly-policy.d.ts.map +1 -0
- package/dist/mfu-reassembly-policy.js +99 -0
- package/dist/mfu-reassembly-policy.js.map +7 -0
- package/dist/mmtp-container-parser.d.ts +304 -0
- package/dist/mmtp-container-parser.d.ts.map +1 -0
- package/dist/mmtp-container-parser.js +5378 -0
- package/dist/mmtp-container-parser.js.map +7 -0
- package/dist/mmtp-container-parser.no-modules.js +7853 -0
- package/dist/mmtp-container-parser.no-modules.js.map +7 -0
- package/dist/mmtp-decode-pipeline.d.ts +96 -0
- package/dist/mmtp-decode-pipeline.d.ts.map +1 -0
- package/dist/mmtp-decode-pipeline.js +5589 -0
- package/dist/mmtp-decode-pipeline.js.map +7 -0
- package/dist/mmtp-router.d.ts +383 -0
- package/dist/mmtp-router.d.ts.map +1 -0
- package/dist/mmtp-router.js +8384 -0
- package/dist/mmtp-router.js.map +7 -0
- package/dist/mmtp-to-cmaf.d.ts +166 -0
- package/dist/mmtp-to-cmaf.d.ts.map +1 -0
- package/dist/mmtp-to-cmaf.js +781 -0
- package/dist/mmtp-to-cmaf.js.map +7 -0
- package/dist/multicast-auth-catalog.d.ts +115 -0
- package/dist/multicast-auth-catalog.d.ts.map +1 -0
- package/dist/multicast-auth-catalog.js +202 -0
- package/dist/multicast-auth-catalog.js.map +7 -0
- package/dist/multicast-input.d.ts +107 -0
- package/dist/multicast-input.d.ts.map +1 -0
- package/dist/multicast-input.js +256 -0
- package/dist/multicast-input.js.map +7 -0
- package/dist/multicast-manager.d.ts +330 -0
- package/dist/multicast-manager.d.ts.map +1 -0
- package/dist/multicast-manager.js +11032 -0
- package/dist/multicast-manager.js.map +7 -0
- package/dist/multicast-transport.d.ts +62 -0
- package/dist/multicast-transport.d.ts.map +1 -0
- package/dist/multicast-transport.js +338 -0
- package/dist/multicast-transport.js.map +7 -0
- package/dist/multicast-unwrap.d.ts +57 -0
- package/dist/multicast-unwrap.d.ts.map +1 -0
- package/dist/multicast-unwrap.js +384 -0
- package/dist/multicast-unwrap.js.map +7 -0
- package/dist/no-modules.d.ts +9 -0
- package/dist/no-modules.d.ts.map +1 -0
- package/dist/no-modules.js +7819 -0
- package/dist/no-modules.js.map +7 -0
- package/dist/phase14-catalog-override.d.ts +126 -0
- package/dist/phase14-catalog-override.d.ts.map +1 -0
- package/dist/phase14-catalog-override.js +155 -0
- package/dist/phase14-catalog-override.js.map +7 -0
- package/dist/repair-fetch.d.ts +58 -0
- package/dist/repair-fetch.d.ts.map +1 -0
- package/dist/repair-fetch.js +117 -0
- package/dist/repair-fetch.js.map +7 -0
- package/dist/sample-combiner.d.ts +182 -0
- package/dist/sample-combiner.d.ts.map +1 -0
- package/dist/sample-combiner.js +571 -0
- package/dist/sample-combiner.js.map +7 -0
- package/dist/signaling.d.ts +29 -0
- package/dist/signaling.d.ts.map +1 -0
- package/dist/signaling.js +232 -0
- package/dist/signaling.js.map +7 -0
- package/dist/source-auth.d.ts +2 -0
- package/dist/source-auth.d.ts.map +1 -0
- package/dist/source-auth.js +1220 -0
- package/dist/source-auth.js.map +7 -0
- package/dist/switching-set-alignment.d.ts +61 -0
- package/dist/switching-set-alignment.d.ts.map +1 -0
- package/dist/switching-set-alignment.js +85 -0
- package/dist/switching-set-alignment.js.map +7 -0
- package/dist/timestamp-codec.d.ts +34 -0
- package/dist/timestamp-codec.d.ts.map +1 -0
- package/dist/timestamp-codec.js +456 -0
- package/dist/timestamp-codec.js.map +7 -0
- package/dist/track-pipeline-setup.d.ts +72 -0
- package/dist/track-pipeline-setup.d.ts.map +1 -0
- package/dist/track-pipeline-setup.js +306 -0
- package/dist/track-pipeline-setup.js.map +7 -0
- package/dist/track-pipeline.d.ts +121 -0
- package/dist/track-pipeline.d.ts.map +1 -0
- package/dist/track-pipeline.js +229 -0
- package/dist/track-pipeline.js.map +7 -0
- package/dist/track-session.d.ts +269 -0
- package/dist/track-session.d.ts.map +1 -0
- package/dist/track-session.js +597 -0
- package/dist/track-session.js.map +7 -0
- package/dist/transport-pool.d.ts +69 -0
- package/dist/transport-pool.d.ts.map +1 -0
- package/dist/transport-pool.js +88 -0
- package/dist/transport-pool.js.map +7 -0
- package/dist/wasm-mfu-reassembler.d.ts +81 -0
- package/dist/wasm-mfu-reassembler.d.ts.map +1 -0
- package/dist/wasm-mfu-reassembler.js +1915 -0
- package/dist/wasm-mfu-reassembler.js.map +7 -0
- package/dist/wasm-mmtp-container-parser.d.ts +10 -0
- package/dist/wasm-mmtp-container-parser.d.ts.map +1 -0
- package/dist/wasm-mmtp-container-parser.js +5635 -0
- package/dist/wasm-mmtp-container-parser.js.map +7 -0
- package/node_modules/@blockcast/fec-worker/README.md +213 -0
- package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +80 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +270 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +252 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +11 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +14 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +565 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +7 -0
- package/node_modules/@blockcast/fec-worker/dist/index.d.ts +10 -0
- package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/index.js +8 -0
- package/node_modules/@blockcast/fec-worker/dist/index.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +20 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +349 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +7 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +104 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +181 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +179 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +47 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +9 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.js +13 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/package.json +59 -0
- package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +309 -0
- package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +268 -0
- package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +1048 -0
- package/node_modules/@blockcast/fec-worker/src/index.ts +32 -0
- package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +558 -0
- package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +222 -0
- package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +194 -0
- package/node_modules/@blockcast/fec-worker/src/transfer.ts +12 -0
- 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 +120 -0
- package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts +2 -0
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/index.js +2 -0
- package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +275 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js +644 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/package.json +49 -0
- package/node_modules/@blockcast/mmt-base/src/index.ts +1 -0
- package/node_modules/@blockcast/mmt-base/src/mmtp.ts +898 -0
- package/node_modules/@blockcast/mmt-fec/README.md +270 -0
- package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +80 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +294 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +72 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +192 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +46 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +96 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +33 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +57 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +185 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +273 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +22 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.js +22 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +20 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +28 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +174 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.js +256 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +41 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +81 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +120 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +2 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +2 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +275 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +644 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +49 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +898 -0
- package/node_modules/@blockcast/mmt-fec/package.json +79 -0
- package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +369 -0
- package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +277 -0
- package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +127 -0
- package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +68 -0
- package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +332 -0
- package/node_modules/@blockcast/mmt-fec/src/index.ts +77 -0
- package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +34 -0
- package/node_modules/@blockcast/mmt-fec/src/oti.ts +319 -0
- package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +101 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +28 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +128 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +4 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +4 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +37 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +179 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +90 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +462 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/package.json +45 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +171 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +3 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +230 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +636 -0
- package/node_modules/@noble/hashes/LICENSE +21 -0
- package/node_modules/@noble/hashes/README.md +521 -0
- package/node_modules/@noble/hashes/_assert.d.ts +17 -0
- package/node_modules/@noble/hashes/_assert.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_assert.js +18 -0
- package/node_modules/@noble/hashes/_assert.js.map +1 -0
- package/node_modules/@noble/hashes/_blake.d.ts +14 -0
- package/node_modules/@noble/hashes/_blake.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_blake.js +50 -0
- package/node_modules/@noble/hashes/_blake.js.map +1 -0
- package/node_modules/@noble/hashes/_md.d.ts +51 -0
- package/node_modules/@noble/hashes/_md.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_md.js +162 -0
- package/node_modules/@noble/hashes/_md.js.map +1 -0
- package/node_modules/@noble/hashes/_u64.d.ts +55 -0
- package/node_modules/@noble/hashes/_u64.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_u64.js +90 -0
- package/node_modules/@noble/hashes/_u64.js.map +1 -0
- package/node_modules/@noble/hashes/argon2.d.ts +32 -0
- package/node_modules/@noble/hashes/argon2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/argon2.js +401 -0
- package/node_modules/@noble/hashes/argon2.js.map +1 -0
- package/node_modules/@noble/hashes/blake1.d.ts +106 -0
- package/node_modules/@noble/hashes/blake1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake1.js +459 -0
- package/node_modules/@noble/hashes/blake1.js.map +1 -0
- package/node_modules/@noble/hashes/blake2.d.ts +116 -0
- package/node_modules/@noble/hashes/blake2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake2.js +420 -0
- package/node_modules/@noble/hashes/blake2.js.map +1 -0
- package/node_modules/@noble/hashes/blake2b.d.ts +11 -0
- package/node_modules/@noble/hashes/blake2b.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake2b.js +14 -0
- package/node_modules/@noble/hashes/blake2b.js.map +1 -0
- package/node_modules/@noble/hashes/blake2s.d.ts +20 -0
- package/node_modules/@noble/hashes/blake2s.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake2s.js +24 -0
- package/node_modules/@noble/hashes/blake2s.js.map +1 -0
- package/node_modules/@noble/hashes/blake3.d.ts +54 -0
- package/node_modules/@noble/hashes/blake3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake3.js +255 -0
- package/node_modules/@noble/hashes/blake3.js.map +1 -0
- package/node_modules/@noble/hashes/crypto.d.ts +2 -0
- package/node_modules/@noble/hashes/crypto.d.ts.map +1 -0
- package/node_modules/@noble/hashes/crypto.js +5 -0
- package/node_modules/@noble/hashes/crypto.js.map +1 -0
- package/node_modules/@noble/hashes/cryptoNode.d.ts +2 -0
- package/node_modules/@noble/hashes/cryptoNode.d.ts.map +1 -0
- package/node_modules/@noble/hashes/cryptoNode.js +18 -0
- package/node_modules/@noble/hashes/cryptoNode.js.map +1 -0
- package/node_modules/@noble/hashes/eskdf.d.ts +47 -0
- package/node_modules/@noble/hashes/eskdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/eskdf.js +166 -0
- package/node_modules/@noble/hashes/eskdf.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_assert.d.ts +17 -0
- package/node_modules/@noble/hashes/esm/_assert.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_assert.js +15 -0
- package/node_modules/@noble/hashes/esm/_assert.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_blake.d.ts +14 -0
- package/node_modules/@noble/hashes/esm/_blake.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_blake.js +45 -0
- package/node_modules/@noble/hashes/esm/_blake.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_md.d.ts +51 -0
- package/node_modules/@noble/hashes/esm/_md.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_md.js +155 -0
- package/node_modules/@noble/hashes/esm/_md.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_u64.d.ts +55 -0
- package/node_modules/@noble/hashes/esm/_u64.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_u64.js +67 -0
- package/node_modules/@noble/hashes/esm/_u64.js.map +1 -0
- package/node_modules/@noble/hashes/esm/argon2.d.ts +32 -0
- package/node_modules/@noble/hashes/esm/argon2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/argon2.js +392 -0
- package/node_modules/@noble/hashes/esm/argon2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake1.d.ts +106 -0
- package/node_modules/@noble/hashes/esm/blake1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake1.js +452 -0
- package/node_modules/@noble/hashes/esm/blake1.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2.d.ts +116 -0
- package/node_modules/@noble/hashes/esm/blake2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2.js +413 -0
- package/node_modules/@noble/hashes/esm/blake2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2b.d.ts +11 -0
- package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2b.js +11 -0
- package/node_modules/@noble/hashes/esm/blake2b.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2s.d.ts +20 -0
- package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2s.js +21 -0
- package/node_modules/@noble/hashes/esm/blake2s.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake3.d.ts +54 -0
- package/node_modules/@noble/hashes/esm/blake3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake3.js +251 -0
- package/node_modules/@noble/hashes/esm/blake3.js.map +1 -0
- package/node_modules/@noble/hashes/esm/crypto.d.ts +2 -0
- package/node_modules/@noble/hashes/esm/crypto.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/crypto.js +2 -0
- package/node_modules/@noble/hashes/esm/crypto.js.map +1 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +2 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.js +15 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.js.map +1 -0
- package/node_modules/@noble/hashes/esm/eskdf.d.ts +47 -0
- package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/eskdf.js +160 -0
- package/node_modules/@noble/hashes/esm/eskdf.js.map +1 -0
- package/node_modules/@noble/hashes/esm/hkdf.d.ts +36 -0
- package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/hkdf.js +82 -0
- package/node_modules/@noble/hashes/esm/hkdf.js.map +1 -0
- package/node_modules/@noble/hashes/esm/hmac.d.ts +35 -0
- package/node_modules/@noble/hashes/esm/hmac.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/hmac.js +86 -0
- package/node_modules/@noble/hashes/esm/hmac.js.map +1 -0
- package/node_modules/@noble/hashes/esm/index.d.ts +2 -0
- package/node_modules/@noble/hashes/esm/index.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/index.js +33 -0
- package/node_modules/@noble/hashes/esm/index.js.map +1 -0
- package/node_modules/@noble/hashes/esm/legacy.d.ts +71 -0
- package/node_modules/@noble/hashes/esm/legacy.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/legacy.js +281 -0
- package/node_modules/@noble/hashes/esm/legacy.js.map +1 -0
- package/node_modules/@noble/hashes/esm/package.json +10 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +23 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.js +97 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/ripemd160.d.ts +13 -0
- package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/ripemd160.js +13 -0
- package/node_modules/@noble/hashes/esm/ripemd160.js.map +1 -0
- package/node_modules/@noble/hashes/esm/scrypt.d.ts +34 -0
- package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/scrypt.js +228 -0
- package/node_modules/@noble/hashes/esm/scrypt.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha1.d.ts +11 -0
- package/node_modules/@noble/hashes/esm/sha1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha1.js +11 -0
- package/node_modules/@noble/hashes/esm/sha1.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha2.d.ts +159 -0
- package/node_modules/@noble/hashes/esm/sha2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha2.js +375 -0
- package/node_modules/@noble/hashes/esm/sha2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha256.d.ts +20 -0
- package/node_modules/@noble/hashes/esm/sha256.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha256.js +20 -0
- package/node_modules/@noble/hashes/esm/sha256.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +142 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.js +393 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3.d.ts +53 -0
- package/node_modules/@noble/hashes/esm/sha3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3.js +234 -0
- package/node_modules/@noble/hashes/esm/sha3.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha512.d.ts +26 -0
- package/node_modules/@noble/hashes/esm/sha512.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha512.js +26 -0
- package/node_modules/@noble/hashes/esm/sha512.js.map +1 -0
- package/node_modules/@noble/hashes/esm/utils.d.ts +161 -0
- package/node_modules/@noble/hashes/esm/utils.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/utils.js +281 -0
- package/node_modules/@noble/hashes/esm/utils.js.map +1 -0
- package/node_modules/@noble/hashes/hkdf.d.ts +36 -0
- package/node_modules/@noble/hashes/hkdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/hkdf.js +88 -0
- package/node_modules/@noble/hashes/hkdf.js.map +1 -0
- package/node_modules/@noble/hashes/hmac.d.ts +35 -0
- package/node_modules/@noble/hashes/hmac.d.ts.map +1 -0
- package/node_modules/@noble/hashes/hmac.js +91 -0
- package/node_modules/@noble/hashes/hmac.js.map +1 -0
- package/node_modules/@noble/hashes/index.d.ts +1 -0
- package/node_modules/@noble/hashes/index.d.ts.map +1 -0
- package/node_modules/@noble/hashes/index.js +33 -0
- package/node_modules/@noble/hashes/index.js.map +1 -0
- package/node_modules/@noble/hashes/legacy.d.ts +71 -0
- package/node_modules/@noble/hashes/legacy.d.ts.map +1 -0
- package/node_modules/@noble/hashes/legacy.js +287 -0
- package/node_modules/@noble/hashes/legacy.js.map +1 -0
- package/node_modules/@noble/hashes/package.json +266 -0
- package/node_modules/@noble/hashes/pbkdf2.d.ts +23 -0
- package/node_modules/@noble/hashes/pbkdf2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/pbkdf2.js +101 -0
- package/node_modules/@noble/hashes/pbkdf2.js.map +1 -0
- package/node_modules/@noble/hashes/ripemd160.d.ts +13 -0
- package/node_modules/@noble/hashes/ripemd160.d.ts.map +1 -0
- package/node_modules/@noble/hashes/ripemd160.js +16 -0
- package/node_modules/@noble/hashes/ripemd160.js.map +1 -0
- package/node_modules/@noble/hashes/scrypt.d.ts +34 -0
- package/node_modules/@noble/hashes/scrypt.d.ts.map +1 -0
- package/node_modules/@noble/hashes/scrypt.js +232 -0
- package/node_modules/@noble/hashes/scrypt.js.map +1 -0
- package/node_modules/@noble/hashes/sha1.d.ts +11 -0
- package/node_modules/@noble/hashes/sha1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha1.js +14 -0
- package/node_modules/@noble/hashes/sha1.js.map +1 -0
- package/node_modules/@noble/hashes/sha2.d.ts +159 -0
- package/node_modules/@noble/hashes/sha2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha2.js +384 -0
- package/node_modules/@noble/hashes/sha2.js.map +1 -0
- package/node_modules/@noble/hashes/sha256.d.ts +20 -0
- package/node_modules/@noble/hashes/sha256.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha256.js +23 -0
- package/node_modules/@noble/hashes/sha256.js.map +1 -0
- package/node_modules/@noble/hashes/sha3-addons.d.ts +142 -0
- package/node_modules/@noble/hashes/sha3-addons.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha3-addons.js +402 -0
- package/node_modules/@noble/hashes/sha3-addons.js.map +1 -0
- package/node_modules/@noble/hashes/sha3.d.ts +53 -0
- package/node_modules/@noble/hashes/sha3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha3.js +239 -0
- package/node_modules/@noble/hashes/sha3.js.map +1 -0
- package/node_modules/@noble/hashes/sha512.d.ts +26 -0
- package/node_modules/@noble/hashes/sha512.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha512.js +29 -0
- package/node_modules/@noble/hashes/sha512.js.map +1 -0
- package/node_modules/@noble/hashes/src/_assert.ts +22 -0
- package/node_modules/@noble/hashes/src/_blake.ts +50 -0
- package/node_modules/@noble/hashes/src/_md.ts +176 -0
- package/node_modules/@noble/hashes/src/_u64.ts +91 -0
- package/node_modules/@noble/hashes/src/argon2.ts +497 -0
- package/node_modules/@noble/hashes/src/blake1.ts +534 -0
- package/node_modules/@noble/hashes/src/blake2.ts +486 -0
- package/node_modules/@noble/hashes/src/blake2b.ts +10 -0
- package/node_modules/@noble/hashes/src/blake2s.ts +20 -0
- package/node_modules/@noble/hashes/src/blake3.ts +272 -0
- package/node_modules/@noble/hashes/src/crypto.ts +9 -0
- package/node_modules/@noble/hashes/src/cryptoNode.ts +15 -0
- package/node_modules/@noble/hashes/src/eskdf.ts +187 -0
- package/node_modules/@noble/hashes/src/hkdf.ts +88 -0
- package/node_modules/@noble/hashes/src/hmac.ts +94 -0
- package/node_modules/@noble/hashes/src/index.ts +31 -0
- package/node_modules/@noble/hashes/src/legacy.ts +293 -0
- package/node_modules/@noble/hashes/src/pbkdf2.ts +122 -0
- package/node_modules/@noble/hashes/src/ripemd160.ts +12 -0
- package/node_modules/@noble/hashes/src/scrypt.ts +257 -0
- package/node_modules/@noble/hashes/src/sha1.ts +10 -0
- package/node_modules/@noble/hashes/src/sha2.ts +402 -0
- package/node_modules/@noble/hashes/src/sha256.ts +24 -0
- package/node_modules/@noble/hashes/src/sha3-addons.ts +499 -0
- package/node_modules/@noble/hashes/src/sha3.ts +258 -0
- package/node_modules/@noble/hashes/src/sha512.ts +34 -0
- package/node_modules/@noble/hashes/src/utils.ts +395 -0
- package/node_modules/@noble/hashes/utils.d.ts +161 -0
- package/node_modules/@noble/hashes/utils.d.ts.map +1 -0
- package/node_modules/@noble/hashes/utils.js +313 -0
- package/node_modules/@noble/hashes/utils.js.map +1 -0
- package/package.json +203 -0
- package/schemas/catalog.schema.json +283 -0
- package/src/align.ts +235 -0
- package/src/audio-init-parser.ts +189 -0
- package/src/audio-ring-buffer.ts +120 -0
- package/src/authored-timing.ts +63 -0
- package/src/carp-catalog.ts +776 -0
- package/src/catalog-fec-params.ts +167 -0
- package/src/catalog-network-source.ts +49 -0
- package/src/catalog-validator.ts +34 -0
- package/src/cmaf-block-assembler.ts +1058 -0
- package/src/cmaf-group-batcher.ts +104 -0
- package/src/cmcd-producer.ts +329 -0
- package/src/codec-utils.ts +1539 -0
- package/src/fec-codec.ts +61 -0
- package/src/fec-manager.ts +1939 -0
- package/src/fec-starvation-detector.ts +128 -0
- package/src/fec-worker-setup.ts +177 -0
- package/src/fmp4-completion.ts +47 -0
- package/src/fmp4-reader.ts +112 -0
- package/src/index.ts +443 -0
- package/src/iso-bmff-timing.ts +688 -0
- package/src/loc.ts +181 -0
- package/src/manifest-auth-plan.ts +107 -0
- package/src/media-router.ts +1185 -0
- package/src/mfu-reassembler.ts +2842 -0
- package/src/mfu-reassembly-policy.ts +134 -0
- package/src/mmtp-container-parser.ts +1498 -0
- package/src/mmtp-decode-pipeline.ts +315 -0
- package/src/mmtp-router.ts +3027 -0
- package/src/mmtp-to-cmaf.ts +956 -0
- package/src/multicast-auth-catalog.ts +340 -0
- package/src/multicast-input.ts +439 -0
- package/src/multicast-manager.ts +1503 -0
- package/src/multicast-transport.ts +320 -0
- package/src/multicast-unwrap.ts +132 -0
- package/src/no-modules.ts +20 -0
- package/src/phase14-catalog-override.ts +336 -0
- package/src/repair-fetch.ts +217 -0
- package/src/sample-combiner.ts +846 -0
- package/src/signaling.ts +78 -0
- package/src/source-auth.ts +1 -0
- package/src/switching-set-alignment.ts +109 -0
- package/src/timestamp-codec.ts +265 -0
- package/src/track-pipeline-setup.ts +189 -0
- package/src/track-pipeline.ts +332 -0
- package/src/track-session.ts +778 -0
- package/src/transport-pool.ts +128 -0
- package/src/wasm-mfu-reassembler.ts +372 -0
- package/src/wasm-mmtp-container-parser.ts +23 -0
- package/test-vectors/align.json +199 -0
- package/test-vectors/catalog/README.md +25 -0
- package/test-vectors/catalog/negative/legacy-selection-params.json +15 -0
- package/test-vectors/catalog/negative/missing-mmtp-fields.json +12 -0
- package/test-vectors/catalog/negative/multicast-auth-padded-key.json +37 -0
- package/test-vectors/catalog/negative/multicast-auth-reused-track-format.json +53 -0
- package/test-vectors/catalog/negative/multicast-auth-trailing-pad-bits.json +37 -0
- package/test-vectors/catalog/negative/multicast-endpoint-missing-protocol-and-source.json +24 -0
- package/test-vectors/catalog/negative/network-source-object.json +25 -0
- package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +26 -0
- package/test-vectors/catalog/negative/repair-track-legacy-shape.json +18 -0
- package/test-vectors/catalog/negative/track-role-empty.json +16 -0
- package/test-vectors/catalog/negative/track-role-non-string.json +16 -0
- package/test-vectors/catalog/positive/fec-multicast.json +51 -0
- package/test-vectors/catalog/positive/flat-av.json +30 -0
- package/test-vectors/catalog/positive/multicast-auth-rotation.json +55 -0
- package/test-vectors/catalog/positive/ticks-and-mixed-timescales.json +39 -0
- package/test-vectors/catalog/positive/track-role.json +49 -0
- package/test-vectors/catalog/releases/moqcast-native-v16-v1/catalog.json +65 -0
- package/test-vectors/catalog/releases/moqcast-native-v16-v1.archive.sha256 +1 -0
- package/test-vectors/catalog-multicast-auth-v1.json +26 -0
- package/test-vectors/catalog-validation.json +148 -0
- package/test-vectors/catalog-validator-public-api.mjs +25 -0
- package/test-vectors/generate-source-auth-fixture.mjs +114 -0
- package/test-vectors/source-auth-v1.json +61 -0
- package/test-vectors/subsample-placement-v1.json +230 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MMTP packet processing and frame routing layer.
|
|
3
|
+
*
|
|
4
|
+
* Delegates MMTP header parsing, MFU extraction, reassembly, and keyframe
|
|
5
|
+
* detection to MmtpContainerParser while owning FEC orchestration, sync
|
|
6
|
+
* gating, CMAF assembly, and callback routing.
|
|
7
|
+
*
|
|
8
|
+
* Extracted from MulticastManager — this module owns MMTP-layer concerns:
|
|
9
|
+
* FEC symbol feeding, sync gating, MSE segment assembly, and frame routing.
|
|
10
|
+
* It does NOT own network I/O, watchdog timers, or multicast join/leave.
|
|
11
|
+
*
|
|
12
|
+
* @packageDocumentation
|
|
13
|
+
*/
|
|
14
|
+
import type { MfuReassemblerBackend, MmtpSourcePath, MmtpDeliveryProvenance } from "./mfu-reassembler.js";
|
|
15
|
+
import type { MfuReassemblyPolicy } from "./mfu-reassembly-policy.js";
|
|
16
|
+
import { type AuthoredTiming } from "./authored-timing.js";
|
|
17
|
+
import { FecBlockMapper } from "@blockcast/mmt-fec";
|
|
18
|
+
import { CmafBlockAssembler, type BlockAssemblerConfig, type CmafBlockSample } from "./cmaf-block-assembler.js";
|
|
19
|
+
import { type TrackRole } from "./carp-catalog.js";
|
|
20
|
+
import type { ManifestAuthMode, ManifestObjectIdentity, ManifestTrackContext, ManifestVerifier } from "@blockcast/mmt-manifest-verify";
|
|
21
|
+
/**
|
|
22
|
+
* Keyframe loss timeout slack factor.
|
|
23
|
+
*
|
|
24
|
+
* Derivation: The keyframe loss timer must fire after one full keyframe group
|
|
25
|
+
* has been missed. Group duration must come from explicit catalog timing; FEC
|
|
26
|
+
* sourceSymbols is a block width, not a GOP length. Multicast jitter means the
|
|
27
|
+
* last packet of a group may arrive up to ~0.5 group durations late (network
|
|
28
|
+
* reordering + FEC recovery latency). The total timeout is therefore:
|
|
29
|
+
*
|
|
30
|
+
* timeout = group_duration * (1.0 + 0.5_jitter) = group_duration * 1.5
|
|
31
|
+
*
|
|
32
|
+
* The 0.5 jitter margin covers: (a) FEC interleave recovery window (up to D
|
|
33
|
+
* frames), (b) network reordering within one interleave depth, and (c) OS
|
|
34
|
+
* socket buffer draining latency. This is tight enough to detect loss within
|
|
35
|
+
* one missing group while avoiding false positives from normal jitter.
|
|
36
|
+
*/
|
|
37
|
+
export declare const KEYFRAME_LOST_TIMEOUT_SLACK = 1.5;
|
|
38
|
+
export type RoutedFrameMeta = {
|
|
39
|
+
timestamp: number;
|
|
40
|
+
keyframe: boolean;
|
|
41
|
+
/** Exact ISO-BMFF timing in the media track's native timescale. */
|
|
42
|
+
authoredTiming?: AuthoredTiming;
|
|
43
|
+
/** Transport that supplied the accepted FI=1 head (or complete FI=0 frame). */
|
|
44
|
+
source?: MmtpSourcePath;
|
|
45
|
+
/**
|
|
46
|
+
* Whole-frame delivery verdict folded across every contributing fragment.
|
|
47
|
+
*
|
|
48
|
+
* Distinct from `source` on purpose. `source` answers a routing question —
|
|
49
|
+
* which transport's copy is this — and deliberately lets the head fragment
|
|
50
|
+
* decide. This answers an evidence question: did every byte of this frame
|
|
51
|
+
* physically arrive over multicast? A frame can be routed as 'multicast'
|
|
52
|
+
* and still be 'mixed'.
|
|
53
|
+
*/
|
|
54
|
+
deliveryProvenance?: MmtpDeliveryProvenance;
|
|
55
|
+
packetId?: number;
|
|
56
|
+
packetSequenceNumber?: number;
|
|
57
|
+
/** Every authoritative MMTP source-packet sequence that formed this frame. */
|
|
58
|
+
packetSequenceNumbers?: number[];
|
|
59
|
+
/** Subset of packetSequenceNumbers reconstructed by FEC. */
|
|
60
|
+
repairedPacketSequenceNumbers?: number[];
|
|
61
|
+
/** Native MMTP MPU group coordinate. */
|
|
62
|
+
mpuSequenceNumber?: number;
|
|
63
|
+
/** Immutable catalog identity supplied by the owning ingress subscription. */
|
|
64
|
+
catalogTrackName?: string;
|
|
65
|
+
recovered?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* True when this frame opens playback after the router suppressed earlier
|
|
68
|
+
* video deltas while waiting for a sync keyframe. Downstream decoders can
|
|
69
|
+
* use this to treat the following dependency chain as provisional.
|
|
70
|
+
*/
|
|
71
|
+
sourceDiscontinuity?: boolean;
|
|
72
|
+
};
|
|
73
|
+
export interface MmtpIngressContext {
|
|
74
|
+
tracks: readonly Readonly<{
|
|
75
|
+
name: string;
|
|
76
|
+
packetId: number;
|
|
77
|
+
}>[];
|
|
78
|
+
}
|
|
79
|
+
/** Callback for decoded video/audio frames. */
|
|
80
|
+
export type FrameCallback = (data: Uint8Array, meta: RoutedFrameMeta) => void;
|
|
81
|
+
/** Metadata accompanying an accepted raw MMTP source packet. */
|
|
82
|
+
export type RoutedPacketMeta = {
|
|
83
|
+
packetId: number;
|
|
84
|
+
packetSequenceNumber: number;
|
|
85
|
+
/** True when FEC reconstructed this source packet. */
|
|
86
|
+
recovered: boolean;
|
|
87
|
+
/** True when the packet has no trailing Source FEC Payload ID. */
|
|
88
|
+
skipFecPayloadId: boolean;
|
|
89
|
+
/** Immutable catalog identity supplied by the owning ingress subscription. */
|
|
90
|
+
catalogTrackName?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Strict provenance for the fragments this packet produces. Set for
|
|
93
|
+
* FEC-recovered packets, which carry no `source` of their own but inherit
|
|
94
|
+
* their FEC block's symbol provenance.
|
|
95
|
+
*/
|
|
96
|
+
deliveryProvenance?: MmtpDeliveryProvenance;
|
|
97
|
+
};
|
|
98
|
+
/** Callback for accepted raw MMTP source packets. */
|
|
99
|
+
export type TrackPacketCallback = (packet: Uint8Array, meta: RoutedPacketMeta) => void;
|
|
100
|
+
type ParserDiagnostics = {
|
|
101
|
+
packets: number;
|
|
102
|
+
frames: number;
|
|
103
|
+
initSegments: number;
|
|
104
|
+
noFragment: number;
|
|
105
|
+
fragments: number;
|
|
106
|
+
reassembled: number;
|
|
107
|
+
pendingBuffers: number;
|
|
108
|
+
pendingFragments: number;
|
|
109
|
+
pendingSamples?: unknown[];
|
|
110
|
+
lastPacketLength: number;
|
|
111
|
+
lastSequenceNumber: number;
|
|
112
|
+
lastFecSsId?: number;
|
|
113
|
+
lastFrameTimestamp?: number;
|
|
114
|
+
directAudioSourceEmitted: number;
|
|
115
|
+
directAudioSourceRegressions: number;
|
|
116
|
+
directAudioRecoveredQueued: number;
|
|
117
|
+
directAudioRecoveredDrained: number;
|
|
118
|
+
directAudioRecoveredStaleDropped: number;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* FECManager interface — the contract MmtpRouter expects for FEC
|
|
122
|
+
* source/repair symbol processing and block lifecycle events.
|
|
123
|
+
*
|
|
124
|
+
* Concrete implementation: `FECManager` class in `./fec-manager.ts`.
|
|
125
|
+
* MmtpRouter only interacts with FEC through this interface.
|
|
126
|
+
*/
|
|
127
|
+
export interface FECManagerLike {
|
|
128
|
+
/** Feed a source symbol to the FEC decoder for a given track.
|
|
129
|
+
* Returns recovered block bytes if recovery completes, else null.
|
|
130
|
+
*
|
|
131
|
+
* Optional `alta` carries the detached ALTA authenticator extracted from
|
|
132
|
+
* the MMTP header-extension trailer (08-07 Path 2) — present on signed
|
|
133
|
+
* source packets, absent on relay-reassembled / unsigned streams. When
|
|
134
|
+
* provided, the fec-worker runs verify_detached instead of counting the
|
|
135
|
+
* symbol as `altaPending`. */
|
|
136
|
+
feedSourceSymbol(packetId: number, ssId: number, symbolData: Uint8Array, alta?: {
|
|
137
|
+
auth: Uint8Array;
|
|
138
|
+
payloadEnd: number;
|
|
139
|
+
}, catalogTrackName?: string): Uint8Array | null;
|
|
140
|
+
/** Feed a repair symbol to the FEC decoder for a given track.
|
|
141
|
+
* Returns recovered block bytes if recovery completes, else null. */
|
|
142
|
+
feedRepairSymbol(packetId: number, ssStart: number, ssbLength: number, rsId: number, repairData: Uint8Array, catalogTrackName?: string): Uint8Array | null;
|
|
143
|
+
/** Record a transport symbol for first-arrival-wins dedup and path counters. */
|
|
144
|
+
feedSymbolFromSource(packetId: number, sbn: number, esi: number, data: Uint8Array, source: "multicast" | "moq", catalogTrackName?: string): boolean;
|
|
145
|
+
/** Strict provenance for a block: 'multicast' only when no symbol arrived
|
|
146
|
+
* over MoQ. Recovered bytes inherit it, since a recovered symbol is a
|
|
147
|
+
* function of every symbol that entered the block. */
|
|
148
|
+
blockDeliveryProvenance?(sbn: number, packetId: number, catalogTrackName?: string): MmtpDeliveryProvenance;
|
|
149
|
+
/** Track a source symbol arrival for block completion counting.
|
|
150
|
+
* Refreshes the inactivity deadline and marks clean when K arrive. */
|
|
151
|
+
trackBlock(sbn: number, packetId: number, catalogTrackName?: string, esi?: number): void;
|
|
152
|
+
/** Refresh the block inactivity deadline after accepted repair progress. */
|
|
153
|
+
noteBlockActivity?(sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
154
|
+
/** Cancel block timeout (block completed via clean or FEC recovery). */
|
|
155
|
+
cancelBlockTimeout(sbn: number, packetId?: number, catalogTrackName?: string): void;
|
|
156
|
+
/** Check if a block is already completed (clean or recovered). */
|
|
157
|
+
isBlockCompleted(sbn: number, packetId?: number, catalogTrackName?: string): boolean;
|
|
158
|
+
/** Mark a block as completed externally (after routing recovered data). */
|
|
159
|
+
markBlockCompleted(sbn: number, packetId?: number, catalogTrackName?: string): void;
|
|
160
|
+
/** Increment blocksRecovered stat (called after routing recovery). */
|
|
161
|
+
countRecovery(packetId?: number): void;
|
|
162
|
+
/** FEC source symbol count K per block. */
|
|
163
|
+
readonly k: number;
|
|
164
|
+
kForPacket?(packetId: number): number;
|
|
165
|
+
/** FEC symbol size T in bytes (0 = unknown / no FEC). */
|
|
166
|
+
readonly symbolSize: number;
|
|
167
|
+
symbolSizeForPacket?(packetId: number): number;
|
|
168
|
+
/** Update framerate — used to refine FEC block timeout. */
|
|
169
|
+
setFramerate(fps: number): void;
|
|
170
|
+
/** Per-block state snapshot for FecBlockGrid visualization. */
|
|
171
|
+
getBlockStates(): Array<{
|
|
172
|
+
sbn: number;
|
|
173
|
+
packetId?: number;
|
|
174
|
+
state: "collecting" | "complete" | "failed";
|
|
175
|
+
sourceCount: number;
|
|
176
|
+
k: number;
|
|
177
|
+
progress: number;
|
|
178
|
+
}>;
|
|
179
|
+
/** FEC statistics snapshot. */
|
|
180
|
+
readonly fecStats: {
|
|
181
|
+
sourcePackets: number;
|
|
182
|
+
repairPackets: number;
|
|
183
|
+
blocksClean: number;
|
|
184
|
+
blocksRecovered: number;
|
|
185
|
+
blocksFailed: number;
|
|
186
|
+
greenFillFrames: number;
|
|
187
|
+
};
|
|
188
|
+
/** Called when a block receives its first source symbol. */
|
|
189
|
+
onBlockStarted: ((sbn: number, packetId: number, catalogTrackName?: string) => void) | null;
|
|
190
|
+
/** Called when a block completes cleanly (all K sources arrived). */
|
|
191
|
+
onBlockComplete: ((sbn: number, packetId: number, catalogTrackName?: string) => void) | null;
|
|
192
|
+
/** Called when a block times out (unrecoverable). */
|
|
193
|
+
onBlockFailed: ((sbn: number, packetId: number, catalogTrackName?: string) => void) | null;
|
|
194
|
+
/** Dispose timers and state. */
|
|
195
|
+
dispose(): void;
|
|
196
|
+
}
|
|
197
|
+
export interface ManifestIdentityResolutionInput {
|
|
198
|
+
packetId: number;
|
|
199
|
+
sbn: number;
|
|
200
|
+
esi: number;
|
|
201
|
+
catalogTrackName?: string;
|
|
202
|
+
recovered: boolean;
|
|
203
|
+
sourceSymbolFormat: "full-mmtp-packet" | "fec-padded-recovery";
|
|
204
|
+
}
|
|
205
|
+
export type ManifestIdentityResolver = (input: ManifestIdentityResolutionInput) => ManifestObjectIdentity | null;
|
|
206
|
+
export declare class MmtpRouter {
|
|
207
|
+
#private;
|
|
208
|
+
constructor(config?: {
|
|
209
|
+
fecManager?: FECManagerLike;
|
|
210
|
+
fecMapper?: FecBlockMapper;
|
|
211
|
+
/** MFU reassembly timeout (ms) for FEC recovery path. Derive from FEC interleaveDepthMs. */
|
|
212
|
+
mfuTimeoutMs?: number;
|
|
213
|
+
reassemblyPolicy?: MfuReassemblyPolicy;
|
|
214
|
+
reassembler?: MfuReassemblerBackend;
|
|
215
|
+
maxBufferedMfus?: number;
|
|
216
|
+
/** Catalog-derived keyframe loss timeout (ms). Derive from explicit
|
|
217
|
+
* keyframe/group duration; do not use FEC sourceSymbols as GOP length. */
|
|
218
|
+
keyframeLostTimeoutMs?: number;
|
|
219
|
+
manifestVerifier?: ManifestVerifier;
|
|
220
|
+
/** Existing behavior is router ownership; shared browser plans opt into caller ownership. */
|
|
221
|
+
manifestVerifierOwnership?: "caller" | "router";
|
|
222
|
+
resolveManifestIdentity?: (packetId: number, sbn: number, esi: number, catalogTrackName?: string) => ManifestObjectIdentity | null;
|
|
223
|
+
resolveManifestIdentityForRoute?: ManifestIdentityResolver;
|
|
224
|
+
/** Internal terminal-failure sink owned by the composing transport. */
|
|
225
|
+
onBlockFailed?: (sbn: number, packetId: number, catalogTrackName?: string) => void;
|
|
226
|
+
});
|
|
227
|
+
get fecManager(): FECManagerLike | null;
|
|
228
|
+
get reassembler(): MfuReassemblerBackend;
|
|
229
|
+
getDiagnostics(): Record<number, ParserDiagnostics>;
|
|
230
|
+
/** Register callback for keyframe loss detection.
|
|
231
|
+
* Fires when no complete keyframe is emitted within keyframeLostTimeoutMs.
|
|
232
|
+
* Argument: next expected groupId (lastKeyframeGroupId + 1). */
|
|
233
|
+
onKeyframeLost(cb: (expectedGroupId: number) => void): void;
|
|
234
|
+
/**
|
|
235
|
+
* Set the keyframe loss timeout after construction.
|
|
236
|
+
* Must be called BEFORE setPacketIdType('video').
|
|
237
|
+
* Derive from explicit keyframe/group duration:
|
|
238
|
+
* Math.ceil(groupDurationMs * KEYFRAME_LOST_TIMEOUT_SLACK).
|
|
239
|
+
*/
|
|
240
|
+
setKeyframeLostTimeoutMs(ms: number): void;
|
|
241
|
+
/** Update MFU reassembly timeout. Source and FEC-recovery paths share the
|
|
242
|
+
* parser's single reassembler (BLO-8151), so one update covers both. */
|
|
243
|
+
setMfuTimeoutMs(ms: number): void;
|
|
244
|
+
/** Update parser frame reordering for unordered multicast delivery.
|
|
245
|
+
* Callers derive this from the catalog FEC block span (§5.1 — the
|
|
246
|
+
* interleave value IS the span): positive round-half-up of span / frameMs. */
|
|
247
|
+
setReorderWindow(windowSize: number): void;
|
|
248
|
+
/** Register MMTP packetId → track type mapping.
|
|
249
|
+
* Call BEFORE packets arrive to ensure correct routing from the first packet.
|
|
250
|
+
* If keyframeLostTimeoutMs is not provided, Phase 13 keyframe repair is
|
|
251
|
+
* disabled (video still routes/decodes normally). framerate is OPTIONAL per
|
|
252
|
+
* draft-ietf-moq-catalogformat-01 §3.2.23, so we can't require the timeout. */
|
|
253
|
+
setPacketIdType(packetId: number, trackType: "video" | "audio"): void;
|
|
254
|
+
/** Register codec string for a packetId — enables codec-aware keyframe detection.
|
|
255
|
+
* Without this, only H.264 IDR (NAL type 5) is detected as keyframe fallback.
|
|
256
|
+
* AV1 (OBU_SEQUENCE_HEADER) and VP9 (frame_type bit) require the codec string. */
|
|
257
|
+
setTrackCodec(packetId: number, codec: string): void;
|
|
258
|
+
/** @deprecated Use onTrackFrame(packetId, cb) for per-track routing */
|
|
259
|
+
onVideoFrame(cb: FrameCallback): void;
|
|
260
|
+
/** @deprecated Use onTrackFrame(packetId, cb) for per-track routing */
|
|
261
|
+
onAudioFrame(cb: FrameCallback): void;
|
|
262
|
+
/** Register a frame callback for a specific MMTP packetId (track).
|
|
263
|
+
* When a legacy callback (onVideoFrame/onAudioFrame) also exists for this
|
|
264
|
+
* packetId's type, both fire: per-track first, then legacy. This ensures
|
|
265
|
+
* element.ts wiring (confirmAudio, feedMulticast) continues working when
|
|
266
|
+
* TrackPipeline registers per-track sources. */
|
|
267
|
+
onTrackFrame(packetId: number, cb: (data: Uint8Array, meta: {
|
|
268
|
+
timestamp: number;
|
|
269
|
+
keyframe: boolean;
|
|
270
|
+
packetId?: number;
|
|
271
|
+
packetSequenceNumber?: number;
|
|
272
|
+
}) => void): void;
|
|
273
|
+
/** Register a raw MMTP source-packet callback for one track.
|
|
274
|
+
*
|
|
275
|
+
* Direct packets retain their original bytes, including a Source FEC Payload
|
|
276
|
+
* ID when present. FEC-recovered packets are the recovered source-symbol
|
|
277
|
+
* bytes and set `skipFecPayloadId` because that trailer is not part of the
|
|
278
|
+
* protected symbol. Repair packets are never delivered here.
|
|
279
|
+
*/
|
|
280
|
+
onTrackPacket(packetId: number, cb: TrackPacketCallback): void;
|
|
281
|
+
/** Register an init segment callback (ftyp+moov from MMTP MPU metadata). */
|
|
282
|
+
onInitSegment(cb: (data: Uint8Array) => void): void;
|
|
283
|
+
/** Register an init segment callback for a specific MMTP packetId.
|
|
284
|
+
* Called when FT=0 init arrives via direct source or FEC recovery. */
|
|
285
|
+
onTrackInit(packetId: number, cb: (data: Uint8Array) => void): void;
|
|
286
|
+
/** Create a CMAF block assembler for MSE mode on a specific track.
|
|
287
|
+
* When active, source frames are buffered per FEC block and emitted as
|
|
288
|
+
* multi-sample CMAF segments instead of per-frame callbacks. */
|
|
289
|
+
enableMseAssembler(packetId: number, config: Omit<BlockAssemblerConfig, "k">, catalogTrackName?: string): CmafBlockAssembler;
|
|
290
|
+
/** Register a segment callback for a track's MSE assembler.
|
|
291
|
+
* Called with complete moof+mdat CMAF segments on block completion. */
|
|
292
|
+
onMseSegment(packetId: number, cb: (segment: Uint8Array) => void, catalogTrackName?: string): void;
|
|
293
|
+
/** Register a raw-sample callback for a track's MSE assembler.
|
|
294
|
+
* Use this when the caller already owns the fMP4/MSE timeline and only wants
|
|
295
|
+
* FEC recovery, keyframe gating, and dedup from the assembler. */
|
|
296
|
+
onMseSample(packetId: number, cb: (sample: CmafBlockSample) => void, catalogTrackName?: string): void;
|
|
297
|
+
/** Register an init segment callback for a track's MSE assembler. */
|
|
298
|
+
onMseInitSegment(packetId: number, cb: (init: Uint8Array) => void, catalogTrackName?: string): void;
|
|
299
|
+
/** Build and emit init segment for a track's MSE assembler from catalog config. */
|
|
300
|
+
emitMseInit(packetId: number, catalogTrackName?: string): void;
|
|
301
|
+
/** Mark a video track as synchronized by an external path.
|
|
302
|
+
* This opens the MMTP/FEC pre-sync gates without waiting for a multicast
|
|
303
|
+
* keyframe, for MSE timelines already seeded by MoQ with the same track. */
|
|
304
|
+
markExternalVideoSync(packetId?: number, catalogTrackName?: string): void;
|
|
305
|
+
/** Register callback for FEC blocks when the first source symbol arrives. */
|
|
306
|
+
onFecBlockStarted(cb: (sbn: number, packetId: number) => void): void;
|
|
307
|
+
/** Register callback for FEC blocks that time out unrecoverably. Players use
|
|
308
|
+
* this to recover a decoder that was starved by the lost block. */
|
|
309
|
+
onFecBlockFailed(cb: (sbn: number, packetId: number, catalogTrackName?: string) => void): void;
|
|
310
|
+
/**
|
|
311
|
+
* Register a TrackRole for a specific packetId.
|
|
312
|
+
*
|
|
313
|
+
* D-26: Enables per-role block-complete fanout — delta-role packetIds fire
|
|
314
|
+
* onDeltaBlockComplete when their FEC block completes or fails.
|
|
315
|
+
* Composite callback preserved: legacy onVideoFrame/onAudioFrame still fire
|
|
316
|
+
* (MEMORY.md "prevents callback stealing").
|
|
317
|
+
*
|
|
318
|
+
* Valid roles: 'base' | 'delta' | 'repair' | 'single'.
|
|
319
|
+
* Throws on unknown role (error on bad init, CLAUDE.md).
|
|
320
|
+
*/
|
|
321
|
+
setPacketIdRole(packetId: number, role: TrackRole): void;
|
|
322
|
+
/** Replace catalog-derived repair ownership before a catalog reconfiguration. */
|
|
323
|
+
clearRepairPacketIdOwners(): void;
|
|
324
|
+
/** Bind one dedicated repair-track PID to its authoritative media PID. */
|
|
325
|
+
setRepairPacketIdOwner(repairPacketId: number, ownerPacketId: number): void;
|
|
326
|
+
/**
|
|
327
|
+
* Register callback fired when a delta-track FEC block completes or fails.
|
|
328
|
+
*
|
|
329
|
+
* @param cb - (packetId, failed) — packetId identifies the delta track,
|
|
330
|
+
* failed=false means clean/recovered, failed=true means unrecoverable.
|
|
331
|
+
*
|
|
332
|
+
* Called from both onBlockComplete (failed=false) and onBlockFailed (failed=true)
|
|
333
|
+
* for every packetId registered with role='delta' via setPacketIdRole().
|
|
334
|
+
*/
|
|
335
|
+
onDeltaBlockComplete(cb: (packetId: number, failed: boolean) => void): void;
|
|
336
|
+
/** Update framerate — delegates to FECManager for timeout refinement. */
|
|
337
|
+
setFramerate(fps: number): void;
|
|
338
|
+
/** Set FEC block mapper (created when FEC config becomes known via configureFec). */
|
|
339
|
+
setFecMapper(mapper: FecBlockMapper, packetId?: number): void;
|
|
340
|
+
registerManifestTrack(context: ManifestTrackContext): void;
|
|
341
|
+
feedManifestFrame(trackName: string, frame: Uint8Array): void;
|
|
342
|
+
setManifestAuthMode(mode: ManifestAuthMode): void;
|
|
343
|
+
/**
|
|
344
|
+
* Main entry point: feed a raw MMTP packet for processing.
|
|
345
|
+
*
|
|
346
|
+
* Source packets are played immediately AND fed to FECManager for recovery.
|
|
347
|
+
* Repair packets are fed to FECManager only (no direct playback).
|
|
348
|
+
*/
|
|
349
|
+
/**
|
|
350
|
+
* Feed one MMTP source packet.
|
|
351
|
+
*
|
|
352
|
+
* `source` is REQUIRED. It used to default to "multicast", which meant any
|
|
353
|
+
* caller that forgot it silently attributed its bytes to a multicast socket
|
|
354
|
+
* they may never have crossed — and that attribution is what the physical-
|
|
355
|
+
* delivery evidence path is built on. Absence is not multicast; say which.
|
|
356
|
+
*/
|
|
357
|
+
feedPacket(packet: Uint8Array, source: "multicast" | "moq", manifestIdentity?: ManifestObjectIdentity, ingress?: MmtpIngressContext): void;
|
|
358
|
+
/**
|
|
359
|
+
* Feed a repair packet from MoQ (reliable QUIC) — parses MMTP repair
|
|
360
|
+
* header and delegates to FECManager for FEC recovery.
|
|
361
|
+
*/
|
|
362
|
+
feedRepairPacket(packet: Uint8Array, ownerPacketIdHint?: number, catalogTrackName?: string): void;
|
|
363
|
+
/** Route a recovered FEC block through the parser + dedup pipeline.
|
|
364
|
+
* Sync WASM decoders return K fixed-width source symbols concatenated. */
|
|
365
|
+
routeRecoveredBlock(blockId: number, data: Uint8Array, packetId: number, catalogTrackName?: string): void;
|
|
366
|
+
/** Route a single recovered source symbol through the parser + dedup pipeline.
|
|
367
|
+
* Worker-backed decoders emit one padded source symbol per frame event. */
|
|
368
|
+
routeRecoveredSymbol(blockId: number, data: Uint8Array, packetId: number, esi?: number, catalogTrackName?: string): void;
|
|
369
|
+
/** Cancel the active keyframe loss timer.
|
|
370
|
+
* Call on failbackToMoq to prevent a stale timer from firing
|
|
371
|
+
* onKeyframeLost after multicast is no longer the active source. */
|
|
372
|
+
cancelKeyframeLostTimer(): void;
|
|
373
|
+
/** Emit parser frames buffered for a finite input before teardown. */
|
|
374
|
+
flush(): void;
|
|
375
|
+
/** Drop one rendition's parser/router/CMAF epoch without touching peers. */
|
|
376
|
+
resetTrack(packetId: number, catalogTrackName: string): void;
|
|
377
|
+
/** Live teardown is drop-only. Finite inputs must opt into a final flush. */
|
|
378
|
+
dispose(options?: {
|
|
379
|
+
flush?: boolean;
|
|
380
|
+
}): void;
|
|
381
|
+
}
|
|
382
|
+
export {};
|
|
383
|
+
//# sourceMappingURL=mmtp-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mmtp-router.d.ts","sourceRoot":"","sources":["../src/mmtp-router.ts"],"names":[],"mappings":"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"}
|