@blockcast/mmt-container 0.3.0 → 0.4.0-main.1cd3cdea89da
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 +33 -16
- package/dist/browser-runtime.js +14814 -14255
- package/dist/browser-runtime.js.map +4 -4
- package/dist/carp-catalog.d.ts +24 -19
- package/dist/carp-catalog.d.ts.map +1 -1
- package/dist/carp-catalog.js +29 -14
- package/dist/carp-catalog.js.map +4 -4
- 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 +60 -23
- package/dist/catalog-fec-params.js.map +4 -4
- package/dist/catalog-network-source.js +1 -7
- package/dist/catalog-network-source.js.map +4 -4
- 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/cmcd-producer.d.ts.map +1 -1
- package/dist/cmcd-producer.js +0 -4
- package/dist/cmcd-producer.js.map +2 -2
- package/dist/delivery-catalog.d.ts +124 -0
- package/dist/delivery-catalog.d.ts.map +1 -0
- package/dist/delivery-catalog.js +1857 -0
- package/dist/delivery-catalog.js.map +7 -0
- 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 +52 -30
- package/dist/fec-manager.d.ts.map +1 -1
- package/dist/fec-manager.js +338 -293
- package/dist/fec-manager.js.map +4 -4
- package/dist/fec-state.d.ts +19 -31
- package/dist/fec-state.d.ts.map +1 -1
- package/dist/fec-state.js +4 -10
- package/dist/fec-state.js.map +4 -4
- package/dist/fec-worker-setup.d.ts +18 -14
- package/dist/fec-worker-setup.d.ts.map +1 -1
- package/dist/fec-worker-setup.js +81 -96
- package/dist/fec-worker-setup.js.map +4 -4
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +2 -2
- package/dist/iso-block-locator.js +1 -7
- package/dist/iso-block-locator.js.map +4 -4
- 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 +24 -30
- package/dist/mfu-reassembler.js.map +4 -4
- package/dist/mmtp-container-parser.d.ts +14 -11
- package/dist/mmtp-container-parser.d.ts.map +1 -1
- package/dist/mmtp-container-parser.js +126 -99
- package/dist/mmtp-container-parser.js.map +4 -4
- package/dist/mmtp-container-parser.no-modules.js +151 -108
- package/dist/mmtp-container-parser.no-modules.js.map +4 -4
- package/dist/mmtp-decode-pipeline.js +126 -99
- package/dist/mmtp-decode-pipeline.js.map +4 -4
- package/dist/mmtp-router.d.ts +51 -29
- package/dist/mmtp-router.d.ts.map +1 -1
- package/dist/mmtp-router.js +260 -326
- package/dist/mmtp-router.js.map +4 -4
- package/dist/multicast-input.js +1 -7
- package/dist/multicast-input.js.map +4 -4
- package/dist/multicast-manager.d.ts +72 -6
- package/dist/multicast-manager.d.ts.map +1 -1
- package/dist/multicast-manager.js +882 -673
- 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 +44 -26
- package/dist/multicast-transport.js.map +4 -4
- package/dist/multicast-unwrap.js +29 -35
- package/dist/multicast-unwrap.js.map +4 -4
- package/dist/no-modules.js +147 -106
- package/dist/no-modules.js.map +4 -4
- package/dist/repair-fetch.d.ts +116 -21
- package/dist/repair-fetch.d.ts.map +1 -1
- package/dist/repair-fetch.js +114 -34
- package/dist/repair-fetch.js.map +4 -4
- package/dist/repair-layers.d.ts +18 -7
- package/dist/repair-layers.d.ts.map +1 -1
- package/dist/repair-layers.js +12 -10
- package/dist/repair-layers.js.map +4 -4
- package/dist/signaling.js +2 -11
- package/dist/signaling.js.map +4 -4
- package/dist/timestamp-codec.js +24 -30
- package/dist/timestamp-codec.js.map +4 -4
- 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 +1 -7
- package/dist/wasm-mfu-reassembler.js.map +4 -4
- package/dist/wasm-mmtp-container-parser.js +126 -99
- package/dist/wasm-mmtp-container-parser.js.map +4 -4
- package/package.json +7 -14
- package/schemas/catalog.schema.json +3 -3
- package/src/carp-catalog.ts +46 -24
- package/src/catalog-fec-params.ts +173 -64
- package/src/cmaf-block-assembler.ts +1 -4
- package/src/cmcd-producer.ts +0 -6
- package/src/delivery-catalog.ts +498 -0
- package/src/delta-fallback-config.ts +72 -0
- package/src/fec-manager.ts +457 -334
- package/src/fec-state.ts +20 -32
- package/src/fec-worker-setup.ts +109 -90
- package/src/index.ts +32 -0
- package/src/media-router.ts +59 -21
- package/src/mmtp-container-parser.ts +106 -20
- package/src/mmtp-router.ts +189 -330
- package/src/multicast-manager.ts +265 -86
- package/src/multicast-transport.ts +16 -9
- package/src/repair-fetch.ts +273 -43
- package/src/repair-layers.ts +28 -8
- package/src/track-session.ts +28 -9
- package/test-vectors/catalog/README.md +37 -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-endpoint-relay-address.json +39 -0
- 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-amt-manual-relay.json +38 -0
- 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/test-vectors/delivery-catalog/README.md +11 -0
- package/test-vectors/delivery-catalog/negative/missing-block-profile.json +58 -0
- package/test-vectors/delivery-catalog/negative/packet-id-signaling.json +59 -0
- package/test-vectors/delivery-catalog/negative/retired-k-padded-block-profile.json +59 -0
- package/test-vectors/delivery-catalog/positive/dash.json +56 -0
- package/test-vectors/delivery-catalog/positive/mmtp-source-only.json +43 -0
- 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/repair-fetch.d.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* D-28 shared repair-fetch scheduler.
|
|
3
3
|
*
|
|
4
|
-
* Player-agnostic orchestration for per-
|
|
4
|
+
* Player-agnostic orchestration for per-block on-demand MoQ FEC repair
|
|
5
5
|
* backfill. Each player (moqtail client, hang watch, Shaka MSF bridge)
|
|
6
|
-
* supplies only its protocol verb via {@link RepairFetchTransport}
|
|
6
|
+
* supplies only its protocol verb via {@link RepairFetchTransport}, fetching
|
|
7
|
+
* one block's repair group. Blocks are `iso-ssbg1-v1` (ISO/IEC 23008-1
|
|
8
|
+
* ssbg_mode1, the only FEC block profile), so that group's MoQ id is the
|
|
9
|
+
* 62-bit wrap-epoch-extended SS_Start, `extSsStart(wrapEpoch, ssStart)` from
|
|
10
|
+
* `@blockcast/mmt-fec` -- never the 32-bit block key itself (see
|
|
11
|
+
* `RepairFetchRequest.sbn`):
|
|
7
12
|
*
|
|
8
|
-
* - moqtail: standalone FETCH (FetchType.Standalone)
|
|
9
|
-
* - moq-lite/hang: Subscribe with startGroup=
|
|
10
|
-
* propagates startGroup upstream to pull the past group from the
|
|
11
|
-
* producer cache)
|
|
13
|
+
* - moqtail: standalone FETCH (FetchType.Standalone) of that one group
|
|
14
|
+
* - moq-lite/hang: Subscribe with startGroup = endGroup = that group (the
|
|
15
|
+
* relay propagates startGroup upstream to pull the past group from the
|
|
16
|
+
* origin's producer cache)
|
|
12
17
|
*
|
|
13
18
|
* Everything else — registration, fire-time repair-track resolution,
|
|
14
19
|
* keyframe-first admission, preemption, feeding symbols, and in-flight slot
|
|
@@ -52,13 +57,36 @@
|
|
|
52
57
|
* than sent and cancelled -- and an admitted FETCH holds the block open to
|
|
53
58
|
* that deadline, so the multicast span elapsing never aborts it.
|
|
54
59
|
*
|
|
60
|
+
* Keyframe late-repair budget: a block that may hold a RAP may be given a
|
|
61
|
+
* longer deadline than the playout budget (`keyframeRepairBudgetMs`). Losing
|
|
62
|
+
* such a block costs every frame up to the next keyframe, so holding it open
|
|
63
|
+
* for a FETCH that lands within the budget trades a short hold for a GOP-long
|
|
64
|
+
* freeze. At a small playout budget (a low-latency target) the presentation
|
|
65
|
+
* deadline alone leaves less than one round trip by the time the multicast
|
|
66
|
+
* wait gives up on the block, so every keyframe request would be refused
|
|
67
|
+
* (`rtt-exceeds-budget`). Eligible (`keyframeBudgetEligible`): a `keyframe`
|
|
68
|
+
* block (in-band RAP evidence), and an `unknown` block only while its
|
|
69
|
+
* stream's classifier is `classifying`, where `unknown` means the window rule
|
|
70
|
+
* could not exclude a RAP. Under `all-protected` every block reads `unknown`
|
|
71
|
+
* whatever it holds, so there only RAP evidence earns the budget. Never
|
|
72
|
+
* audio (P1) or delta (P2), and never a block its repair group cannot
|
|
73
|
+
* complete (received sources + RSB_length < K'). The hold ends when its
|
|
74
|
+
* FETCH ends without making the block decodable, not at the budget.
|
|
75
|
+
*
|
|
76
|
+
* Every deadline is capped by the release gate's hold ceiling measured the
|
|
77
|
+
* way the gate measures it: from the earliest frame it holds for the stream
|
|
78
|
+
* (a surviving frame of the block itself is routed before a repair symbol
|
|
79
|
+
* states the block, so before its anchor), never later than from the anchor.
|
|
80
|
+
* A FETCH landing after the gate forced that frame out would recover media
|
|
81
|
+
* the gate then drops as stale.
|
|
82
|
+
*
|
|
55
83
|
* The scheduler arms no timers. A fetch ends when its transport completes or
|
|
56
84
|
* throws, when it is preempted, when any later scheduling event finds it past
|
|
57
85
|
* its presentation deadline, when its block resolves (recovered, or failed at
|
|
58
86
|
* that deadline), on track reset, or on dispose.
|
|
59
87
|
*/
|
|
60
|
-
import type
|
|
61
|
-
import { type BlockClass } from './block-policy.js';
|
|
88
|
+
import { type FecBlockProfile } from '@blockcast/mmt-base';
|
|
89
|
+
import { type BlockClass, type ClassifierMode, type RepairPriority } from './block-policy.js';
|
|
62
90
|
import type { RepairLifecycleObserver } from './multicast-manager.js';
|
|
63
91
|
/**
|
|
64
92
|
* The highest value in the Source Media priority range of
|
|
@@ -100,18 +128,24 @@ export interface RepairFetchRequest {
|
|
|
100
128
|
/** Repair track whose block `sbn` is fetched. */
|
|
101
129
|
readonly repairTrack: string;
|
|
102
130
|
/**
|
|
103
|
-
* The block's key
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
131
|
+
* The block's key: its 32-bit SS_Start (ISO/IEC 23008-1 C.5.3). The field
|
|
132
|
+
* keeps its historical name, but ssbg_mode1 blocks have no source block
|
|
133
|
+
* number (BLO-35597 D2a). The repair group's MoQ id is the 62-bit
|
|
134
|
+
* `extSsStart(wrapEpoch, sbn)`; a receiver that knows only a lost SS_ID
|
|
135
|
+
* fetches `repairFetchRange(lostSsId, kMax, anchor)`, where `anchor` is
|
|
136
|
+
* `{ previousBlockStart }` (the extended start of the last block delimited
|
|
137
|
+
* before it) or `{ reference }` (an epoch reference). Never use it as a
|
|
138
|
+
* group id directly: SS_Start wraps at 2^32, a MoQ group id never goes
|
|
139
|
+
* backwards.
|
|
112
140
|
*/
|
|
113
141
|
readonly sbn: number;
|
|
114
|
-
/**
|
|
142
|
+
/**
|
|
143
|
+
* The block profile `sbn` is keyed by: the catalog `fec.blockProfile`,
|
|
144
|
+
* which is always `iso-ssbg1-v1`. Required, and validated with
|
|
145
|
+
* `parseFecBlockProfile` when the request is queued, so a stream configured
|
|
146
|
+
* with any other token (the retired `k-padded-v1` included) never reaches
|
|
147
|
+
* the transport.
|
|
148
|
+
*/
|
|
115
149
|
readonly blockProfile: FecBlockProfile;
|
|
116
150
|
/** The source packetId the block belongs to. */
|
|
117
151
|
readonly packetId: number;
|
|
@@ -191,6 +225,22 @@ export type RepairFetchPriority = {
|
|
|
191
225
|
* least 192, i.e. max(repair, 192); declined when it carries none.
|
|
192
226
|
*/
|
|
193
227
|
export declare function repairFetchSubscriberPriority(blockClass: BlockClass, target: Pick<RepairTarget, 'sourcePriority' | 'repairPriority'>): RepairFetchPriority;
|
|
228
|
+
/** What `RepairFetchHost.fecManager.blockSymbolCounts` reports for one open block. */
|
|
229
|
+
export interface BlockSymbolCounts {
|
|
230
|
+
readonly sources: number;
|
|
231
|
+
readonly repairs: number;
|
|
232
|
+
readonly authoredLength: number | undefined;
|
|
233
|
+
readonly repairGroupLength: number | undefined;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Whether a block of `blockClass` may get the keyframe late-repair budget:
|
|
237
|
+
* a `keyframe` block always (in-band RAP evidence), an `unknown` block only
|
|
238
|
+
* while its stream's classifier is `classifying` (the window rule could not
|
|
239
|
+
* exclude a RAP). An `all-protected` stream reads `unknown` for every block,
|
|
240
|
+
* delta-only ones included, so there `unknown` is no evidence of a RAP and
|
|
241
|
+
* earns no hold. Audio and delta never do.
|
|
242
|
+
*/
|
|
243
|
+
export declare function keyframeBudgetEligible(blockClass: BlockClass, classifierMode: ClassifierMode | undefined): boolean;
|
|
194
244
|
export interface WireRepairFetchOptions {
|
|
195
245
|
resolveTarget: ResolveRepairTarget;
|
|
196
246
|
transport: RepairFetchTransport;
|
|
@@ -217,6 +267,20 @@ export interface WireRepairFetchOptions {
|
|
|
217
267
|
* (`presentation-delay-unavailable`).
|
|
218
268
|
*/
|
|
219
269
|
presentationDelayMs: (packetId: number, catalogTrackName?: string) => number;
|
|
270
|
+
/**
|
|
271
|
+
* How long after the first symbol of a block that may hold a RAP a repair
|
|
272
|
+
* FETCH of it may still land, in ms (optional). Such a block
|
|
273
|
+
* (`keyframeBudgetEligible`) gets the larger of this and
|
|
274
|
+
* `presentationDelayMs`, still never later than the release gate's hold
|
|
275
|
+
* ceiling and never earlier than the multicast wait; RTT admission is
|
|
276
|
+
* unchanged. Losing a keyframe block costs the rest of its GOP, so a player
|
|
277
|
+
* may hold the block (and the frames released after it) while its FETCH is
|
|
278
|
+
* in flight rather than freeze to the next keyframe. Absent, throwing, or
|
|
279
|
+
* not finite and positive: every block gets the presentation deadline
|
|
280
|
+
* alone. Never applied to audio, delta, or an `unknown` block of an
|
|
281
|
+
* `all-protected` stream.
|
|
282
|
+
*/
|
|
283
|
+
keyframeRepairBudgetMs?: (packetId: number, catalogTrackName?: string) => number;
|
|
220
284
|
}
|
|
221
285
|
/** Why the D-28 layer asked for a repair: the block's class at its deadline. */
|
|
222
286
|
export type RepairSubscribeCallback = (sbn: number, packetId: number, catalogTrackName: string | undefined, blockClass: BlockClass) => void;
|
|
@@ -232,17 +296,38 @@ export type RepairSkipReason =
|
|
|
232
296
|
export interface RepairFetchHost {
|
|
233
297
|
readonly fecManager: {
|
|
234
298
|
blockProfileForPacket(packetId: number): FecBlockProfile | undefined;
|
|
235
|
-
repairFetchTimeoutMsForBlock(sbn: number, packetId: number, catalogTrackName?: string): number;
|
|
299
|
+
repairFetchTimeoutMsForBlock(sbn: number, packetId: number, catalogTrackName?: string): number | undefined;
|
|
236
300
|
/** Receiver-local time of the block's first accepted symbol, if any. */
|
|
237
301
|
blockAnchorAtMs(sbn: number, packetId: number, catalogTrackName?: string): number | undefined;
|
|
302
|
+
/** The stream's classifier mode (optional; absent reads as unknown). */
|
|
303
|
+
classifierModeFor?(packetId: number, catalogTrackName?: string): {
|
|
304
|
+
readonly mode: ClassifierMode;
|
|
305
|
+
};
|
|
306
|
+
/**
|
|
307
|
+
* An open block's received sources and distinct repair symbols, its K'
|
|
308
|
+
* (SSB_length) and RSB_length (optional). The repair group carries
|
|
309
|
+
* RSB_length symbols, so it can complete the block only when
|
|
310
|
+
* sources + RSB_length >= K'; a FETCH that ended leaving fewer than K'
|
|
311
|
+
* distinct symbols cannot be decoding it.
|
|
312
|
+
*/
|
|
313
|
+
blockSymbolCounts?(sbn: number, packetId: number, catalogTrackName?: string): BlockSymbolCounts | undefined;
|
|
238
314
|
/** How long a terminal block stays authoritative: the release-gate hold ceiling. */
|
|
239
|
-
terminalRetentionMsForPacket(packetId: number): number;
|
|
315
|
+
terminalRetentionMsForPacket(packetId: number): number | undefined;
|
|
240
316
|
/** Keep the block open to `untilAtMs` for an admitted FETCH. */
|
|
241
317
|
holdBlockForRepair(sbn: number, packetId: number, catalogTrackName: string | undefined, untilAtMs: number): boolean;
|
|
242
318
|
/** The admitted FETCH ended without delivering: back to the multicast wait. */
|
|
243
319
|
releaseRepairHold(sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
244
320
|
};
|
|
245
321
|
onRepairSubscribe(cb: RepairSubscribeCallback): void;
|
|
322
|
+
/**
|
|
323
|
+
* Arrival time of the earliest frame the in-order release gate holds for
|
|
324
|
+
* the stream, or undefined (optional; absent, the block's anchor bounds the
|
|
325
|
+
* ceiling alone). The gate releases that frame `terminalRetentionMsForPacket`
|
|
326
|
+
* after it, whatever its blocks are doing.
|
|
327
|
+
*/
|
|
328
|
+
earliestGatedFrameAtMs?(packetId: number, catalogTrackName?: string): number | undefined;
|
|
329
|
+
/** The keyframe budget extended a request's deadline by `extensionMs` (optional). */
|
|
330
|
+
noteKeyframeBudgetGranted?(extensionMs: number, sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
246
331
|
addRepairLifecycleObserver(observer: RepairLifecycleObserver): () => void;
|
|
247
332
|
addTrackResetObserver(observer: (packetId: number, catalogTrackName: string) => void): () => void;
|
|
248
333
|
clearRepairForBlock(sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
@@ -250,11 +335,21 @@ export interface RepairFetchHost {
|
|
|
250
335
|
noteRepairScheduling(type: 'repair-preempted' | 'repair-deferred', sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
251
336
|
/** A request whose wire priority the catalog could not supply. */
|
|
252
337
|
noteRepairPriority(action: 'omitted' | 'declined', reason: RepairPriorityReason, blockClass: BlockClass, sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
253
|
-
/**
|
|
338
|
+
/**
|
|
339
|
+
* A request the scheduler did not send (see RepairSkipReason).
|
|
340
|
+
* `measurement.priority` is the request's repair priority (0 keyframe or
|
|
341
|
+
* unknown, 1 audio, 2 delta).
|
|
342
|
+
*/
|
|
254
343
|
noteRepairSkipped(reason: RepairSkipReason, measurement: {
|
|
255
344
|
readonly rttMs: number | null;
|
|
256
345
|
readonly budgetMs: number;
|
|
346
|
+
readonly priority?: RepairPriority;
|
|
257
347
|
}, sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
348
|
+
/**
|
|
349
|
+
* A FETCH the scheduler admitted and handed to the transport (optional):
|
|
350
|
+
* every attempt, a retry or a reprioritised restart included.
|
|
351
|
+
*/
|
|
352
|
+
noteRepairFetchSent?(priority: RepairPriority, sbn: number, packetId: number, catalogTrackName?: string): void;
|
|
258
353
|
}
|
|
259
354
|
/**
|
|
260
355
|
* Wire the D-28 repair-fetch scheduler onto a MulticastManager.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-fetch.d.ts","sourceRoot":"","sources":["../src/repair-fetch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"repair-fetch.d.ts","sourceRoot":"","sources":["../src/repair-fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/repair-fetch.js
CHANGED
|
@@ -1,27 +1,8 @@
|
|
|
1
|
-
//
|
|
2
|
-
import { deriveFecInterleaveDepth } from "@blockcast/mmt-fec";
|
|
3
|
-
function repairPriorityForClass(blockClass) {
|
|
4
|
-
switch (blockClass) {
|
|
5
|
-
case "keyframe":
|
|
6
|
-
case "unknown":
|
|
7
|
-
return 0;
|
|
8
|
-
case "audio":
|
|
9
|
-
return 1;
|
|
10
|
-
case "delta":
|
|
11
|
-
return 2;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// ../mmt-alta-parse/dist/index.js
|
|
1
|
+
// ../mmt-base/dist/mmtp.js
|
|
16
2
|
var MPU_HEADER_SIZE = 8;
|
|
17
3
|
var MPU_LENGTH_FIELD_SIZE = 2;
|
|
18
4
|
var MPU_HEADER_REMAINDER_SIZE = MPU_HEADER_SIZE - MPU_LENGTH_FIELD_SIZE;
|
|
19
5
|
|
|
20
|
-
// ../mmt-base/dist/mmtp.js
|
|
21
|
-
var MPU_HEADER_SIZE2 = 8;
|
|
22
|
-
var MPU_LENGTH_FIELD_SIZE2 = 2;
|
|
23
|
-
var MPU_HEADER_REMAINDER_SIZE2 = MPU_HEADER_SIZE2 - MPU_LENGTH_FIELD_SIZE2;
|
|
24
|
-
|
|
25
6
|
// ../mmt-base/dist/ntp-short.js
|
|
26
7
|
var NTP_SHORT_BITS = 32;
|
|
27
8
|
var NTP_SHORT_MODULUS = 2 ** NTP_SHORT_BITS;
|
|
@@ -29,9 +10,33 @@ var NTP_SHORT_HALF_RANGE = 2 ** (NTP_SHORT_BITS - 1);
|
|
|
29
10
|
|
|
30
11
|
// ../mmt-base/dist/fec-block-profile.js
|
|
31
12
|
var FEC_BLOCK_PROFILES = Object.freeze([
|
|
32
|
-
"k-padded-v1",
|
|
33
13
|
"iso-ssbg1-v1"
|
|
34
14
|
]);
|
|
15
|
+
function isFecBlockProfile(value) {
|
|
16
|
+
return value === "iso-ssbg1-v1";
|
|
17
|
+
}
|
|
18
|
+
function parseFecBlockProfile(value, where) {
|
|
19
|
+
if (isFecBlockProfile(value))
|
|
20
|
+
return value;
|
|
21
|
+
if (value === void 0) {
|
|
22
|
+
throw new Error(`${where} is required: name the FEC block profile ("iso-ssbg1-v1")`);
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`${where} must be "iso-ssbg1-v1" (got ${JSON.stringify(value)})`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// src/block-policy.ts
|
|
28
|
+
import { deriveFecInterleaveDepth } from "@blockcast/mmt-fec";
|
|
29
|
+
function repairPriorityForClass(blockClass) {
|
|
30
|
+
switch (blockClass) {
|
|
31
|
+
case "keyframe":
|
|
32
|
+
case "unknown":
|
|
33
|
+
return 0;
|
|
34
|
+
case "audio":
|
|
35
|
+
return 1;
|
|
36
|
+
case "delta":
|
|
37
|
+
return 2;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
35
40
|
|
|
36
41
|
// src/repair-layers.ts
|
|
37
42
|
var REPAIR_PRIORITY_MIN = 192;
|
|
@@ -54,6 +59,10 @@ function repairFetchSubscriberPriority(blockClass, target) {
|
|
|
54
59
|
if (!isMoqtPriority(repair)) return { kind: "decline", reason: "repair-priority-invalid" };
|
|
55
60
|
return { kind: "carry", subscriberPriority: Math.max(repair, REPAIR_PRIORITY_MIN) };
|
|
56
61
|
}
|
|
62
|
+
function keyframeBudgetEligible(blockClass, classifierMode) {
|
|
63
|
+
if (blockClass === "keyframe") return true;
|
|
64
|
+
return blockClass === "unknown" && classifierMode === "classifying";
|
|
65
|
+
}
|
|
57
66
|
function wireRepairFetch(mc, opts) {
|
|
58
67
|
if (!Number.isSafeInteger(opts.attemptLimit) || opts.attemptLimit < 1) {
|
|
59
68
|
throw new Error(
|
|
@@ -91,6 +100,16 @@ function wireRepairFetch(mc, opts) {
|
|
|
91
100
|
run.controller.abort();
|
|
92
101
|
if (reason === "preempted") releaseHold(entry);
|
|
93
102
|
};
|
|
103
|
+
const readKeyframeBudget = (packetId, catalogTrackName) => {
|
|
104
|
+
const reader = opts.keyframeRepairBudgetMs;
|
|
105
|
+
if (reader === void 0) return null;
|
|
106
|
+
try {
|
|
107
|
+
const budgetMs = reader(packetId, catalogTrackName);
|
|
108
|
+
return Number.isFinite(budgetMs) && budgetMs > 0 ? budgetMs : null;
|
|
109
|
+
} catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
94
113
|
const readRtt = () => {
|
|
95
114
|
try {
|
|
96
115
|
const rtt = opts.reliableRttMs();
|
|
@@ -108,7 +127,7 @@ function wireRepairFetch(mc, opts) {
|
|
|
108
127
|
clearRepair(entry.sbn, entry.packetId, entry.catalogTrackName);
|
|
109
128
|
mc.noteRepairSkipped(
|
|
110
129
|
rttMs === null ? "rtt-unmeasured" : "rtt-exceeds-budget",
|
|
111
|
-
{ rttMs, budgetMs },
|
|
130
|
+
{ rttMs, budgetMs, priority: entry.priority },
|
|
112
131
|
entry.sbn,
|
|
113
132
|
entry.packetId,
|
|
114
133
|
entry.catalogTrackName
|
|
@@ -147,6 +166,7 @@ function wireRepairFetch(mc, opts) {
|
|
|
147
166
|
const start = (entry, counted = true) => {
|
|
148
167
|
if (!admit(entry, performance.now())) return;
|
|
149
168
|
if (counted) entry.attempts++;
|
|
169
|
+
mc.noteRepairFetchSent?.(entry.priority, entry.sbn, entry.packetId, entry.catalogTrackName);
|
|
150
170
|
const run = { controller: new AbortController(), stopped: null };
|
|
151
171
|
entry.running = run;
|
|
152
172
|
mc.fecManager.holdBlockForRepair(
|
|
@@ -184,6 +204,25 @@ function wireRepairFetch(mc, opts) {
|
|
|
184
204
|
if (urgentOutstanding()) return;
|
|
185
205
|
queued.filter((entry) => entry.priority === 2).sort((a, b) => a.deadlineAt - b.deadlineAt || a.order - b.order).forEach((entry) => start(entry));
|
|
186
206
|
};
|
|
207
|
+
const symbolCounts = (sbn, packetId, catalogTrackName) => {
|
|
208
|
+
try {
|
|
209
|
+
return mc.fecManager.blockSymbolCounts?.(sbn, packetId, catalogTrackName);
|
|
210
|
+
} catch {
|
|
211
|
+
return void 0;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const decodable = (entry) => {
|
|
215
|
+
const counts = symbolCounts(entry.sbn, entry.packetId, entry.catalogTrackName);
|
|
216
|
+
if (counts === void 0 || counts.authoredLength === void 0) return true;
|
|
217
|
+
return counts.sources + counts.repairs >= counts.authoredLength;
|
|
218
|
+
};
|
|
219
|
+
const groupCanComplete = (sbn, packetId, catalogTrackName) => {
|
|
220
|
+
const counts = symbolCounts(sbn, packetId, catalogTrackName);
|
|
221
|
+
if (counts === void 0 || counts.authoredLength === void 0 || counts.repairGroupLength === void 0) {
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
return counts.sources + counts.repairGroupLength >= counts.authoredLength;
|
|
225
|
+
};
|
|
187
226
|
const finish = (entry, run, fed, error) => {
|
|
188
227
|
if (run.stopped !== null || entry.running !== run || entries.get(entry.key) !== entry) {
|
|
189
228
|
return;
|
|
@@ -191,7 +230,7 @@ function wireRepairFetch(mc, opts) {
|
|
|
191
230
|
entry.running = null;
|
|
192
231
|
if (error === void 0) {
|
|
193
232
|
retire(entry);
|
|
194
|
-
if (fed === 0) {
|
|
233
|
+
if (fed === 0 || !decodable(entry)) {
|
|
195
234
|
releaseHold(entry);
|
|
196
235
|
clearRepair(entry.sbn, entry.packetId, entry.catalogTrackName);
|
|
197
236
|
}
|
|
@@ -217,7 +256,7 @@ function wireRepairFetch(mc, opts) {
|
|
|
217
256
|
if (profile === void 0) {
|
|
218
257
|
throw new Error(`[RepairFetch] packetId=${packetId} has no configured fec.blockProfile`);
|
|
219
258
|
}
|
|
220
|
-
return profile;
|
|
259
|
+
return parseFecBlockProfile(profile, `[RepairFetch] packetId=${packetId} fec.blockProfile`);
|
|
221
260
|
};
|
|
222
261
|
const execute = async (entry, run) => {
|
|
223
262
|
let fed = 0;
|
|
@@ -265,6 +304,17 @@ function wireRepairFetch(mc, opts) {
|
|
|
265
304
|
if (wire === null) return;
|
|
266
305
|
entry2.priority = promoted;
|
|
267
306
|
entry2.subscriberPriority = wire.subscriberPriority;
|
|
307
|
+
const promotedDeadline = presentationDeadlineAt(
|
|
308
|
+
entry2.sbn,
|
|
309
|
+
entry2.packetId,
|
|
310
|
+
entry2.catalogTrackName,
|
|
311
|
+
performance.now(),
|
|
312
|
+
event.to
|
|
313
|
+
);
|
|
314
|
+
if (promotedDeadline !== null && promotedDeadline.deadlineAt > entry2.deadlineAt) {
|
|
315
|
+
entry2.deadlineAt = promotedDeadline.deadlineAt;
|
|
316
|
+
noteBudget(entry2, promotedDeadline.extensionMs);
|
|
317
|
+
}
|
|
268
318
|
if (entry2.running) {
|
|
269
319
|
stop(entry2, "reprioritized");
|
|
270
320
|
start(entry2, false);
|
|
@@ -283,10 +333,12 @@ function wireRepairFetch(mc, opts) {
|
|
|
283
333
|
else if (entry.priority === 2 && entry.attempts === 0) note("repair-deferred", entry);
|
|
284
334
|
dispatch();
|
|
285
335
|
});
|
|
286
|
-
const presentationDeadlineAt = (sbn, packetId, catalogTrackName, now) => {
|
|
287
|
-
const
|
|
336
|
+
const presentationDeadlineAt = (sbn, packetId, catalogTrackName, now, blockClass) => {
|
|
337
|
+
const waitMs = mc.fecManager.repairFetchTimeoutMsForBlock(sbn, packetId, catalogTrackName);
|
|
338
|
+
if (waitMs === void 0) return null;
|
|
339
|
+
const waitDeadlineAt = now + waitMs;
|
|
288
340
|
const anchor = mc.fecManager.blockAnchorAtMs(sbn, packetId, catalogTrackName);
|
|
289
|
-
if (anchor === void 0) return waitDeadlineAt;
|
|
341
|
+
if (anchor === void 0) return { deadlineAt: waitDeadlineAt, extensionMs: 0 };
|
|
290
342
|
let delayMs;
|
|
291
343
|
try {
|
|
292
344
|
delayMs = opts.presentationDelayMs(packetId, catalogTrackName);
|
|
@@ -294,8 +346,33 @@ function wireRepairFetch(mc, opts) {
|
|
|
294
346
|
return null;
|
|
295
347
|
}
|
|
296
348
|
if (!(Number.isFinite(delayMs) && delayMs > 0)) return null;
|
|
297
|
-
const
|
|
298
|
-
|
|
349
|
+
const retentionMs = mc.fecManager.terminalRetentionMsForPacket(packetId);
|
|
350
|
+
if (retentionMs === void 0) return null;
|
|
351
|
+
const ceilingAt = Math.min(anchor, earliestGatedFrameAt(packetId, catalogTrackName) ?? anchor) + retentionMs;
|
|
352
|
+
const deadlineAt = (delay) => Math.max(waitDeadlineAt, Math.min(anchor + delay, ceilingAt));
|
|
353
|
+
const base = deadlineAt(delayMs);
|
|
354
|
+
const budgetMs = keyframeBudgetEligible(blockClass, classifierMode(packetId, catalogTrackName)) && groupCanComplete(sbn, packetId, catalogTrackName) ? readKeyframeBudget(packetId, catalogTrackName) : null;
|
|
355
|
+
if (budgetMs === null || budgetMs <= delayMs) return { deadlineAt: base, extensionMs: 0 };
|
|
356
|
+
const extended = deadlineAt(budgetMs);
|
|
357
|
+
return { deadlineAt: extended, extensionMs: extended - base };
|
|
358
|
+
};
|
|
359
|
+
const earliestGatedFrameAt = (packetId, catalogTrackName) => {
|
|
360
|
+
try {
|
|
361
|
+
const at = mc.earliestGatedFrameAtMs?.(packetId, catalogTrackName);
|
|
362
|
+
return at !== void 0 && Number.isFinite(at) ? at : void 0;
|
|
363
|
+
} catch {
|
|
364
|
+
return void 0;
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
const classifierMode = (packetId, catalogTrackName) => {
|
|
368
|
+
try {
|
|
369
|
+
return mc.fecManager.classifierModeFor?.(packetId, catalogTrackName).mode;
|
|
370
|
+
} catch {
|
|
371
|
+
return void 0;
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
const noteBudget = (entry, extensionMs) => {
|
|
375
|
+
if (extensionMs > 0) mc.noteKeyframeBudgetGranted?.(extensionMs, entry.sbn, entry.packetId, entry.catalogTrackName);
|
|
299
376
|
};
|
|
300
377
|
mc.onRepairSubscribe((sbn, packetId, catalogTrackName, blockClass) => {
|
|
301
378
|
if (disposed) {
|
|
@@ -333,12 +410,13 @@ function wireRepairFetch(mc, opts) {
|
|
|
333
410
|
return;
|
|
334
411
|
}
|
|
335
412
|
const now = performance.now();
|
|
336
|
-
const
|
|
337
|
-
|
|
413
|
+
const priority = repairPriorityForClass(blockClass);
|
|
414
|
+
const deadline = presentationDeadlineAt(sbn, packetId, catalogTrackName, now, blockClass);
|
|
415
|
+
if (deadline === null) {
|
|
338
416
|
clearRepair(sbn, packetId, catalogTrackName);
|
|
339
417
|
mc.noteRepairSkipped(
|
|
340
418
|
"presentation-delay-unavailable",
|
|
341
|
-
{ rttMs: readRtt(), budgetMs: 0 },
|
|
419
|
+
{ rttMs: readRtt(), budgetMs: 0, priority },
|
|
342
420
|
sbn,
|
|
343
421
|
packetId,
|
|
344
422
|
catalogTrackName
|
|
@@ -350,14 +428,15 @@ function wireRepairFetch(mc, opts) {
|
|
|
350
428
|
...identity,
|
|
351
429
|
repairTrack: target.repairTrack,
|
|
352
430
|
blockProfile,
|
|
353
|
-
priority
|
|
431
|
+
priority,
|
|
354
432
|
subscriberPriority: wire.subscriberPriority,
|
|
355
|
-
deadlineAt,
|
|
433
|
+
deadlineAt: deadline.deadlineAt,
|
|
356
434
|
order: enqueueOrder++,
|
|
357
435
|
attempts: 0,
|
|
358
436
|
running: null
|
|
359
437
|
};
|
|
360
438
|
entries.set(key, entry);
|
|
439
|
+
noteBudget(entry, deadline.extensionMs);
|
|
361
440
|
if (entry.priority < 2) preemptDeltas();
|
|
362
441
|
dispatch();
|
|
363
442
|
});
|
|
@@ -375,6 +454,7 @@ function wireRepairFetch(mc, opts) {
|
|
|
375
454
|
}
|
|
376
455
|
export {
|
|
377
456
|
SOURCE_MEDIA_PRIORITY_MAX,
|
|
457
|
+
keyframeBudgetEligible,
|
|
378
458
|
repairFetchSubscriberPriority,
|
|
379
459
|
wireRepairFetch
|
|
380
460
|
};
|