@blockcast/mmt-container 0.3.0 → 0.4.0-main.d6f2737828fc
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 +22 -8
- package/dist/browser-runtime.js +1185 -1049
- package/dist/browser-runtime.js.map +4 -4
- package/dist/carp-catalog.d.ts +24 -8
- package/dist/carp-catalog.d.ts.map +1 -1
- package/dist/carp-catalog.js +21 -8
- package/dist/carp-catalog.js.map +2 -2
- package/dist/catalog-fec-params.d.ts +88 -28
- package/dist/catalog-fec-params.d.ts.map +1 -1
- package/dist/catalog-fec-params.js +59 -17
- package/dist/catalog-fec-params.js.map +3 -3
- package/dist/catalog-network-source.js +0 -1
- package/dist/catalog-network-source.js.map +2 -2
- package/dist/cmaf-block-assembler.d.ts +0 -2
- package/dist/cmaf-block-assembler.d.ts.map +1 -1
- package/dist/cmaf-block-assembler.js +0 -1
- package/dist/cmaf-block-assembler.js.map +2 -2
- package/dist/delta-fallback-config.d.ts +42 -0
- package/dist/delta-fallback-config.d.ts.map +1 -0
- package/dist/delta-fallback-config.js +59 -0
- package/dist/delta-fallback-config.js.map +7 -0
- package/dist/fec-manager.d.ts +35 -26
- package/dist/fec-manager.d.ts.map +1 -1
- package/dist/fec-manager.js +300 -273
- package/dist/fec-manager.js.map +2 -2
- package/dist/fec-state.d.ts +19 -31
- package/dist/fec-state.d.ts.map +1 -1
- package/dist/fec-state.js +3 -4
- package/dist/fec-state.js.map +2 -2
- package/dist/fec-worker-setup.d.ts +16 -6
- package/dist/fec-worker-setup.d.ts.map +1 -1
- package/dist/fec-worker-setup.js +72 -34
- package/dist/fec-worker-setup.js.map +2 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +2 -2
- package/dist/iso-block-locator.js +0 -1
- package/dist/iso-block-locator.js.map +2 -2
- package/dist/media-router.d.ts +20 -8
- package/dist/media-router.d.ts.map +1 -1
- package/dist/media-router.js +46 -21
- package/dist/media-router.js.map +2 -2
- package/dist/mfu-reassembler.js +0 -1
- package/dist/mfu-reassembler.js.map +2 -2
- package/dist/mmtp-container-parser.d.ts +5 -0
- package/dist/mmtp-container-parser.d.ts.map +1 -1
- package/dist/mmtp-container-parser.js +22 -1
- package/dist/mmtp-container-parser.js.map +2 -2
- package/dist/mmtp-container-parser.no-modules.js +37 -9
- package/dist/mmtp-container-parser.no-modules.js.map +2 -2
- package/dist/mmtp-decode-pipeline.js +22 -1
- package/dist/mmtp-decode-pipeline.js.map +2 -2
- package/dist/mmtp-router.d.ts +36 -16
- package/dist/mmtp-router.d.ts.map +1 -1
- package/dist/mmtp-router.js +126 -213
- package/dist/mmtp-router.js.map +2 -2
- package/dist/multicast-input.js +0 -1
- package/dist/multicast-input.js.map +2 -2
- package/dist/multicast-manager.d.ts +33 -3
- package/dist/multicast-manager.d.ts.map +1 -1
- package/dist/multicast-manager.js +660 -529
- package/dist/multicast-manager.js.map +4 -4
- package/dist/multicast-transport.d.ts +1 -1
- package/dist/multicast-transport.d.ts.map +1 -1
- package/dist/multicast-transport.js +42 -14
- package/dist/multicast-transport.js.map +3 -3
- package/dist/multicast-unwrap.js +0 -1
- package/dist/multicast-unwrap.js.map +2 -2
- package/dist/no-modules.js +36 -8
- package/dist/no-modules.js.map +2 -2
- package/dist/repair-fetch.d.ts +30 -19
- package/dist/repair-fetch.d.ts.map +1 -1
- package/dist/repair-fetch.js +32 -18
- package/dist/repair-fetch.js.map +3 -3
- package/dist/repair-layers.d.ts +18 -7
- package/dist/repair-layers.d.ts.map +1 -1
- package/dist/repair-layers.js +11 -4
- package/dist/repair-layers.js.map +2 -2
- package/dist/signaling.js +0 -4
- package/dist/signaling.js.map +2 -2
- package/dist/timestamp-codec.js +0 -1
- package/dist/timestamp-codec.js.map +2 -2
- package/dist/track-session.d.ts +7 -0
- package/dist/track-session.d.ts.map +1 -1
- package/dist/track-session.js +15 -8
- package/dist/track-session.js.map +2 -2
- package/dist/wasm-mfu-reassembler.js +0 -1
- package/dist/wasm-mfu-reassembler.js.map +2 -2
- package/dist/wasm-mmtp-container-parser.js +22 -1
- package/dist/wasm-mmtp-container-parser.js.map +2 -2
- package/package.json +8 -14
- package/schemas/catalog.schema.json +3 -3
- package/src/carp-catalog.ts +35 -13
- package/src/catalog-fec-params.ts +173 -64
- package/src/cmaf-block-assembler.ts +1 -4
- package/src/delta-fallback-config.ts +72 -0
- package/src/fec-manager.ts +413 -317
- package/src/fec-state.ts +20 -32
- package/src/fec-worker-setup.ts +105 -55
- package/src/index.ts +10 -0
- package/src/media-router.ts +59 -21
- package/src/mmtp-container-parser.ts +26 -0
- package/src/mmtp-router.ts +145 -303
- package/src/multicast-manager.ts +172 -60
- package/src/multicast-transport.ts +16 -9
- package/src/repair-fetch.ts +46 -27
- package/src/repair-layers.ts +28 -8
- package/src/track-session.ts +28 -9
- package/test-vectors/catalog/README.md +34 -17
- package/test-vectors/catalog/negative/fec-block-profile-retired.json +52 -0
- package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +1 -1
- package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +1 -1
- package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +1 -1
- package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +1 -1
- package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +1 -1
- package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +1 -1
- package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +1 -1
- package/test-vectors/catalog/negative/multicast-network-source-empty.json +1 -1
- package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +1 -1
- package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +1 -1
- package/test-vectors/catalog/positive/fec-layered-repair.json +2 -2
- package/test-vectors/catalog/positive/fec-multicast.json +2 -1
- package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +2 -1
- package/test-vectors/catalog-timing.json +356 -0
- package/test-vectors/catalog-validation.json +40 -5
- package/node_modules/@blockcast/fec-worker/README.md +0 -223
- package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +0 -38
- package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/block-order.js +0 -78
- package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +0 -93
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +0 -346
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +0 -380
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +0 -11
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +0 -14
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +0 -859
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +0 -7
- package/node_modules/@blockcast/fec-worker/dist/index.d.ts +0 -10
- package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/index.js +0 -8
- package/node_modules/@blockcast/fec-worker/dist/index.js.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +0 -20
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +0 -370
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +0 -7
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +0 -104
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +0 -181
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +0 -194
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +0 -62
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +0 -9
- package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +0 -1
- package/node_modules/@blockcast/fec-worker/dist/transfer.js +0 -13
- package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +0 -1
- package/node_modules/@blockcast/fec-worker/package.json +0 -59
- package/node_modules/@blockcast/fec-worker/src/block-order.ts +0 -93
- package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +0 -392
- package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +0 -399
- package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +0 -1502
- package/node_modules/@blockcast/fec-worker/src/index.ts +0 -35
- package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +0 -589
- package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +0 -222
- package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +0 -209
- package/node_modules/@blockcast/fec-worker/src/transfer.ts +0 -12
- package/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
- package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +0 -57
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
- package/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
- package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
- package/node_modules/@blockcast/mmt-base/README.md +0 -134
- package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +0 -55
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
- package/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
- package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
- package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
- package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
- package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
- package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
- package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
- package/node_modules/@blockcast/mmt-base/package.json +0 -49
- package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
- package/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
- package/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
- package/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
- package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
- package/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
- package/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
- package/node_modules/@blockcast/mmt-fec/README.md +0 -271
- package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +0 -82
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +0 -296
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +0 -106
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +0 -288
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +0 -46
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +0 -96
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +0 -33
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +0 -57
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +0 -205
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +0 -240
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +0 -28
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/index.js +0 -28
- package/node_modules/@blockcast/mmt-fec/dist/index.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +0 -20
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +0 -28
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +0 -258
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/oti.js +0 -382
- package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +0 -41
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +0 -81
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts +0 -82
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.js +0 -170
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
- 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 +0 -57
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +0 -134
- 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/fec-block-profile.d.ts +0 -55
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +0 -49
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
- package/node_modules/@blockcast/mmt-fec/package.json +0 -79
- package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +0 -371
- package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +0 -439
- package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +0 -127
- package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +0 -68
- package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +0 -310
- package/node_modules/@blockcast/mmt-fec/src/index.ts +0 -94
- package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +0 -34
- package/node_modules/@blockcast/mmt-fec/src/oti.ts +0 -463
- package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +0 -101
- package/node_modules/@blockcast/mmt-fec/src/repair-group.ts +0 -195
- package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +0 -28
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +0 -128
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +0 -4
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +0 -4
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +0 -37
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +0 -179
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +0 -99
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +0 -492
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +0 -1
- package/node_modules/@blockcast/mmt-manifest-verify/package.json +0 -45
- package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +0 -171
- package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +0 -3
- package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +0 -230
- package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +0 -669
- package/node_modules/@noble/hashes/LICENSE +0 -21
- package/node_modules/@noble/hashes/README.md +0 -521
- package/node_modules/@noble/hashes/_assert.d.ts +0 -17
- package/node_modules/@noble/hashes/_assert.d.ts.map +0 -1
- package/node_modules/@noble/hashes/_assert.js +0 -18
- package/node_modules/@noble/hashes/_assert.js.map +0 -1
- package/node_modules/@noble/hashes/_blake.d.ts +0 -14
- package/node_modules/@noble/hashes/_blake.d.ts.map +0 -1
- package/node_modules/@noble/hashes/_blake.js +0 -50
- package/node_modules/@noble/hashes/_blake.js.map +0 -1
- package/node_modules/@noble/hashes/_md.d.ts +0 -51
- package/node_modules/@noble/hashes/_md.d.ts.map +0 -1
- package/node_modules/@noble/hashes/_md.js +0 -162
- package/node_modules/@noble/hashes/_md.js.map +0 -1
- package/node_modules/@noble/hashes/_u64.d.ts +0 -55
- package/node_modules/@noble/hashes/_u64.d.ts.map +0 -1
- package/node_modules/@noble/hashes/_u64.js +0 -90
- package/node_modules/@noble/hashes/_u64.js.map +0 -1
- package/node_modules/@noble/hashes/argon2.d.ts +0 -32
- package/node_modules/@noble/hashes/argon2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/argon2.js +0 -401
- package/node_modules/@noble/hashes/argon2.js.map +0 -1
- package/node_modules/@noble/hashes/blake1.d.ts +0 -106
- package/node_modules/@noble/hashes/blake1.d.ts.map +0 -1
- package/node_modules/@noble/hashes/blake1.js +0 -459
- package/node_modules/@noble/hashes/blake1.js.map +0 -1
- package/node_modules/@noble/hashes/blake2.d.ts +0 -116
- package/node_modules/@noble/hashes/blake2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/blake2.js +0 -420
- package/node_modules/@noble/hashes/blake2.js.map +0 -1
- package/node_modules/@noble/hashes/blake2b.d.ts +0 -11
- package/node_modules/@noble/hashes/blake2b.d.ts.map +0 -1
- package/node_modules/@noble/hashes/blake2b.js +0 -14
- package/node_modules/@noble/hashes/blake2b.js.map +0 -1
- package/node_modules/@noble/hashes/blake2s.d.ts +0 -20
- package/node_modules/@noble/hashes/blake2s.d.ts.map +0 -1
- package/node_modules/@noble/hashes/blake2s.js +0 -24
- package/node_modules/@noble/hashes/blake2s.js.map +0 -1
- package/node_modules/@noble/hashes/blake3.d.ts +0 -54
- package/node_modules/@noble/hashes/blake3.d.ts.map +0 -1
- package/node_modules/@noble/hashes/blake3.js +0 -255
- package/node_modules/@noble/hashes/blake3.js.map +0 -1
- package/node_modules/@noble/hashes/crypto.d.ts +0 -2
- package/node_modules/@noble/hashes/crypto.d.ts.map +0 -1
- package/node_modules/@noble/hashes/crypto.js +0 -5
- package/node_modules/@noble/hashes/crypto.js.map +0 -1
- package/node_modules/@noble/hashes/cryptoNode.d.ts +0 -2
- package/node_modules/@noble/hashes/cryptoNode.d.ts.map +0 -1
- package/node_modules/@noble/hashes/cryptoNode.js +0 -18
- package/node_modules/@noble/hashes/cryptoNode.js.map +0 -1
- package/node_modules/@noble/hashes/eskdf.d.ts +0 -47
- package/node_modules/@noble/hashes/eskdf.d.ts.map +0 -1
- package/node_modules/@noble/hashes/eskdf.js +0 -166
- package/node_modules/@noble/hashes/eskdf.js.map +0 -1
- package/node_modules/@noble/hashes/esm/_assert.d.ts +0 -17
- package/node_modules/@noble/hashes/esm/_assert.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/_assert.js +0 -15
- package/node_modules/@noble/hashes/esm/_assert.js.map +0 -1
- package/node_modules/@noble/hashes/esm/_blake.d.ts +0 -14
- package/node_modules/@noble/hashes/esm/_blake.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/_blake.js +0 -45
- package/node_modules/@noble/hashes/esm/_blake.js.map +0 -1
- package/node_modules/@noble/hashes/esm/_md.d.ts +0 -51
- package/node_modules/@noble/hashes/esm/_md.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/_md.js +0 -155
- package/node_modules/@noble/hashes/esm/_md.js.map +0 -1
- package/node_modules/@noble/hashes/esm/_u64.d.ts +0 -55
- package/node_modules/@noble/hashes/esm/_u64.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/_u64.js +0 -67
- package/node_modules/@noble/hashes/esm/_u64.js.map +0 -1
- package/node_modules/@noble/hashes/esm/argon2.d.ts +0 -32
- package/node_modules/@noble/hashes/esm/argon2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/argon2.js +0 -392
- package/node_modules/@noble/hashes/esm/argon2.js.map +0 -1
- package/node_modules/@noble/hashes/esm/blake1.d.ts +0 -106
- package/node_modules/@noble/hashes/esm/blake1.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/blake1.js +0 -452
- package/node_modules/@noble/hashes/esm/blake1.js.map +0 -1
- package/node_modules/@noble/hashes/esm/blake2.d.ts +0 -116
- package/node_modules/@noble/hashes/esm/blake2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/blake2.js +0 -413
- package/node_modules/@noble/hashes/esm/blake2.js.map +0 -1
- package/node_modules/@noble/hashes/esm/blake2b.d.ts +0 -11
- package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/blake2b.js +0 -11
- package/node_modules/@noble/hashes/esm/blake2b.js.map +0 -1
- package/node_modules/@noble/hashes/esm/blake2s.d.ts +0 -20
- package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/blake2s.js +0 -21
- package/node_modules/@noble/hashes/esm/blake2s.js.map +0 -1
- package/node_modules/@noble/hashes/esm/blake3.d.ts +0 -54
- package/node_modules/@noble/hashes/esm/blake3.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/blake3.js +0 -251
- package/node_modules/@noble/hashes/esm/blake3.js.map +0 -1
- package/node_modules/@noble/hashes/esm/crypto.d.ts +0 -2
- package/node_modules/@noble/hashes/esm/crypto.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/crypto.js +0 -2
- package/node_modules/@noble/hashes/esm/crypto.js.map +0 -1
- package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +0 -2
- package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/cryptoNode.js +0 -15
- package/node_modules/@noble/hashes/esm/cryptoNode.js.map +0 -1
- package/node_modules/@noble/hashes/esm/eskdf.d.ts +0 -47
- package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/eskdf.js +0 -160
- package/node_modules/@noble/hashes/esm/eskdf.js.map +0 -1
- package/node_modules/@noble/hashes/esm/hkdf.d.ts +0 -36
- package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/hkdf.js +0 -82
- package/node_modules/@noble/hashes/esm/hkdf.js.map +0 -1
- package/node_modules/@noble/hashes/esm/hmac.d.ts +0 -35
- package/node_modules/@noble/hashes/esm/hmac.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/hmac.js +0 -86
- package/node_modules/@noble/hashes/esm/hmac.js.map +0 -1
- package/node_modules/@noble/hashes/esm/index.d.ts +0 -2
- package/node_modules/@noble/hashes/esm/index.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/index.js +0 -33
- package/node_modules/@noble/hashes/esm/index.js.map +0 -1
- package/node_modules/@noble/hashes/esm/legacy.d.ts +0 -71
- package/node_modules/@noble/hashes/esm/legacy.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/legacy.js +0 -281
- package/node_modules/@noble/hashes/esm/legacy.js.map +0 -1
- package/node_modules/@noble/hashes/esm/package.json +0 -10
- package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +0 -23
- package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/pbkdf2.js +0 -97
- package/node_modules/@noble/hashes/esm/pbkdf2.js.map +0 -1
- package/node_modules/@noble/hashes/esm/ripemd160.d.ts +0 -13
- package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/ripemd160.js +0 -13
- package/node_modules/@noble/hashes/esm/ripemd160.js.map +0 -1
- package/node_modules/@noble/hashes/esm/scrypt.d.ts +0 -34
- package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/scrypt.js +0 -228
- package/node_modules/@noble/hashes/esm/scrypt.js.map +0 -1
- package/node_modules/@noble/hashes/esm/sha1.d.ts +0 -11
- package/node_modules/@noble/hashes/esm/sha1.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/sha1.js +0 -11
- package/node_modules/@noble/hashes/esm/sha1.js.map +0 -1
- package/node_modules/@noble/hashes/esm/sha2.d.ts +0 -159
- package/node_modules/@noble/hashes/esm/sha2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/sha2.js +0 -375
- package/node_modules/@noble/hashes/esm/sha2.js.map +0 -1
- package/node_modules/@noble/hashes/esm/sha256.d.ts +0 -20
- package/node_modules/@noble/hashes/esm/sha256.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/sha256.js +0 -20
- package/node_modules/@noble/hashes/esm/sha256.js.map +0 -1
- package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +0 -142
- package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/sha3-addons.js +0 -393
- package/node_modules/@noble/hashes/esm/sha3-addons.js.map +0 -1
- package/node_modules/@noble/hashes/esm/sha3.d.ts +0 -53
- package/node_modules/@noble/hashes/esm/sha3.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/sha3.js +0 -234
- package/node_modules/@noble/hashes/esm/sha3.js.map +0 -1
- package/node_modules/@noble/hashes/esm/sha512.d.ts +0 -26
- package/node_modules/@noble/hashes/esm/sha512.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/sha512.js +0 -26
- package/node_modules/@noble/hashes/esm/sha512.js.map +0 -1
- package/node_modules/@noble/hashes/esm/utils.d.ts +0 -161
- package/node_modules/@noble/hashes/esm/utils.d.ts.map +0 -1
- package/node_modules/@noble/hashes/esm/utils.js +0 -281
- package/node_modules/@noble/hashes/esm/utils.js.map +0 -1
- package/node_modules/@noble/hashes/hkdf.d.ts +0 -36
- package/node_modules/@noble/hashes/hkdf.d.ts.map +0 -1
- package/node_modules/@noble/hashes/hkdf.js +0 -88
- package/node_modules/@noble/hashes/hkdf.js.map +0 -1
- package/node_modules/@noble/hashes/hmac.d.ts +0 -35
- package/node_modules/@noble/hashes/hmac.d.ts.map +0 -1
- package/node_modules/@noble/hashes/hmac.js +0 -91
- package/node_modules/@noble/hashes/hmac.js.map +0 -1
- package/node_modules/@noble/hashes/index.d.ts +0 -1
- package/node_modules/@noble/hashes/index.d.ts.map +0 -1
- package/node_modules/@noble/hashes/index.js +0 -33
- package/node_modules/@noble/hashes/index.js.map +0 -1
- package/node_modules/@noble/hashes/legacy.d.ts +0 -71
- package/node_modules/@noble/hashes/legacy.d.ts.map +0 -1
- package/node_modules/@noble/hashes/legacy.js +0 -287
- package/node_modules/@noble/hashes/legacy.js.map +0 -1
- package/node_modules/@noble/hashes/package.json +0 -266
- package/node_modules/@noble/hashes/pbkdf2.d.ts +0 -23
- package/node_modules/@noble/hashes/pbkdf2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/pbkdf2.js +0 -101
- package/node_modules/@noble/hashes/pbkdf2.js.map +0 -1
- package/node_modules/@noble/hashes/ripemd160.d.ts +0 -13
- package/node_modules/@noble/hashes/ripemd160.d.ts.map +0 -1
- package/node_modules/@noble/hashes/ripemd160.js +0 -16
- package/node_modules/@noble/hashes/ripemd160.js.map +0 -1
- package/node_modules/@noble/hashes/scrypt.d.ts +0 -34
- package/node_modules/@noble/hashes/scrypt.d.ts.map +0 -1
- package/node_modules/@noble/hashes/scrypt.js +0 -232
- package/node_modules/@noble/hashes/scrypt.js.map +0 -1
- package/node_modules/@noble/hashes/sha1.d.ts +0 -11
- package/node_modules/@noble/hashes/sha1.d.ts.map +0 -1
- package/node_modules/@noble/hashes/sha1.js +0 -14
- package/node_modules/@noble/hashes/sha1.js.map +0 -1
- package/node_modules/@noble/hashes/sha2.d.ts +0 -159
- package/node_modules/@noble/hashes/sha2.d.ts.map +0 -1
- package/node_modules/@noble/hashes/sha2.js +0 -384
- package/node_modules/@noble/hashes/sha2.js.map +0 -1
- package/node_modules/@noble/hashes/sha256.d.ts +0 -20
- package/node_modules/@noble/hashes/sha256.d.ts.map +0 -1
- package/node_modules/@noble/hashes/sha256.js +0 -23
- package/node_modules/@noble/hashes/sha256.js.map +0 -1
- package/node_modules/@noble/hashes/sha3-addons.d.ts +0 -142
- package/node_modules/@noble/hashes/sha3-addons.d.ts.map +0 -1
- package/node_modules/@noble/hashes/sha3-addons.js +0 -402
- package/node_modules/@noble/hashes/sha3-addons.js.map +0 -1
- package/node_modules/@noble/hashes/sha3.d.ts +0 -53
- package/node_modules/@noble/hashes/sha3.d.ts.map +0 -1
- package/node_modules/@noble/hashes/sha3.js +0 -239
- package/node_modules/@noble/hashes/sha3.js.map +0 -1
- package/node_modules/@noble/hashes/sha512.d.ts +0 -26
- package/node_modules/@noble/hashes/sha512.d.ts.map +0 -1
- package/node_modules/@noble/hashes/sha512.js +0 -29
- package/node_modules/@noble/hashes/sha512.js.map +0 -1
- package/node_modules/@noble/hashes/src/_assert.ts +0 -22
- package/node_modules/@noble/hashes/src/_blake.ts +0 -50
- package/node_modules/@noble/hashes/src/_md.ts +0 -176
- package/node_modules/@noble/hashes/src/_u64.ts +0 -91
- package/node_modules/@noble/hashes/src/argon2.ts +0 -497
- package/node_modules/@noble/hashes/src/blake1.ts +0 -534
- package/node_modules/@noble/hashes/src/blake2.ts +0 -486
- package/node_modules/@noble/hashes/src/blake2b.ts +0 -10
- package/node_modules/@noble/hashes/src/blake2s.ts +0 -20
- package/node_modules/@noble/hashes/src/blake3.ts +0 -272
- package/node_modules/@noble/hashes/src/crypto.ts +0 -9
- package/node_modules/@noble/hashes/src/cryptoNode.ts +0 -15
- package/node_modules/@noble/hashes/src/eskdf.ts +0 -187
- package/node_modules/@noble/hashes/src/hkdf.ts +0 -88
- package/node_modules/@noble/hashes/src/hmac.ts +0 -94
- package/node_modules/@noble/hashes/src/index.ts +0 -31
- package/node_modules/@noble/hashes/src/legacy.ts +0 -293
- package/node_modules/@noble/hashes/src/pbkdf2.ts +0 -122
- package/node_modules/@noble/hashes/src/ripemd160.ts +0 -12
- package/node_modules/@noble/hashes/src/scrypt.ts +0 -257
- package/node_modules/@noble/hashes/src/sha1.ts +0 -10
- package/node_modules/@noble/hashes/src/sha2.ts +0 -402
- package/node_modules/@noble/hashes/src/sha256.ts +0 -24
- package/node_modules/@noble/hashes/src/sha3-addons.ts +0 -499
- package/node_modules/@noble/hashes/src/sha3.ts +0 -258
- package/node_modules/@noble/hashes/src/sha512.ts +0 -34
- package/node_modules/@noble/hashes/src/utils.ts +0 -395
- package/node_modules/@noble/hashes/utils.d.ts +0 -161
- package/node_modules/@noble/hashes/utils.d.ts.map +0 -1
- package/node_modules/@noble/hashes/utils.js +0 -313
- package/node_modules/@noble/hashes/utils.js.map +0 -1
package/dist/mmtp-router.js
CHANGED
|
@@ -419,7 +419,6 @@ function serial32Precedes(a, b) {
|
|
|
419
419
|
|
|
420
420
|
// ../mmt-base/dist/fec-block-profile.js
|
|
421
421
|
var FEC_BLOCK_PROFILES = Object.freeze([
|
|
422
|
-
"k-padded-v1",
|
|
423
422
|
"iso-ssbg1-v1"
|
|
424
423
|
]);
|
|
425
424
|
|
|
@@ -4526,7 +4525,6 @@ var CmafBlockAssembler = class {
|
|
|
4526
4525
|
failedBlocks: 0
|
|
4527
4526
|
};
|
|
4528
4527
|
this.#config = {
|
|
4529
|
-
k: config.k,
|
|
4530
4528
|
timescale: config.timescale ?? 1e6,
|
|
4531
4529
|
trackId: config.trackId ?? 1,
|
|
4532
4530
|
trackType: config.trackType,
|
|
@@ -6712,6 +6710,21 @@ var FecReleaseSequencer = class {
|
|
|
6712
6710
|
this.#streams.delete(key);
|
|
6713
6711
|
}
|
|
6714
6712
|
}
|
|
6713
|
+
/**
|
|
6714
|
+
* The packet's FEC ended, so no block will resolve a held gap: release its
|
|
6715
|
+
* frames in order, each gap stalled as a discontinuity, and forget its
|
|
6716
|
+
* streams, so FEC configured on it again starts from a fresh one.
|
|
6717
|
+
*/
|
|
6718
|
+
endPacket(packetId) {
|
|
6719
|
+
for (const [key, stream] of this.#streams) {
|
|
6720
|
+
if (stream.packetId !== packetId) continue;
|
|
6721
|
+
while (stream.buf.length > 0 && stream.last !== null) {
|
|
6722
|
+
stream.discontinuity = true;
|
|
6723
|
+
this.#drain(stream);
|
|
6724
|
+
}
|
|
6725
|
+
this.#streams.delete(key);
|
|
6726
|
+
}
|
|
6727
|
+
}
|
|
6715
6728
|
discardPacket(packetId) {
|
|
6716
6729
|
for (const [key, stream] of this.#streams) {
|
|
6717
6730
|
if (stream.packetId !== packetId) continue;
|
|
@@ -7094,6 +7107,13 @@ var MmtpContainerParser = class _MmtpContainerParser {
|
|
|
7094
7107
|
markFecDiscontinuity(packetId, catalogTrackName) {
|
|
7095
7108
|
this.#fecSequencer?.markDiscontinuity(this.#streamKey(packetId, catalogTrackName));
|
|
7096
7109
|
}
|
|
7110
|
+
/**
|
|
7111
|
+
* The FEC of a packet ID ended: release the frames the FEC release gate
|
|
7112
|
+
* holds for it in order, each gap stalled, and forget its gated streams.
|
|
7113
|
+
*/
|
|
7114
|
+
endFecRelease(packetId) {
|
|
7115
|
+
this.#fecSequencer?.endPacket(packetId);
|
|
7116
|
+
}
|
|
7097
7117
|
/**
|
|
7098
7118
|
* MPU and data-unit identity of one MMTP packet, parsed in place (no copy,
|
|
7099
7119
|
* no reassembly). Null for non-MPU packets and packets that do not parse.
|
|
@@ -8489,6 +8509,8 @@ var MmtpRouter = class {
|
|
|
8489
8509
|
*/
|
|
8490
8510
|
#onPublisherRestart;
|
|
8491
8511
|
#publisherRestarts = 0;
|
|
8512
|
+
/** Inits delivered with no onTrackInit handler for their packetId (MOQT-01). */
|
|
8513
|
+
#unmappedInitDeliveries = 0;
|
|
8492
8514
|
// FEC Payload IDs left unread because their (owner) packetId had no
|
|
8493
8515
|
// configured fec.blockProfile (see #noteUnreadableFecPayloadId).
|
|
8494
8516
|
#fecPayloadIdsWithoutProfile = 0;
|
|
@@ -8685,15 +8707,24 @@ var MmtpRouter = class {
|
|
|
8685
8707
|
return NO_FEC_GEOMETRY_HORIZON;
|
|
8686
8708
|
}
|
|
8687
8709
|
const blockSpanMs = fec.interleaveDepthMsForPacket(packetId);
|
|
8710
|
+
const blockLifetimeMs = fec.blockLifetimeMsForPacket(packetId);
|
|
8711
|
+
if (blockSpanMs === void 0 || blockLifetimeMs === void 0) return NO_FEC_GEOMETRY_HORIZON;
|
|
8688
8712
|
if (blockSpanMs === 0) return NO_BLOCK_SPAN_HORIZON;
|
|
8689
8713
|
return {
|
|
8690
8714
|
kind: "fec-horizon",
|
|
8691
|
-
retentionMs: duplicateRetentionMs({
|
|
8692
|
-
blockSpanMs,
|
|
8693
|
-
blockLifetimeMs: fec.blockLifetimeMsForPacket(packetId)
|
|
8694
|
-
})
|
|
8715
|
+
retentionMs: duplicateRetentionMs({ blockSpanMs, blockLifetimeMs })
|
|
8695
8716
|
};
|
|
8696
8717
|
}
|
|
8718
|
+
/**
|
|
8719
|
+
* Init segments delivered for a packetId with no `onTrackInit` handler
|
|
8720
|
+
* since construction, whether the deprecated aggregate `onInitSegment`
|
|
8721
|
+
* callback then received them or nothing did. A supported deployment reads
|
|
8722
|
+
* 0 here; a non-zero value is the evidence that blocks removing the
|
|
8723
|
+
* aggregate callback (MOQT-01, BLO-21181).
|
|
8724
|
+
*/
|
|
8725
|
+
get unmappedInitDeliveryCount() {
|
|
8726
|
+
return this.#unmappedInitDeliveries;
|
|
8727
|
+
}
|
|
8697
8728
|
/** Publisher restarts detected on the multicast leg since construction. */
|
|
8698
8729
|
get publisherRestartCount() {
|
|
8699
8730
|
return this.#publisherRestarts;
|
|
@@ -8781,7 +8812,7 @@ var MmtpRouter = class {
|
|
|
8781
8812
|
/** Update MFU reassembly timeout. Source and FEC-recovery paths share the
|
|
8782
8813
|
* parser's single reassembler (BLO-8151), so one update covers both. */
|
|
8783
8814
|
setMfuTimeoutMs(ms) {
|
|
8784
|
-
if (ms <= 0) throw new Error("[MmtpRouter] mfuTimeoutMs must be > 0");
|
|
8815
|
+
if (ms !== null && ms <= 0) throw new Error("[MmtpRouter] mfuTimeoutMs must be > 0");
|
|
8785
8816
|
this.#parser.setMfuTimeoutMs(ms);
|
|
8786
8817
|
}
|
|
8787
8818
|
/** Update parser frame reordering for unordered multicast delivery.
|
|
@@ -8851,7 +8882,15 @@ var MmtpRouter = class {
|
|
|
8851
8882
|
onTrackPacket(packetId, cb) {
|
|
8852
8883
|
this.#trackPacketCallbacks.set(packetId, cb);
|
|
8853
8884
|
}
|
|
8854
|
-
/**
|
|
8885
|
+
/**
|
|
8886
|
+
* Register an init segment callback (ftyp+moov from MMTP MPU metadata).
|
|
8887
|
+
* Receives an init only for a packetId with no `onTrackInit` handler.
|
|
8888
|
+
*
|
|
8889
|
+
* @deprecated Use onTrackInit(packetId, cb). Still delivered as a fallback;
|
|
8890
|
+
* removed in the 1.0.0 major, no earlier than one minor release after this
|
|
8891
|
+
* deprecation reaches the `latest` dist-tag (BLO-21181). Count fallback
|
|
8892
|
+
* deliveries with `unmappedInitDeliveryCount`.
|
|
8893
|
+
*/
|
|
8855
8894
|
onInitSegment(cb) {
|
|
8856
8895
|
this.#onInitSegment = cb;
|
|
8857
8896
|
}
|
|
@@ -8865,17 +8904,16 @@ var MmtpRouter = class {
|
|
|
8865
8904
|
* When active, source frames are buffered per FEC block and emitted as
|
|
8866
8905
|
* multi-sample CMAF segments instead of per-frame callbacks. */
|
|
8867
8906
|
enableMseAssembler(packetId, config, catalogTrackName) {
|
|
8868
|
-
const k = this.#kForPacket(packetId);
|
|
8869
8907
|
const assemblerKey = this.#mseAssemblerKey(packetId, catalogTrackName);
|
|
8870
8908
|
const previous = this.#mseAssemblers.get(assemblerKey);
|
|
8871
8909
|
if (previous) {
|
|
8872
8910
|
previous.flush();
|
|
8873
8911
|
previous.dispose();
|
|
8874
8912
|
}
|
|
8875
|
-
const assembler = new CmafBlockAssembler(
|
|
8913
|
+
const assembler = new CmafBlockAssembler(config);
|
|
8876
8914
|
this.#mseAssemblers.set(assemblerKey, assembler);
|
|
8877
8915
|
console.log(
|
|
8878
|
-
`[MmtpRouter] MSE assembler enabled for packetId=${packetId}${catalogTrackName === void 0 ? "" : ` track=${catalogTrackName}`} (
|
|
8916
|
+
`[MmtpRouter] MSE assembler enabled for packetId=${packetId}${catalogTrackName === void 0 ? "" : ` track=${catalogTrackName}`} (${config.trackType})`
|
|
8879
8917
|
);
|
|
8880
8918
|
return assembler;
|
|
8881
8919
|
}
|
|
@@ -8984,6 +9022,21 @@ var MmtpRouter = class {
|
|
|
8984
9022
|
}
|
|
8985
9023
|
this.#fecMappersByPacketId.set(packetId, mapper);
|
|
8986
9024
|
}
|
|
9025
|
+
/**
|
|
9026
|
+
* Release the router side of a packetId whose FEC is ending: drop its block
|
|
9027
|
+
* mapper and end its FEC release gating. Frames the gate holds are released
|
|
9028
|
+
* in order, each gap stalled (no block will resolve it), not stranded. Call
|
|
9029
|
+
* before FECManager.releasePacket, while the gate can still read its blocks.
|
|
9030
|
+
*/
|
|
9031
|
+
releaseFecPacket(packetId) {
|
|
9032
|
+
this.#fecMappersByPacketId.delete(packetId);
|
|
9033
|
+
this.#withDeferredFecPokes(() => {
|
|
9034
|
+
this.#parser.endFecRelease(packetId);
|
|
9035
|
+
for (const [key, poke] of this.#pendingFecPokes) {
|
|
9036
|
+
if (poke.packetId === packetId) this.#pendingFecPokes.delete(key);
|
|
9037
|
+
}
|
|
9038
|
+
});
|
|
9039
|
+
}
|
|
8987
9040
|
registerManifestTrack(context) {
|
|
8988
9041
|
if (!this.#manifestVerifier) throw new Error("manifest verifier is not configured");
|
|
8989
9042
|
this.#manifestVerifier.registerTrack(context);
|
|
@@ -9103,87 +9156,21 @@ var MmtpRouter = class {
|
|
|
9103
9156
|
this.#noteUnreadableFecPayloadId(ownerPacketId, "repair");
|
|
9104
9157
|
return;
|
|
9105
9158
|
}
|
|
9106
|
-
|
|
9107
|
-
this.#handleIsoRepair(ownerPacketId, catalogTrackName, parsed, "moq");
|
|
9108
|
-
return;
|
|
9109
|
-
}
|
|
9110
|
-
const repairSbn = this.#deriveRepairSbn(parsed.ssStart, parsed.ssbLength, ownerPacketId);
|
|
9111
|
-
if (repairSbn === null) return;
|
|
9112
|
-
const repairEsi = this.#kForPacket(ownerPacketId) + parsed.rsId;
|
|
9113
|
-
if (!this.#feedFecTransportSymbol(
|
|
9114
|
-
ownerPacketId,
|
|
9115
|
-
repairSbn,
|
|
9116
|
-
repairEsi,
|
|
9117
|
-
parsed.symbolData,
|
|
9118
|
-
"moq",
|
|
9119
|
-
catalogTrackName
|
|
9120
|
-
)) return;
|
|
9121
|
-
const recovered = catalogTrackName === void 0 ? this.#fecManager.feedRepairSymbol(
|
|
9122
|
-
ownerPacketId,
|
|
9123
|
-
parsed.ssStart,
|
|
9124
|
-
parsed.ssbLength,
|
|
9125
|
-
parsed.rsId,
|
|
9126
|
-
parsed.symbolData
|
|
9127
|
-
) : this.#fecManager.feedRepairSymbol(
|
|
9128
|
-
ownerPacketId,
|
|
9129
|
-
parsed.ssStart,
|
|
9130
|
-
parsed.ssbLength,
|
|
9131
|
-
parsed.rsId,
|
|
9132
|
-
parsed.symbolData,
|
|
9133
|
-
catalogTrackName
|
|
9134
|
-
);
|
|
9135
|
-
if (recovered) {
|
|
9136
|
-
const alreadyCompleted = catalogTrackName === void 0 ? this.#fecManager.isBlockCompleted(repairSbn, ownerPacketId) : this.#fecManager.isBlockCompleted(repairSbn, ownerPacketId, catalogTrackName);
|
|
9137
|
-
if (catalogTrackName === void 0) {
|
|
9138
|
-
this.#fecManager.cancelBlockTimeout(repairSbn, ownerPacketId);
|
|
9139
|
-
} else {
|
|
9140
|
-
this.#fecManager.cancelBlockTimeout(repairSbn, ownerPacketId, catalogTrackName);
|
|
9141
|
-
}
|
|
9142
|
-
if (!alreadyCompleted) {
|
|
9143
|
-
this.#fecManager.countRecovery(ownerPacketId, repairSbn, catalogTrackName);
|
|
9144
|
-
if (catalogTrackName === void 0) {
|
|
9145
|
-
this.#fecManager.markBlockCompleted(repairSbn, ownerPacketId);
|
|
9146
|
-
} else {
|
|
9147
|
-
this.#fecManager.markBlockCompleted(repairSbn, ownerPacketId, catalogTrackName);
|
|
9148
|
-
}
|
|
9149
|
-
this.#routeRecoveredBlock(
|
|
9150
|
-
repairSbn,
|
|
9151
|
-
recovered,
|
|
9152
|
-
ownerPacketId,
|
|
9153
|
-
catalogTrackName
|
|
9154
|
-
);
|
|
9155
|
-
}
|
|
9156
|
-
}
|
|
9159
|
+
this.#handleIsoRepair(ownerPacketId, catalogTrackName, parsed, "moq");
|
|
9157
9160
|
}
|
|
9158
9161
|
}
|
|
9159
|
-
// ──
|
|
9160
|
-
#kForPacket(packetId) {
|
|
9161
|
-
if (packetId != null)
|
|
9162
|
-
return this.#fecManager?.kForPacket?.(packetId) ?? this.#fecMappersByPacketId.get(packetId)?.k ?? this.#fecManager?.k ?? 4;
|
|
9163
|
-
return this.#defaultFecMapper?.k ?? this.#fecManager?.k ?? 4;
|
|
9164
|
-
}
|
|
9162
|
+
// ── Packet FEC geometry and block profile ───────────────────────
|
|
9165
9163
|
#symbolSizeForPacket(packetId) {
|
|
9166
|
-
if (packetId != null) return this.#fecManager?.symbolSizeForPacket?.(packetId) ??
|
|
9164
|
+
if (packetId != null) return this.#fecManager?.symbolSizeForPacket?.(packetId) ?? 0;
|
|
9167
9165
|
return this.#fecManager?.symbolSize ?? 0;
|
|
9168
9166
|
}
|
|
9169
|
-
/** Derive SBN/ESI from SS_ID using packet-scoped FEC geometry. */
|
|
9170
|
-
#deriveSbnEsi(ssId, packetId) {
|
|
9171
|
-
const mapper = packetId == null ? this.#defaultFecMapper : this.#fecMappersByPacketId.get(packetId) ?? null;
|
|
9172
|
-
if (mapper) return mapper.fromSsId(ssId);
|
|
9173
|
-
const k = this.#kForPacket(packetId);
|
|
9174
|
-
return { sbn: Math.floor(ssId / k), esi: ssId % k };
|
|
9175
|
-
}
|
|
9176
|
-
#deriveRepairSbn(ssStart, ssbLength, packetId) {
|
|
9177
|
-
const k = this.#kForPacket(packetId);
|
|
9178
|
-
if (ssbLength <= 0 || ssbLength > k || ssStart % k !== 0) return null;
|
|
9179
|
-
return Math.floor(ssStart / k);
|
|
9180
|
-
}
|
|
9181
9167
|
/**
|
|
9182
9168
|
* The configured block profile of a packetId, or undefined while it is
|
|
9183
9169
|
* unconfigured. With an FEC manager its per-packet configuration is the
|
|
9184
9170
|
* only source. A router without one still recovers symbols through its
|
|
9185
9171
|
* registered mapper, built with the catalog's explicit profile: the
|
|
9186
|
-
* packet's own mapper, else the default one (
|
|
9172
|
+
* packet's own mapper, else the default one. A NullBlockMapper (a stream
|
|
9173
|
+
* without an FEC instance) states none.
|
|
9187
9174
|
*/
|
|
9188
9175
|
#configuredBlockProfile(packetId) {
|
|
9189
9176
|
if (this.#fecManager) return this.#fecManager.blockProfileForPacket(packetId);
|
|
@@ -9191,9 +9178,10 @@ var MmtpRouter = class {
|
|
|
9191
9178
|
return mapper?.blockProfile ?? void 0;
|
|
9192
9179
|
}
|
|
9193
9180
|
/**
|
|
9194
|
-
* The block profile an FEC coordinate of `packetId` is read under
|
|
9195
|
-
*
|
|
9196
|
-
*
|
|
9181
|
+
* The block profile an FEC coordinate of `packetId` is read under:
|
|
9182
|
+
* `iso-ssbg1-v1`, the only one (`k-padded-v1` is retired and refused).
|
|
9183
|
+
* Throws while none is configured: such a packet has no FEC geometry, and
|
|
9184
|
+
* nothing is inferred from the wire or defaulted.
|
|
9197
9185
|
* Packet ingress leaves such a packet's FEC Payload ID unread first
|
|
9198
9186
|
* (#noteUnreadableFecPayloadId); a throw here is a wiring fault on a path
|
|
9199
9187
|
* that cannot hold an unconfigured packet.
|
|
@@ -9207,8 +9195,16 @@ var MmtpRouter = class {
|
|
|
9207
9195
|
}
|
|
9208
9196
|
return profile;
|
|
9209
9197
|
}
|
|
9210
|
-
|
|
9211
|
-
|
|
9198
|
+
/**
|
|
9199
|
+
* The block coordinates (SS_Start, ESI) of an FEC source: range membership
|
|
9200
|
+
* in a block a repair already stated (ISO/IEC 23008-1 C.5.3). Null while no
|
|
9201
|
+
* repair has stated its block, while its packetId has no configured block
|
|
9202
|
+
* profile, and without an FEC manager: SS_ID alone locates no block, so
|
|
9203
|
+
* nothing is derived from it.
|
|
9204
|
+
*/
|
|
9205
|
+
#locateFecSource(packetId, catalogTrackName, ssId) {
|
|
9206
|
+
if (this.#configuredBlockProfile(packetId) === void 0) return null;
|
|
9207
|
+
return this.#fecManager?.locateIsoSource?.(packetId, catalogTrackName, ssId) ?? null;
|
|
9212
9208
|
}
|
|
9213
9209
|
/**
|
|
9214
9210
|
* Explicit refusal to read an FEC Payload ID: its (owner) packetId has no
|
|
@@ -9227,21 +9223,20 @@ var MmtpRouter = class {
|
|
|
9227
9223
|
}
|
|
9228
9224
|
}
|
|
9229
9225
|
/**
|
|
9230
|
-
* The release-gate anchor of a recovered symbol: its
|
|
9231
|
-
*
|
|
9232
|
-
*
|
|
9226
|
+
* The release-gate anchor of a recovered symbol: its own SS_ID, SS_Start +
|
|
9227
|
+
* ESI modulo 2^32 (C.5.2), where a frame is gated by the SS_IDs between it
|
|
9228
|
+
* and the last released frame.
|
|
9233
9229
|
*/
|
|
9234
|
-
#fecAnchorForRecovered(
|
|
9235
|
-
return
|
|
9230
|
+
#fecAnchorForRecovered(blockStart, index) {
|
|
9231
|
+
return serial32Add(blockStart, index);
|
|
9236
9232
|
}
|
|
9237
9233
|
/**
|
|
9238
9234
|
* One iso-ssbg1-v1 repair symbol (ISO/IEC 23008-1 C.5.3). It states the
|
|
9239
9235
|
* block `[SS_Start, SS_Start + SSB_length)`; repair ESI = SSB_length +
|
|
9240
9236
|
* RS_ID (K' = SSB_length). The held sources it placed (and those of a
|
|
9241
9237
|
* repair-less span in front of it) are fed as first-arrival sources, then
|
|
9242
|
-
* the repair, the order they had on the wire, so a loss-free block
|
|
9243
|
-
* on its repair
|
|
9244
|
-
* block is dropped.
|
|
9238
|
+
* the repair, the order they had on the wire, so a loss-free block completes
|
|
9239
|
+
* clean on its repair. A repair contradicting a known block is dropped.
|
|
9245
9240
|
*/
|
|
9246
9241
|
#handleIsoRepair(ownerPacketId, catalogTrackName, repair, source) {
|
|
9247
9242
|
const fec = this.#fecManager;
|
|
@@ -9333,7 +9328,8 @@ var MmtpRouter = class {
|
|
|
9333
9328
|
return null;
|
|
9334
9329
|
}
|
|
9335
9330
|
/** Route a recovered FEC block through the parser + dedup pipeline.
|
|
9336
|
-
* Sync WASM decoders return K fixed-width
|
|
9331
|
+
* Sync WASM decoders return the block's K' = SSB_length fixed-width
|
|
9332
|
+
* ssbg_mode1 source symbols concatenated. */
|
|
9337
9333
|
routeRecoveredBlock(blockId, data, packetId, catalogTrackName) {
|
|
9338
9334
|
this.#routeRecoveredBlock(blockId, data, packetId, catalogTrackName);
|
|
9339
9335
|
}
|
|
@@ -9801,29 +9797,19 @@ var MmtpRouter = class {
|
|
|
9801
9797
|
resolvedLoss: (packetId, catalogTrackName, fromSbn, toSbn, releasedSbn) => {
|
|
9802
9798
|
const fec = this.#fecManager;
|
|
9803
9799
|
if (!fec?.blockResolution) return [];
|
|
9804
|
-
|
|
9805
|
-
|
|
9806
|
-
return fec.isoSpanResolution?.(packetId, catalogTrackName, releasedSbn, head) ?? null;
|
|
9807
|
-
}
|
|
9808
|
-
const highest = fec.highestSbn?.(packetId, catalogTrackName);
|
|
9809
|
-
const lost = [];
|
|
9810
|
-
for (let sbn = fromSbn; sbn <= toSbn; sbn++) {
|
|
9811
|
-
const resolution = fec.blockResolution(sbn, packetId, catalogTrackName);
|
|
9812
|
-
if (resolution === "pending") return null;
|
|
9813
|
-
if (resolution === "failed") {
|
|
9814
|
-
lost.push(sbn);
|
|
9815
|
-
} else if (resolution === "untracked") {
|
|
9816
|
-
if (sbn === releasedSbn) continue;
|
|
9817
|
-
if (highest === void 0 || sbn > highest) return null;
|
|
9818
|
-
lost.push(sbn);
|
|
9819
|
-
}
|
|
9820
|
-
}
|
|
9821
|
-
return lost;
|
|
9800
|
+
const head = fromSbn === releasedSbn ? toSbn : fromSbn;
|
|
9801
|
+
return fec.isoSpanResolution?.(packetId, catalogTrackName, releasedSbn, head) ?? null;
|
|
9822
9802
|
},
|
|
9823
9803
|
// The retention window itself: a frame is never still held when a block
|
|
9824
9804
|
// it waits on retires. Only consulted while resolvedLoss holds a gap,
|
|
9825
9805
|
// which needs blockResolution, so the check above guarantees the method.
|
|
9826
|
-
|
|
9806
|
+
// A packetId the manager no longer has configured (released) has no
|
|
9807
|
+
// block left to wait on: release its frames now (BLO-45953).
|
|
9808
|
+
holdLimitMs: (packetId) => {
|
|
9809
|
+
const fec = this.#fecManager;
|
|
9810
|
+
if (!fec?.terminalRetentionMsForPacket) return Infinity;
|
|
9811
|
+
return fec.terminalRetentionMsForPacket(packetId) ?? 0;
|
|
9812
|
+
},
|
|
9827
9813
|
decide: (before, after, lostBlocks, discontinuity) => {
|
|
9828
9814
|
const decision = this.#decideGap(before, after, lostBlocks, discontinuity);
|
|
9829
9815
|
this.#onFrameGap?.(decision);
|
|
@@ -9885,9 +9871,10 @@ var MmtpRouter = class {
|
|
|
9885
9871
|
}
|
|
9886
9872
|
/**
|
|
9887
9873
|
* The most media units a gap between two released frames can hold: the
|
|
9888
|
-
* FEC blocks
|
|
9889
|
-
* block touches (ceil(interleaveDepthMs / unit duration), §5.1).
|
|
9890
|
-
* either
|
|
9874
|
+
* FEC blocks between `before`'s anchor and `after`'s, times D, the media
|
|
9875
|
+
* units one block touches (ceil(interleaveDepthMs / unit duration), §5.1).
|
|
9876
|
+
* Null when either anchor, the unit duration or the catalog interleave is
|
|
9877
|
+
* unknown.
|
|
9891
9878
|
*/
|
|
9892
9879
|
#maxMissingUnits(before, after) {
|
|
9893
9880
|
const from = before.fecSbn;
|
|
@@ -9900,7 +9887,7 @@ var MmtpRouter = class {
|
|
|
9900
9887
|
const denominator = BigInt(timing.durationTicks) * 1000n;
|
|
9901
9888
|
const unitsPerBlock = (numerator + denominator - 1n) / denominator;
|
|
9902
9889
|
const blocks = BigInt(
|
|
9903
|
-
(
|
|
9890
|
+
(serial32Precedes(from, to) ? serial32Distance(from, to) : serial32Distance(to, from)) + 1
|
|
9904
9891
|
);
|
|
9905
9892
|
const bound = unitsPerBlock * blocks;
|
|
9906
9893
|
return bound > BigInt(Number.MAX_SAFE_INTEGER) ? null : Number(bound);
|
|
@@ -9950,8 +9937,9 @@ var MmtpRouter = class {
|
|
|
9950
9937
|
const cb = this.#trackInitCallbacks.get(packetId);
|
|
9951
9938
|
if (cb) {
|
|
9952
9939
|
cb(data);
|
|
9953
|
-
} else
|
|
9954
|
-
this.#
|
|
9940
|
+
} else {
|
|
9941
|
+
this.#unmappedInitDeliveries++;
|
|
9942
|
+
this.#onInitSegment?.(data);
|
|
9955
9943
|
}
|
|
9956
9944
|
console.log(
|
|
9957
9945
|
`[MmtpRouter] Init delivered for packetId=${packetId}${catalogTrackName === void 0 ? "" : ` track=${catalogTrackName}`} (${data.byteLength}B)`
|
|
@@ -9993,9 +9981,9 @@ var MmtpRouter = class {
|
|
|
9993
9981
|
if (!info.isRepair && this.#manifestVerifier && !manifestAdmitted) {
|
|
9994
9982
|
let identity = manifestIdentity;
|
|
9995
9983
|
if (!identity && info.fecPayloadId && !fecUnreadable && (this.#resolveManifestIdentityForRoute || this.#resolveManifestIdentity)) {
|
|
9996
|
-
const coordinates = this.#deriveSbnEsi(info.fecPayloadId.ssId, info.packetId);
|
|
9997
9984
|
const catalogTrackName = catalogTrackNameForPacket(ingress, info.packetId);
|
|
9998
|
-
|
|
9985
|
+
const coordinates = this.#locateFecSource(info.packetId, catalogTrackName, info.fecPayloadId.ssId);
|
|
9986
|
+
identity = coordinates === null ? void 0 : (this.#resolveManifestIdentityForRoute ? this.#resolveManifestIdentityForRoute({
|
|
9999
9987
|
packetId: info.packetId,
|
|
10000
9988
|
sbn: coordinates.sbn,
|
|
10001
9989
|
esi: coordinates.esi,
|
|
@@ -10047,79 +10035,7 @@ var MmtpRouter = class {
|
|
|
10047
10035
|
this.#noteUnreadableFecPayloadId(ownerPacketId, "repair");
|
|
10048
10036
|
return;
|
|
10049
10037
|
}
|
|
10050
|
-
|
|
10051
|
-
this.#handleIsoRepair(ownerPacketId, catalogTrackNameForPacket(ingress, ownerPacketId), repair, source);
|
|
10052
|
-
return;
|
|
10053
|
-
}
|
|
10054
|
-
const repairSbn = this.#deriveRepairSbn(repair.ssStart, repair.ssbLength, ownerPacketId);
|
|
10055
|
-
if (repairSbn === null) return;
|
|
10056
|
-
const repairEsi = this.#kForPacket(ownerPacketId) + repair.rsId;
|
|
10057
|
-
if (!this.#feedFecTransportSymbol(
|
|
10058
|
-
ownerPacketId,
|
|
10059
|
-
repairSbn,
|
|
10060
|
-
repairEsi,
|
|
10061
|
-
repair.symbolData,
|
|
10062
|
-
source,
|
|
10063
|
-
catalogTrackNameForPacket(ingress, ownerPacketId)
|
|
10064
|
-
)) return;
|
|
10065
|
-
const repairCatalogTrackName = catalogTrackNameForPacket(ingress, ownerPacketId);
|
|
10066
|
-
if (repairCatalogTrackName === void 0) {
|
|
10067
|
-
this.#fecManager.noteBlockActivity?.(repairSbn, ownerPacketId);
|
|
10068
|
-
} else {
|
|
10069
|
-
this.#fecManager.noteBlockActivity?.(
|
|
10070
|
-
repairSbn,
|
|
10071
|
-
ownerPacketId,
|
|
10072
|
-
repairCatalogTrackName
|
|
10073
|
-
);
|
|
10074
|
-
}
|
|
10075
|
-
const recovered = repairCatalogTrackName === void 0 ? this.#fecManager.feedRepairSymbol(
|
|
10076
|
-
ownerPacketId,
|
|
10077
|
-
repair.ssStart,
|
|
10078
|
-
repair.ssbLength,
|
|
10079
|
-
repair.rsId,
|
|
10080
|
-
repair.symbolData
|
|
10081
|
-
) : this.#fecManager.feedRepairSymbol(
|
|
10082
|
-
ownerPacketId,
|
|
10083
|
-
repair.ssStart,
|
|
10084
|
-
repair.ssbLength,
|
|
10085
|
-
repair.rsId,
|
|
10086
|
-
repair.symbolData,
|
|
10087
|
-
repairCatalogTrackName
|
|
10088
|
-
);
|
|
10089
|
-
if (recovered) {
|
|
10090
|
-
const alreadyCompleted = repairCatalogTrackName === void 0 ? this.#fecManager.isBlockCompleted(repairSbn, ownerPacketId) : this.#fecManager.isBlockCompleted(
|
|
10091
|
-
repairSbn,
|
|
10092
|
-
ownerPacketId,
|
|
10093
|
-
repairCatalogTrackName
|
|
10094
|
-
);
|
|
10095
|
-
if (repairCatalogTrackName === void 0) {
|
|
10096
|
-
this.#fecManager.cancelBlockTimeout(repairSbn, ownerPacketId);
|
|
10097
|
-
} else {
|
|
10098
|
-
this.#fecManager.cancelBlockTimeout(
|
|
10099
|
-
repairSbn,
|
|
10100
|
-
ownerPacketId,
|
|
10101
|
-
repairCatalogTrackName
|
|
10102
|
-
);
|
|
10103
|
-
}
|
|
10104
|
-
if (!alreadyCompleted) {
|
|
10105
|
-
this.#fecManager.countRecovery(ownerPacketId, repairSbn, repairCatalogTrackName);
|
|
10106
|
-
if (repairCatalogTrackName === void 0) {
|
|
10107
|
-
this.#fecManager.markBlockCompleted(repairSbn, ownerPacketId);
|
|
10108
|
-
} else {
|
|
10109
|
-
this.#fecManager.markBlockCompleted(
|
|
10110
|
-
repairSbn,
|
|
10111
|
-
ownerPacketId,
|
|
10112
|
-
repairCatalogTrackName
|
|
10113
|
-
);
|
|
10114
|
-
}
|
|
10115
|
-
this.#routeRecoveredBlock(
|
|
10116
|
-
repairSbn,
|
|
10117
|
-
recovered,
|
|
10118
|
-
ownerPacketId,
|
|
10119
|
-
catalogTrackNameForPacket(ingress, ownerPacketId)
|
|
10120
|
-
);
|
|
10121
|
-
}
|
|
10122
|
-
}
|
|
10038
|
+
this.#handleIsoRepair(ownerPacketId, catalogTrackNameForPacket(ingress, ownerPacketId), repair, source);
|
|
10123
10039
|
}
|
|
10124
10040
|
} else {
|
|
10125
10041
|
if (this.#classifyPacketId(info.packetId) === null) return;
|
|
@@ -10143,8 +10059,8 @@ var MmtpRouter = class {
|
|
|
10143
10059
|
}
|
|
10144
10060
|
const duplicates = this.#stream(info.packetId, catalogTrackName).duplicates;
|
|
10145
10061
|
const fecPayloadId = fecUnreadable ? null : info.fecPayloadId;
|
|
10146
|
-
const
|
|
10147
|
-
const coords =
|
|
10062
|
+
const fecSource = this.#fecManager !== null && fecPayloadId != null;
|
|
10063
|
+
const coords = fecSource && fecPayloadId ? this.#locateFecSource(info.packetId, catalogTrackName, fecPayloadId.ssId) ?? void 0 : void 0;
|
|
10148
10064
|
duplicates.advance(coords?.sbn);
|
|
10149
10065
|
if (source === "multicast" && !overlapCopy && !releasedFromQuarantine && catalogTrackName !== void 0 && duplicates.predatesHorizon(info.sequenceNumber, fecPayloadId?.ssId)) {
|
|
10150
10066
|
this.#publisherRestarts++;
|
|
@@ -10159,9 +10075,8 @@ var MmtpRouter = class {
|
|
|
10159
10075
|
}
|
|
10160
10076
|
if (this.#fecManager && fecPayloadId && coords) {
|
|
10161
10077
|
const fecId = fecPayloadId;
|
|
10162
|
-
const symbolSize = this.#symbolSizeForPacket(info.packetId);
|
|
10163
10078
|
const rawSymbol = packet.subarray(0, packet.length - 4);
|
|
10164
|
-
const oversized =
|
|
10079
|
+
const oversized = !(this.#fecManager.isoSourceFits?.(info.packetId, rawSymbol.length) ?? false);
|
|
10165
10080
|
let overlapBlockCompleted = false;
|
|
10166
10081
|
if (overlapCopy) {
|
|
10167
10082
|
overlapBlockCompleted = catalogTrackName === void 0 ? this.#fecManager.isBlockCompleted(coords.sbn, info.packetId) : this.#fecManager.isBlockCompleted(
|
|
@@ -10196,7 +10111,7 @@ var MmtpRouter = class {
|
|
|
10196
10111
|
}
|
|
10197
10112
|
parseSourceSymbol = (overlapCopy ? !overlapBlockCompleted : sourceSymbolAccepted) && !duplicates.parsedSymbols.has(fecId.ssId);
|
|
10198
10113
|
fecInfo = { sbn: coords.sbn, esi: coords.esi, oversized };
|
|
10199
|
-
} else if (
|
|
10114
|
+
} else if (fecSource && this.#fecManager && fecPayloadId) {
|
|
10200
10115
|
const ssId = fecPayloadId.ssId;
|
|
10201
10116
|
if (overlapCopy) {
|
|
10202
10117
|
parseSourceSymbol = !duplicates.parsedSymbols.has(ssId);
|
|
@@ -10230,12 +10145,13 @@ var MmtpRouter = class {
|
|
|
10230
10145
|
this.#feedViaParser(packet, info, fecInfo, {
|
|
10231
10146
|
source,
|
|
10232
10147
|
catalogTrackName,
|
|
10233
|
-
|
|
10148
|
+
// An FEC source frame is anchored by its own SS_ID (C.5.2).
|
|
10149
|
+
...fecSource && fecPayloadId ? { fecSbn: fecPayloadId.ssId } : {}
|
|
10234
10150
|
}, parsed);
|
|
10235
10151
|
}
|
|
10236
10152
|
if (this.#classifyPacketId(info.packetId) === null) return;
|
|
10237
|
-
if (this.#fecManager && fecPayloadId && sourceSymbolAccepted && sourceSymbolTrackable) {
|
|
10238
|
-
const { sbn, esi } =
|
|
10153
|
+
if (this.#fecManager && fecPayloadId && coords && sourceSymbolAccepted && sourceSymbolTrackable) {
|
|
10154
|
+
const { sbn, esi } = coords;
|
|
10239
10155
|
if (this.#classifyPacketId(info.packetId) !== null && this.#fecManager.isTrackConfigured?.(info.packetId) !== false) {
|
|
10240
10156
|
this.#fecManager.trackBlock(
|
|
10241
10157
|
sbn,
|
|
@@ -10669,7 +10585,6 @@ var MmtpRouter = class {
|
|
|
10669
10585
|
// ── Private: FEC recovery routing ───────────────────────────────
|
|
10670
10586
|
/** Route WASM-recovered block through appropriate path based on container kind. */
|
|
10671
10587
|
#routeRecoveredBlock(blockId, recovered, ownerPacketId, catalogTrackName) {
|
|
10672
|
-
const k = this.#kForPacket(ownerPacketId);
|
|
10673
10588
|
const packetSymbolSize = this.#symbolSizeForPacket(ownerPacketId);
|
|
10674
10589
|
if (ownerPacketId === void 0) {
|
|
10675
10590
|
throw new Error("[MmtpRouter] a recovered FEC block needs its owner packetId to read its fec.blockProfile");
|
|
@@ -10682,7 +10597,6 @@ var MmtpRouter = class {
|
|
|
10682
10597
|
}
|
|
10683
10598
|
const symbolSize = packetSymbolSize;
|
|
10684
10599
|
const result = processFecBlock(recovered, {
|
|
10685
|
-
...blockProfile === "k-padded-v1" ? { k } : {},
|
|
10686
10600
|
symbolSize,
|
|
10687
10601
|
ownerPacketId,
|
|
10688
10602
|
blockProfile
|
|
@@ -10762,8 +10676,7 @@ var MmtpRouter = class {
|
|
|
10762
10676
|
const admission = verifier.admitObject(
|
|
10763
10677
|
{
|
|
10764
10678
|
...identity,
|
|
10765
|
-
packetId: ownerPacketId
|
|
10766
|
-
...ownerPacketId !== void 0 && this.#isIsoPacket(ownerPacketId) ? {} : { ssId: blockId * this.#kForPacket(ownerPacketId) + symbol.index }
|
|
10679
|
+
packetId: ownerPacketId
|
|
10767
10680
|
},
|
|
10768
10681
|
symbol.rawSymbol,
|
|
10769
10682
|
() => {
|
|
@@ -10866,7 +10779,7 @@ var MmtpRouter = class {
|
|
|
10866
10779
|
rapFlag: sym.fragment.rapFlag,
|
|
10867
10780
|
recovered: true,
|
|
10868
10781
|
deliveryProvenance,
|
|
10869
|
-
fecSbn: this.#fecAnchorForRecovered(
|
|
10782
|
+
fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
|
|
10870
10783
|
...catalogTrackName === void 0 ? {} : { catalogTrackName }
|
|
10871
10784
|
});
|
|
10872
10785
|
continue;
|
|
@@ -10978,7 +10891,7 @@ var MmtpRouter = class {
|
|
|
10978
10891
|
rapFlag: assembled.rapFlag,
|
|
10979
10892
|
recovered: true,
|
|
10980
10893
|
...assembled.deliveryProvenance === void 0 ? {} : { deliveryProvenance: assembled.deliveryProvenance },
|
|
10981
|
-
fecSbn: this.#fecAnchorForRecovered(
|
|
10894
|
+
fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
|
|
10982
10895
|
...recoveredCatalogTrackName === void 0 ? {} : { catalogTrackName: recoveredCatalogTrackName }
|
|
10983
10896
|
});
|
|
10984
10897
|
continue;
|
|
@@ -11115,7 +11028,7 @@ var MmtpRouter = class {
|
|
|
11115
11028
|
rapFlag: sym.fragment.rapFlag,
|
|
11116
11029
|
recovered: true,
|
|
11117
11030
|
deliveryProvenance,
|
|
11118
|
-
fecSbn: this.#fecAnchorForRecovered(
|
|
11031
|
+
fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
|
|
11119
11032
|
...catalogTrackName === void 0 ? {} : { catalogTrackName }
|
|
11120
11033
|
});
|
|
11121
11034
|
} else {
|
|
@@ -11194,7 +11107,7 @@ var MmtpRouter = class {
|
|
|
11194
11107
|
rapFlag: assembled.rapFlag,
|
|
11195
11108
|
recovered: true,
|
|
11196
11109
|
deliveryProvenance,
|
|
11197
|
-
fecSbn: this.#fecAnchorForRecovered(
|
|
11110
|
+
fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
|
|
11198
11111
|
...assembled.catalogTrackName === void 0 ? {} : { catalogTrackName: assembled.catalogTrackName }
|
|
11199
11112
|
});
|
|
11200
11113
|
}
|
|
@@ -11229,7 +11142,7 @@ var MmtpRouter = class {
|
|
|
11229
11142
|
...sym.fragment.sampleNumber === void 0 ? {} : { sampleNumber: sym.fragment.sampleNumber },
|
|
11230
11143
|
recovered: true,
|
|
11231
11144
|
deliveryProvenance,
|
|
11232
|
-
fecSbn: this.#fecAnchorForRecovered(
|
|
11145
|
+
fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
|
|
11233
11146
|
...catalogTrackName === void 0 ? {} : { catalogTrackName }
|
|
11234
11147
|
});
|
|
11235
11148
|
continue;
|