@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/src/repair-fetch.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
|
|
@@ -58,7 +63,7 @@
|
|
|
58
63
|
* that deadline), on track reset, or on dispose.
|
|
59
64
|
*/
|
|
60
65
|
|
|
61
|
-
import type
|
|
66
|
+
import { parseFecBlockProfile, type FecBlockProfile } from '@blockcast/mmt-base'
|
|
62
67
|
import { repairPriorityForClass, type BlockClass, type RepairPriority } from './block-policy.js'
|
|
63
68
|
import type { RepairLifecycleObserver } from './multicast-manager.js'
|
|
64
69
|
import { REPAIR_PRIORITY_MIN } from './repair-layers.js'
|
|
@@ -112,18 +117,24 @@ export interface RepairFetchRequest {
|
|
|
112
117
|
/** Repair track whose block `sbn` is fetched. */
|
|
113
118
|
readonly repairTrack: string
|
|
114
119
|
/**
|
|
115
|
-
* The block's key
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
120
|
+
* The block's key: its 32-bit SS_Start (ISO/IEC 23008-1 C.5.3). The field
|
|
121
|
+
* keeps its historical name, but ssbg_mode1 blocks have no source block
|
|
122
|
+
* number (BLO-35597 D2a). The repair group's MoQ id is the 62-bit
|
|
123
|
+
* `extSsStart(wrapEpoch, sbn)`; a receiver that knows only a lost SS_ID
|
|
124
|
+
* fetches `repairFetchRange(lostSsId, kMax, anchor)`, where `anchor` is
|
|
125
|
+
* `{ previousBlockStart }` (the extended start of the last block delimited
|
|
126
|
+
* before it) or `{ reference }` (an epoch reference). Never use it as a
|
|
127
|
+
* group id directly: SS_Start wraps at 2^32, a MoQ group id never goes
|
|
128
|
+
* backwards.
|
|
124
129
|
*/
|
|
125
130
|
readonly sbn: number
|
|
126
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* The block profile `sbn` is keyed by: the catalog `fec.blockProfile`,
|
|
133
|
+
* which is always `iso-ssbg1-v1`. Required, and validated with
|
|
134
|
+
* `parseFecBlockProfile` when the request is queued, so a stream configured
|
|
135
|
+
* with any other token (the retired `k-padded-v1` included) never reaches
|
|
136
|
+
* the transport.
|
|
137
|
+
*/
|
|
127
138
|
readonly blockProfile: FecBlockProfile
|
|
128
139
|
/** The source packetId the block belongs to. */
|
|
129
140
|
readonly packetId: number
|
|
@@ -273,11 +284,11 @@ export type RepairSkipReason =
|
|
|
273
284
|
export interface RepairFetchHost {
|
|
274
285
|
readonly fecManager: {
|
|
275
286
|
blockProfileForPacket(packetId: number): FecBlockProfile | undefined
|
|
276
|
-
repairFetchTimeoutMsForBlock(sbn: number, packetId: number, catalogTrackName?: string): number
|
|
287
|
+
repairFetchTimeoutMsForBlock(sbn: number, packetId: number, catalogTrackName?: string): number | undefined
|
|
277
288
|
/** Receiver-local time of the block's first accepted symbol, if any. */
|
|
278
289
|
blockAnchorAtMs(sbn: number, packetId: number, catalogTrackName?: string): number | undefined
|
|
279
290
|
/** How long a terminal block stays authoritative: the release-gate hold ceiling. */
|
|
280
|
-
terminalRetentionMsForPacket(packetId: number): number
|
|
291
|
+
terminalRetentionMsForPacket(packetId: number): number | undefined
|
|
281
292
|
/** Keep the block open to `untilAtMs` for an admitted FETCH. */
|
|
282
293
|
holdBlockForRepair(
|
|
283
294
|
sbn: number,
|
|
@@ -568,15 +579,18 @@ export function wireRepairFetch(mc: RepairFetchHost, opts: WireRepairFetchOption
|
|
|
568
579
|
|
|
569
580
|
// The profile the block key is in; a stream reaching repair was configured
|
|
570
581
|
// from its catalog, so an absent profile is a wiring fault, not a default.
|
|
571
|
-
//
|
|
572
|
-
//
|
|
573
|
-
//
|
|
582
|
+
// Any token other than `iso-ssbg1-v1` (the retired `k-padded-v1` included)
|
|
583
|
+
// is one too: `parseFecBlockProfile` refuses it, whatever an untyped host
|
|
584
|
+
// returns. Resolved when the request arrives (onRepairSubscribe below),
|
|
585
|
+
// never inside execute: there its throw would read as an ordinary fetch
|
|
586
|
+
// failure, warned once per block while the stream silently lost unicast
|
|
587
|
+
// repair.
|
|
574
588
|
const blockProfileOf = (packetId: number): FecBlockProfile => {
|
|
575
|
-
const profile = mc.fecManager.blockProfileForPacket(packetId)
|
|
589
|
+
const profile: unknown = mc.fecManager.blockProfileForPacket(packetId)
|
|
576
590
|
if (profile === undefined) {
|
|
577
591
|
throw new Error(`[RepairFetch] packetId=${packetId} has no configured fec.blockProfile`)
|
|
578
592
|
}
|
|
579
|
-
return profile
|
|
593
|
+
return parseFecBlockProfile(profile, `[RepairFetch] packetId=${packetId} fec.blockProfile`)
|
|
580
594
|
}
|
|
581
595
|
|
|
582
596
|
const execute = async (entry: RepairEntry, run: FetchRun): Promise<void> => {
|
|
@@ -667,8 +681,11 @@ export function wireRepairFetch(mc: RepairFetchHost, opts: WireRepairFetchOption
|
|
|
667
681
|
catalogTrackName: string | undefined,
|
|
668
682
|
now: number,
|
|
669
683
|
): number | null => {
|
|
670
|
-
|
|
671
|
-
|
|
684
|
+
// Undefined: the packetId is no longer configured (released), so it has
|
|
685
|
+
// no repair budget.
|
|
686
|
+
const waitMs = mc.fecManager.repairFetchTimeoutMsForBlock(sbn, packetId, catalogTrackName)
|
|
687
|
+
if (waitMs === undefined) return null
|
|
688
|
+
const waitDeadlineAt = now + waitMs
|
|
672
689
|
const anchor = mc.fecManager.blockAnchorAtMs(sbn, packetId, catalogTrackName)
|
|
673
690
|
if (anchor === undefined) return waitDeadlineAt
|
|
674
691
|
let delayMs: number
|
|
@@ -678,7 +695,9 @@ export function wireRepairFetch(mc: RepairFetchHost, opts: WireRepairFetchOption
|
|
|
678
695
|
return null
|
|
679
696
|
}
|
|
680
697
|
if (!(Number.isFinite(delayMs) && delayMs > 0)) return null
|
|
681
|
-
const
|
|
698
|
+
const retentionMs = mc.fecManager.terminalRetentionMsForPacket(packetId)
|
|
699
|
+
if (retentionMs === undefined) return null
|
|
700
|
+
const ceilingAt = anchor + retentionMs
|
|
682
701
|
return Math.max(waitDeadlineAt, Math.min(anchor + delayMs, ceilingAt))
|
|
683
702
|
}
|
|
684
703
|
|
package/src/repair-layers.ts
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
// rendition's `fec.repairTrack` and needs no `repair.renditions` entry; an
|
|
21
21
|
// entry there is optional and, when present, must agree with the source.
|
|
22
22
|
|
|
23
|
-
import { parseFecBlockProfile, type FecBlockProfile } from "@blockcast/mmt-base";
|
|
23
|
+
import { isFecBlockProfile, parseFecBlockProfile, type FecBlockProfile } from "@blockcast/mmt-base";
|
|
24
24
|
|
|
25
25
|
/** Lowest MoQT-scale priority a repair track may declare. */
|
|
26
26
|
export const REPAIR_PRIORITY_MIN = 192;
|
|
@@ -44,7 +44,8 @@ export type RepairContractCode =
|
|
|
44
44
|
| "track_repair_overlay"
|
|
45
45
|
| "track_repair_geometry"
|
|
46
46
|
| "track_fec_bounds"
|
|
47
|
-
| "track_fec_block_profile"
|
|
47
|
+
| "track_fec_block_profile"
|
|
48
|
+
| "track_fec_block_profile_unimplemented";
|
|
48
49
|
|
|
49
50
|
/** Reports one contract violation and never returns. */
|
|
50
51
|
export type RepairContractFail = (code: RepairContractCode, path: string, message: string) => never;
|
|
@@ -69,12 +70,23 @@ export const throwRepairContractError: RepairContractFail = (code, path, message
|
|
|
69
70
|
* the one rule both catalog dialects, the CMSF validator and the per-track
|
|
70
71
|
* resolver apply.
|
|
71
72
|
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* may omit
|
|
76
|
-
*
|
|
77
|
-
*
|
|
73
|
+
* draft-ramadan-moq-fec §5.1 defines exactly one profile, `iso-ssbg1-v1`, and
|
|
74
|
+
* it is the only one this library implements. A `fec` block that declares an
|
|
75
|
+
* FEC instance (any `algorithm` other than `"none"`) MUST name it; a block
|
|
76
|
+
* declaring no FEC instance may omit the token (returns undefined), but a token
|
|
77
|
+
* it does carry must be implemented. Failures are reported at `path`:
|
|
78
|
+
*
|
|
79
|
+
* - `track_fec_block_profile_unimplemented`: a non-empty string that names no
|
|
80
|
+
* implemented profile. The retired Blockcast-private `k-padded-v1` is one
|
|
81
|
+
* such token; a near-miss such as `"iso-ssbg1"` is another, never
|
|
82
|
+
* normalized.
|
|
83
|
+
* - `track_fec_block_profile`: no token on a declared FEC instance, or a value
|
|
84
|
+
* that is not a non-empty string.
|
|
85
|
+
*
|
|
86
|
+
* The token is never defaulted and never inferred from the wire. A receiver
|
|
87
|
+
* treats either failure as "FEC unavailable" for that track alone (it consumes
|
|
88
|
+
* the source without FEC and joins none of its repair tracks); a conformance
|
|
89
|
+
* validator rejects the catalog.
|
|
78
90
|
*
|
|
79
91
|
* @param path JSON path of the `blockProfile` field, for the error.
|
|
80
92
|
*/
|
|
@@ -97,6 +109,14 @@ export function readFecBlockProfile(
|
|
|
97
109
|
fail: RepairContractFail,
|
|
98
110
|
): FecBlockProfile | undefined {
|
|
99
111
|
if (value === undefined && !declaresFecInstance) return undefined;
|
|
112
|
+
if (isFecBlockProfile(value)) return value;
|
|
113
|
+
if (typeof value === "string" && value.length > 0) {
|
|
114
|
+
return fail(
|
|
115
|
+
"track_fec_block_profile_unimplemented",
|
|
116
|
+
path,
|
|
117
|
+
`${JSON.stringify(value)} is not an implemented FEC block profile; only "iso-ssbg1-v1" is implemented`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
100
120
|
try {
|
|
101
121
|
return parseFecBlockProfile(value, "blockProfile");
|
|
102
122
|
} catch (error) {
|
package/src/track-session.ts
CHANGED
|
@@ -172,24 +172,32 @@ export interface FecDeliveryWindowConfig {
|
|
|
172
172
|
export function computeFecDeliveryWindowMs(
|
|
173
173
|
config: FecDeliveryWindowConfig,
|
|
174
174
|
): number {
|
|
175
|
-
const fecInterleaveMs = config.interleaveDepthMs
|
|
176
175
|
const fecK = config.sourceSymbols
|
|
177
|
-
if (!Number.isFinite(fecInterleaveMs) || fecInterleaveMs <= 0) {
|
|
178
|
-
throw new Error(
|
|
179
|
-
`[TrackSession] fecInterleaveMs=${fecInterleaveMs}. ` +
|
|
180
|
-
`Derive a positive FEC interleave window from the stream catalog.`
|
|
181
|
-
)
|
|
182
|
-
}
|
|
183
176
|
if (!Number.isFinite(fecK) || fecK <= 0) {
|
|
184
177
|
throw new Error(
|
|
185
178
|
`[TrackSession] fecK=${fecK}. ` +
|
|
186
179
|
`Derive a positive FEC source-symbol count from the stream catalog.`
|
|
187
180
|
)
|
|
188
181
|
}
|
|
182
|
+
return fecSpanDeliveryWindowMs(config.interleaveDepthMs, config.jitterBufferMs)
|
|
183
|
+
}
|
|
189
184
|
|
|
185
|
+
/**
|
|
186
|
+
* The delivery window of a §5.1 span alone. Every window is this; K only
|
|
187
|
+
* validates a track's geometry in computeFecDeliveryWindowMs, so a caller
|
|
188
|
+
* with a span and no K (FECManager's stream-global envelope) uses this
|
|
189
|
+
* rather than invent one.
|
|
190
|
+
*/
|
|
191
|
+
export function fecSpanDeliveryWindowMs(interleaveDepthMs: number, jitterBufferMs?: number): number {
|
|
192
|
+
if (!Number.isFinite(interleaveDepthMs) || interleaveDepthMs <= 0) {
|
|
193
|
+
throw new Error(
|
|
194
|
+
`[TrackSession] fecInterleaveMs=${interleaveDepthMs}. ` +
|
|
195
|
+
`Derive a positive FEC interleave window from the stream catalog.`
|
|
196
|
+
)
|
|
197
|
+
}
|
|
190
198
|
// Absence stays absent; it does not authorize a synthesized reorder budget.
|
|
191
|
-
if (
|
|
192
|
-
return fecBlockBudgetMs(
|
|
199
|
+
if (jitterBufferMs === undefined) return Math.ceil(interleaveDepthMs)
|
|
200
|
+
return fecBlockBudgetMs(interleaveDepthMs, jitterBufferMs)
|
|
193
201
|
}
|
|
194
202
|
|
|
195
203
|
/** Convert the shared FEC delivery deadline into an integer media timescale. */
|
|
@@ -377,6 +385,17 @@ export class TrackSession {
|
|
|
377
385
|
/** multicast/amt → failing: loss detected, start hysteresis timer (Claim 9f). */
|
|
378
386
|
lossDetected(): void {
|
|
379
387
|
if (this.#state !== 'multicast' && this.#state !== 'amt') return
|
|
388
|
+
|
|
389
|
+
// A zero/absent catalog span carries no elapsed FEC deadline. The stall
|
|
390
|
+
// detector that calls this method already supplied the generic loss
|
|
391
|
+
// evidence, so there is no FEC hysteresis window to derive here. Follow
|
|
392
|
+
// the existing transport-failure edge immediately instead of inventing a
|
|
393
|
+
// local timeout for a catalog value that explicitly supplied none.
|
|
394
|
+
if (this.config.fecInterleaveMs === 0 || this.config.fecInterleaveMs === undefined) {
|
|
395
|
+
this.transportFailed()
|
|
396
|
+
return
|
|
397
|
+
}
|
|
398
|
+
|
|
380
399
|
this.#previousPrimary = this.#state as SubscriptionMode
|
|
381
400
|
this.#transition('failing')
|
|
382
401
|
|
|
@@ -28,9 +28,13 @@ Negative fixtures are the migration worklist and MUST fail:
|
|
|
28
28
|
and `scope` are `fec-repair` track fields only.
|
|
29
29
|
- `raptorq-source-symbols-over-max.json`: RaptorQ K is at most 56403 (RFC 6330).
|
|
30
30
|
- `fec-block-profile-missing.json`: an FEC instance must name its block
|
|
31
|
-
profile; there is no default.
|
|
32
|
-
- `fec-block-profile-unknown.json`: `fec.blockProfile` is
|
|
33
|
-
|
|
31
|
+
profile; there is no default (`track_fec_block_profile`).
|
|
32
|
+
- `fec-block-profile-unknown.json`: `fec.blockProfile` is `"iso-ssbg1-v1"`; a
|
|
33
|
+
near-miss such as `"iso-ssbg1"` is rejected, not normalized
|
|
34
|
+
(`track_fec_block_profile_unimplemented`).
|
|
35
|
+
- `fec-block-profile-retired.json`: the retired Blockcast-private
|
|
36
|
+
`"k-padded-v1"` is not a block profile
|
|
37
|
+
(`track_fec_block_profile_unimplemented`).
|
|
34
38
|
- `archive-origin-with-path.json`: `archive.origin` is scheme and authority
|
|
35
39
|
only. A path would make the derived object URL ambiguous above a codec that
|
|
36
40
|
refuses percent-encoding precisely so each identity has one URL path.
|
|
@@ -49,21 +53,33 @@ exercised: `{ns}` is the track's own `namespace`, or the MoQ subscription's
|
|
|
49
53
|
Track Namespace tuple when the track declares none.
|
|
50
54
|
|
|
51
55
|
Every `fec` object that declares an FEC instance (any `algorithm` other than
|
|
52
|
-
`"none"`) carries `fec.blockProfile` (BLO-35597, ISO/IEC 23008-1 Annex C)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
`"none"`) carries `fec.blockProfile` (BLO-35597, ISO/IEC 23008-1 Annex C).
|
|
57
|
+
draft-ramadan-moq-fec §5.1 defines exactly one value, `"iso-ssbg1-v1"`
|
|
58
|
+
(ssbg_mode1, `K' = SSB_length`, consecutive SS_IDs), and it is never defaulted
|
|
59
|
+
and never inferred from the wire. Any other token, the retired
|
|
60
|
+
Blockcast-private `"k-padded-v1"` included, fails validation with
|
|
61
|
+
`track_fec_block_profile_unimplemented`; an absent token on an FEC instance
|
|
62
|
+
fails with `track_fec_block_profile`. A receiver consumes such a track without
|
|
63
|
+
FEC and joins none of its repair tracks, without failing the session or any
|
|
64
|
+
other track's FEC.
|
|
56
65
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
`"iso-ssbg1-v1"` bounds a block's location by its span, so a receiver applies
|
|
67
|
+
FEC only when `fec.interleaveDepthMs` is at least 33 ms; without it the track
|
|
68
|
+
resolves to no FEC (`track_fec_block_span` on `interleaveDepthMs`; a declared
|
|
69
|
+
span below the floor is `track_fec`). The schema and the
|
|
70
|
+
CMSF validator do not require the field. Every fixture that carried
|
|
71
|
+
`"k-padded-v1"` now names `"iso-ssbg1-v1"`. The FEC-carrying positives that
|
|
72
|
+
omitted the span (`fec-multicast.json`,
|
|
73
|
+
`multicast-native-ssm-no-network-source.json`) now declare the one-group span
|
|
74
|
+
their omitted field used to mean (`interleaveDepthMs` equal to
|
|
75
|
+
`groupDurationMs`, 1000). `fec-iso-ssbg1.json` is `fec-multicast.json` without
|
|
76
|
+
that span: a valid catalog whose FEC a receiver cannot apply.
|
|
62
77
|
|
|
63
78
|
On `algorithm: "none"` the field is optional, but a present token must still be
|
|
64
|
-
|
|
65
|
-
overlay inherits its source's. Every negative fixture with an FEC
|
|
66
|
-
`"
|
|
79
|
+
implemented. Repair tracks carry no `fec`, so they carry no profile; a repair
|
|
80
|
+
layer or overlay inherits its source's. Every negative fixture with an FEC
|
|
81
|
+
source names `"iso-ssbg1-v1"` unless the profile is what it tests, so each still
|
|
82
|
+
fails for exactly the reason listed above.
|
|
67
83
|
|
|
68
84
|
`fec-layered-repair.json` carries base layers 0..2 and a keyframe overlay for one
|
|
69
85
|
source (draft-ramadan-moq-fec 6.3): layer 0 is `fec.repairTrack`, every further
|
|
@@ -71,8 +87,9 @@ repair track names its source in `depends`, and the second endpoint carries only
|
|
|
71
87
|
repair tracks. Priority is on the MoQT scale (lower first); `audio-repair`
|
|
72
88
|
declares none and so is layer 0 at the default 240.
|
|
73
89
|
|
|
74
|
-
An omitted `fec.interleaveDepthMs`
|
|
75
|
-
|
|
90
|
+
An omitted `fec.interleaveDepthMs` is valid catalog shape, but under
|
|
91
|
+
`"iso-ssbg1-v1"` it leaves the track without FEC at a receiver (see above).
|
|
92
|
+
When present, `groupDurationTicks` overrides the integer millisecond field.
|
|
76
93
|
Switching sets compare `ticks / timescale`, so equal wall-clock durations at
|
|
77
94
|
different timescales are valid.
|
|
78
95
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"streamingFormat": "mmtp",
|
|
4
|
+
"streamingFormatVersion": "draft-ramadan-moq-mmt-00",
|
|
5
|
+
"tracks": [
|
|
6
|
+
{
|
|
7
|
+
"name": "video",
|
|
8
|
+
"packaging": "mmtp",
|
|
9
|
+
"codec": "avc1.640028",
|
|
10
|
+
"mmtpMode": "mfu",
|
|
11
|
+
"timescale": 90000,
|
|
12
|
+
"groupDurationMs": 1000,
|
|
13
|
+
"fec": {
|
|
14
|
+
"algorithm": "raptorq",
|
|
15
|
+
"blockProfile": "k-padded-v1",
|
|
16
|
+
"sourceSymbols": 768,
|
|
17
|
+
"repairSymbols": 384,
|
|
18
|
+
"symbolSize": 1312,
|
|
19
|
+
"repairTrack": "video-repair",
|
|
20
|
+
"mode": "interleaved"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "video-repair",
|
|
25
|
+
"packaging": "fec-repair",
|
|
26
|
+
"priority": 240
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"multicast": {
|
|
30
|
+
"endpoints": [
|
|
31
|
+
{
|
|
32
|
+
"sourceAddress": "192.0.2.10",
|
|
33
|
+
"groupAddress": "232.1.1.1",
|
|
34
|
+
"port": 5000,
|
|
35
|
+
"tracks": [
|
|
36
|
+
{ "name": "video", "packetId": 1 },
|
|
37
|
+
{ "name": "video-repair", "packetId": 2 }
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"networkSource": [
|
|
42
|
+
{ "type": "amt", "discovery": "driad" },
|
|
43
|
+
{
|
|
44
|
+
"type": "atsc3",
|
|
45
|
+
"frequency": 587000000,
|
|
46
|
+
"plpId": 0,
|
|
47
|
+
"serviceId": 101,
|
|
48
|
+
"slsUri": "https://example.test/atsc3/service/101/sls.xml"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"groupDurationMs": 1000,
|
|
13
13
|
"fec": {
|
|
14
14
|
"algorithm": "raptorq",
|
|
15
|
-
"blockProfile": "
|
|
15
|
+
"blockProfile": "iso-ssbg1-v1",
|
|
16
16
|
"sourceSymbols": 64,
|
|
17
17
|
"repairSymbols": 8,
|
|
18
18
|
"symbolSize": 1312,
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"groupDurationMs": 1000,
|
|
63
63
|
"fec": {
|
|
64
64
|
"algorithm": "raptorq",
|
|
65
|
-
"blockProfile": "
|
|
65
|
+
"blockProfile": "iso-ssbg1-v1",
|
|
66
66
|
"sourceSymbols": 47,
|
|
67
67
|
"repairSymbols": 4,
|
|
68
68
|
"symbolSize": 1312,
|
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
"groupDurationMs": 1000,
|
|
13
13
|
"fec": {
|
|
14
14
|
"algorithm": "raptorq",
|
|
15
|
-
"blockProfile": "
|
|
15
|
+
"blockProfile": "iso-ssbg1-v1",
|
|
16
16
|
"sourceSymbols": 768,
|
|
17
17
|
"repairSymbols": 384,
|
|
18
18
|
"symbolSize": 1312,
|
|
19
|
+
"interleaveDepthMs": 1000,
|
|
19
20
|
"repairTrack": "video-repair",
|
|
20
21
|
"mode": "interleaved"
|
|
21
22
|
}
|
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
"groupDurationMs": 1000,
|
|
13
13
|
"fec": {
|
|
14
14
|
"algorithm": "raptorq",
|
|
15
|
-
"blockProfile": "
|
|
15
|
+
"blockProfile": "iso-ssbg1-v1",
|
|
16
16
|
"sourceSymbols": 768,
|
|
17
17
|
"repairSymbols": 384,
|
|
18
18
|
"symbolSize": 1312,
|
|
19
|
+
"interleaveDepthMs": 1000,
|
|
19
20
|
"repairTrack": "video-repair",
|
|
20
21
|
"mode": "interleaved"
|
|
21
22
|
}
|