mattebox 0.1.0
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/LICENSE +21 -0
- package/README.md +106 -0
- package/dist/cdn/mattebox.dash-drm.min.js +2 -0
- package/dist/cdn/mattebox.dash.min.js +2 -0
- package/dist/cdn/mattebox.dual-drm.min.js +2 -0
- package/dist/cdn/mattebox.dual-ts-drm.min.js +3 -0
- package/dist/cdn/mattebox.dual-ts.min.js +3 -0
- package/dist/cdn/mattebox.dual.min.js +2 -0
- package/dist/cdn/mattebox.hls-drm.min.js +2 -0
- package/dist/cdn/mattebox.hls-ts-drm.min.js +3 -0
- package/dist/cdn/mattebox.hls-ts.min.js +3 -0
- package/dist/cdn/mattebox.hls.min.js +2 -0
- package/dist/cdn/mattebox.kernel.min.js +1 -0
- package/dist/cdn/mattebox.min.js +6 -0
- package/dist/cdn/transmux.worker.js +1 -0
- package/dist/containers/adts.d.ts +33 -0
- package/dist/containers/adts.d.ts.map +1 -0
- package/dist/containers/adts.js +66 -0
- package/dist/containers/adts.js.map +1 -0
- package/dist/containers/captions.d.ts +27 -0
- package/dist/containers/captions.d.ts.map +1 -0
- package/dist/containers/captions.js +36 -0
- package/dist/containers/captions.js.map +1 -0
- package/dist/containers/codec-probe/index.d.ts +35 -0
- package/dist/containers/codec-probe/index.d.ts.map +1 -0
- package/dist/containers/codec-probe/index.js +222 -0
- package/dist/containers/codec-probe/index.js.map +1 -0
- package/dist/containers/fmp4/writer.d.ts +62 -0
- package/dist/containers/fmp4/writer.d.ts.map +1 -0
- package/dist/containers/fmp4/writer.js +201 -0
- package/dist/containers/fmp4/writer.js.map +1 -0
- package/dist/containers/id3.d.ts +25 -0
- package/dist/containers/id3.d.ts.map +1 -0
- package/dist/containers/id3.js +75 -0
- package/dist/containers/id3.js.map +1 -0
- package/dist/containers/mp4-box/index.d.ts +79 -0
- package/dist/containers/mp4-box/index.d.ts.map +1 -0
- package/dist/containers/mp4-box/index.js +231 -0
- package/dist/containers/mp4-box/index.js.map +1 -0
- package/dist/containers/packed-audio/index.d.ts +7 -0
- package/dist/containers/packed-audio/index.d.ts.map +1 -0
- package/dist/containers/packed-audio/index.js +63 -0
- package/dist/containers/packed-audio/index.js.map +1 -0
- package/dist/containers/sei.d.ts +26 -0
- package/dist/containers/sei.d.ts.map +1 -0
- package/dist/containers/sei.js +100 -0
- package/dist/containers/sei.js.map +1 -0
- package/dist/containers/ts-transmux/demux.d.ts +49 -0
- package/dist/containers/ts-transmux/demux.d.ts.map +1 -0
- package/dist/containers/ts-transmux/demux.js +222 -0
- package/dist/containers/ts-transmux/demux.js.map +1 -0
- package/dist/containers/ts-transmux/h264.d.ts +48 -0
- package/dist/containers/ts-transmux/h264.d.ts.map +1 -0
- package/dist/containers/ts-transmux/h264.js +211 -0
- package/dist/containers/ts-transmux/h264.js.map +1 -0
- package/dist/containers/ts-transmux/index.d.ts +17 -0
- package/dist/containers/ts-transmux/index.d.ts.map +1 -0
- package/dist/containers/ts-transmux/index.js +34 -0
- package/dist/containers/ts-transmux/index.js.map +1 -0
- package/dist/containers/ts-transmux/runner.d.ts +23 -0
- package/dist/containers/ts-transmux/runner.d.ts.map +1 -0
- package/dist/containers/ts-transmux/runner.js +99 -0
- package/dist/containers/ts-transmux/runner.js.map +1 -0
- package/dist/containers/ts-transmux/transmux.d.ts +24 -0
- package/dist/containers/ts-transmux/transmux.d.ts.map +1 -0
- package/dist/containers/ts-transmux/transmux.js +212 -0
- package/dist/containers/ts-transmux/transmux.js.map +1 -0
- package/dist/containers/ts-transmux/transmux.worker.d.ts +2 -0
- package/dist/containers/ts-transmux/transmux.worker.d.ts.map +1 -0
- package/dist/containers/ts-transmux/transmux.worker.js +19 -0
- package/dist/containers/ts-transmux/transmux.worker.js.map +1 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/asyncToGenerator.js +27 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/defineProperty.js +12 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectSpread2.js +25 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectWithoutProperties.js +13 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectWithoutPropertiesLoose.js +12 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/toPrimitive.js +14 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/toPropertyKey.js +9 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/typeof.js +11 -0
- package/dist/es2015/containers/adts.js +77 -0
- package/dist/es2015/containers/captions.js +36 -0
- package/dist/es2015/containers/codec-probe/index.js +220 -0
- package/dist/es2015/containers/fmp4/writer.js +165 -0
- package/dist/es2015/containers/id3.js +72 -0
- package/dist/es2015/containers/mp4-box/index.js +209 -0
- package/dist/es2015/containers/packed-audio/index.js +67 -0
- package/dist/es2015/containers/sei.js +79 -0
- package/dist/es2015/containers/ts-transmux/demux.js +211 -0
- package/dist/es2015/containers/ts-transmux/h264.js +204 -0
- package/dist/es2015/containers/ts-transmux/index.js +37 -0
- package/dist/es2015/containers/ts-transmux/runner.js +95 -0
- package/dist/es2015/containers/ts-transmux/transmux.js +210 -0
- package/dist/es2015/containers/ts-transmux/transmux.worker.js +26 -0
- package/dist/es2015/index.js +356 -0
- package/dist/es2015/kernel/append-queue.js +148 -0
- package/dist/es2015/kernel/bus.js +134 -0
- package/dist/es2015/kernel/context.js +92 -0
- package/dist/es2015/kernel/effects.js +62 -0
- package/dist/es2015/kernel/evictor.js +67 -0
- package/dist/es2015/kernel/lifecycle.js +122 -0
- package/dist/es2015/kernel/loader.js +108 -0
- package/dist/es2015/kernel/mime.js +20 -0
- package/dist/es2015/kernel/mse.js +426 -0
- package/dist/es2015/kernel/reducer.js +1051 -0
- package/dist/es2015/kernel/rendition-select.js +263 -0
- package/dist/es2015/kernel/scheduler.js +82 -0
- package/dist/es2015/kernel/sinks/metadata-sink.js +7 -0
- package/dist/es2015/kernel/sinks/mse-sink.js +31 -0
- package/dist/es2015/kernel/sinks/text-track-sink.js +167 -0
- package/dist/es2015/kernel/timeline.js +127 -0
- package/dist/es2015/kernel/trace.js +134 -0
- package/dist/es2015/kernel/track-registry.js +47 -0
- package/dist/es2015/kernel/transport.js +242 -0
- package/dist/es2015/kernel/watchdog.js +38 -0
- package/dist/es2015/presets/dash/index.js +9 -0
- package/dist/es2015/presets/dash-drm/index.js +13 -0
- package/dist/es2015/presets/define.js +45 -0
- package/dist/es2015/presets/dual/index.js +14 -0
- package/dist/es2015/presets/dual-drm/index.js +14 -0
- package/dist/es2015/presets/dual-ts/index.js +14 -0
- package/dist/es2015/presets/dual-ts-drm/index.js +15 -0
- package/dist/es2015/presets/full/index.js +28 -0
- package/dist/es2015/presets/hls/index.js +9 -0
- package/dist/es2015/presets/hls-drm/index.js +13 -0
- package/dist/es2015/presets/hls-ts/index.js +13 -0
- package/dist/es2015/presets/hls-ts-drm/index.js +14 -0
- package/dist/es2015/presets/kernel/index.js +10 -0
- package/dist/es2015/presets/storage.js +24 -0
- package/dist/es2015/presets/tiers.js +93 -0
- package/dist/es2015/protocols/dash-cmaf/index.js +161 -0
- package/dist/es2015/protocols/dash-cmaf/parse.js +491 -0
- package/dist/es2015/protocols/dash-live/index.js +192 -0
- package/dist/es2015/protocols/hls-cmaf/index.js +168 -0
- package/dist/es2015/protocols/hls-cmaf/lexer.js +72 -0
- package/dist/es2015/protocols/hls-cmaf/parse.js +457 -0
- package/dist/es2015/protocols/hls-live/index.js +296 -0
- package/dist/es2015/protocols/live-shared.js +29 -0
- package/dist/es2015/stages/abr/index.js +126 -0
- package/dist/es2015/stages/abr-cap-size/index.js +22 -0
- package/dist/es2015/stages/abr-persist/index.js +52 -0
- package/dist/es2015/stages/aes-128/index.js +76 -0
- package/dist/es2015/stages/alt-audio/index.js +80 -0
- package/dist/es2015/stages/cmaf-timing/index.js +55 -0
- package/dist/es2015/stages/cmcd/index.js +70 -0
- package/dist/es2015/stages/codec-probe/index.js +65 -0
- package/dist/es2015/stages/codec-switch/index.js +48 -0
- package/dist/es2015/stages/content-steering/index.js +179 -0
- package/dist/es2015/stages/drm-shared.js +18 -0
- package/dist/es2015/stages/eme-cenc/index.js +46 -0
- package/dist/es2015/stages/eme-core/index.js +237 -0
- package/dist/es2015/stages/eme-fairplay/index.js +52 -0
- package/dist/es2015/stages/meta-id3/index.js +37 -0
- package/dist/es2015/stages/mp4-box/index.js +27 -0
- package/dist/es2015/stages/nal-scan/index.js +121 -0
- package/dist/es2015/stages/pdt/index.js +34 -0
- package/dist/es2015/stages/recovery/index.js +283 -0
- package/dist/es2015/stages/text-cea608/decode.js +201 -0
- package/dist/es2015/stages/text-cea608/index.js +71 -0
- package/dist/es2015/stages/text-webvtt/index.js +82 -0
- package/dist/es2015/stages/text-webvtt/parse.js +60 -0
- package/dist/es2015/stages/text-webvtt-segmented/index.js +57 -0
- package/dist/es2015/stages/thumbnails/index.js +73 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +423 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel/append-queue.d.ts +47 -0
- package/dist/kernel/append-queue.d.ts.map +1 -0
- package/dist/kernel/append-queue.js +180 -0
- package/dist/kernel/append-queue.js.map +1 -0
- package/dist/kernel/bus.d.ts +50 -0
- package/dist/kernel/bus.d.ts.map +1 -0
- package/dist/kernel/bus.js +147 -0
- package/dist/kernel/bus.js.map +1 -0
- package/dist/kernel/context.d.ts +45 -0
- package/dist/kernel/context.d.ts.map +1 -0
- package/dist/kernel/context.js +116 -0
- package/dist/kernel/context.js.map +1 -0
- package/dist/kernel/effects.d.ts +33 -0
- package/dist/kernel/effects.d.ts.map +1 -0
- package/dist/kernel/effects.js +65 -0
- package/dist/kernel/effects.js.map +1 -0
- package/dist/kernel/evictor.d.ts +46 -0
- package/dist/kernel/evictor.d.ts.map +1 -0
- package/dist/kernel/evictor.js +92 -0
- package/dist/kernel/evictor.js.map +1 -0
- package/dist/kernel/lifecycle.d.ts +41 -0
- package/dist/kernel/lifecycle.d.ts.map +1 -0
- package/dist/kernel/lifecycle.js +129 -0
- package/dist/kernel/lifecycle.js.map +1 -0
- package/dist/kernel/loader.d.ts +28 -0
- package/dist/kernel/loader.d.ts.map +1 -0
- package/dist/kernel/loader.js +126 -0
- package/dist/kernel/loader.js.map +1 -0
- package/dist/kernel/mime.d.ts +13 -0
- package/dist/kernel/mime.d.ts.map +1 -0
- package/dist/kernel/mime.js +18 -0
- package/dist/kernel/mime.js.map +1 -0
- package/dist/kernel/mse.d.ts +62 -0
- package/dist/kernel/mse.d.ts.map +1 -0
- package/dist/kernel/mse.js +490 -0
- package/dist/kernel/mse.js.map +1 -0
- package/dist/kernel/reducer.d.ts +39 -0
- package/dist/kernel/reducer.d.ts.map +1 -0
- package/dist/kernel/reducer.js +1316 -0
- package/dist/kernel/reducer.js.map +1 -0
- package/dist/kernel/rendition-select.d.ts +102 -0
- package/dist/kernel/rendition-select.d.ts.map +1 -0
- package/dist/kernel/rendition-select.js +295 -0
- package/dist/kernel/rendition-select.js.map +1 -0
- package/dist/kernel/scheduler.d.ts +57 -0
- package/dist/kernel/scheduler.d.ts.map +1 -0
- package/dist/kernel/scheduler.js +98 -0
- package/dist/kernel/scheduler.js.map +1 -0
- package/dist/kernel/sinks/metadata-sink.d.ts +7 -0
- package/dist/kernel/sinks/metadata-sink.d.ts.map +1 -0
- package/dist/kernel/sinks/metadata-sink.js +5 -0
- package/dist/kernel/sinks/metadata-sink.js.map +1 -0
- package/dist/kernel/sinks/mse-sink.d.ts +17 -0
- package/dist/kernel/sinks/mse-sink.d.ts.map +1 -0
- package/dist/kernel/sinks/mse-sink.js +20 -0
- package/dist/kernel/sinks/mse-sink.js.map +1 -0
- package/dist/kernel/sinks/text-track-sink.d.ts +45 -0
- package/dist/kernel/sinks/text-track-sink.d.ts.map +1 -0
- package/dist/kernel/sinks/text-track-sink.js +184 -0
- package/dist/kernel/sinks/text-track-sink.js.map +1 -0
- package/dist/kernel/timeline.d.ts +57 -0
- package/dist/kernel/timeline.d.ts.map +1 -0
- package/dist/kernel/timeline.js +203 -0
- package/dist/kernel/timeline.js.map +1 -0
- package/dist/kernel/trace.d.ts +42 -0
- package/dist/kernel/trace.d.ts.map +1 -0
- package/dist/kernel/trace.js +165 -0
- package/dist/kernel/trace.js.map +1 -0
- package/dist/kernel/track-registry.d.ts +22 -0
- package/dist/kernel/track-registry.d.ts.map +1 -0
- package/dist/kernel/track-registry.js +42 -0
- package/dist/kernel/track-registry.js.map +1 -0
- package/dist/kernel/transport.d.ts +90 -0
- package/dist/kernel/transport.d.ts.map +1 -0
- package/dist/kernel/transport.js +256 -0
- package/dist/kernel/transport.js.map +1 -0
- package/dist/kernel/watchdog.d.ts +35 -0
- package/dist/kernel/watchdog.d.ts.map +1 -0
- package/dist/kernel/watchdog.js +43 -0
- package/dist/kernel/watchdog.js.map +1 -0
- package/dist/presets/dash/index.d.ts +4 -0
- package/dist/presets/dash/index.d.ts.map +1 -0
- package/dist/presets/dash/index.js +8 -0
- package/dist/presets/dash/index.js.map +1 -0
- package/dist/presets/dash-drm/index.d.ts +4 -0
- package/dist/presets/dash-drm/index.d.ts.map +1 -0
- package/dist/presets/dash-drm/index.js +8 -0
- package/dist/presets/dash-drm/index.js.map +1 -0
- package/dist/presets/define.d.ts +36 -0
- package/dist/presets/define.d.ts.map +1 -0
- package/dist/presets/define.js +39 -0
- package/dist/presets/define.js.map +1 -0
- package/dist/presets/dual/index.d.ts +4 -0
- package/dist/presets/dual/index.d.ts.map +1 -0
- package/dist/presets/dual/index.js +9 -0
- package/dist/presets/dual/index.js.map +1 -0
- package/dist/presets/dual-drm/index.d.ts +4 -0
- package/dist/presets/dual-drm/index.d.ts.map +1 -0
- package/dist/presets/dual-drm/index.js +13 -0
- package/dist/presets/dual-drm/index.js.map +1 -0
- package/dist/presets/dual-ts/index.d.ts +4 -0
- package/dist/presets/dual-ts/index.d.ts.map +1 -0
- package/dist/presets/dual-ts/index.js +8 -0
- package/dist/presets/dual-ts/index.js.map +1 -0
- package/dist/presets/dual-ts-drm/index.d.ts +4 -0
- package/dist/presets/dual-ts-drm/index.d.ts.map +1 -0
- package/dist/presets/dual-ts-drm/index.js +14 -0
- package/dist/presets/dual-ts-drm/index.js.map +1 -0
- package/dist/presets/full/index.d.ts +4 -0
- package/dist/presets/full/index.d.ts.map +1 -0
- package/dist/presets/full/index.js +27 -0
- package/dist/presets/full/index.js.map +1 -0
- package/dist/presets/hls/index.d.ts +4 -0
- package/dist/presets/hls/index.d.ts.map +1 -0
- package/dist/presets/hls/index.js +8 -0
- package/dist/presets/hls/index.js.map +1 -0
- package/dist/presets/hls-drm/index.d.ts +4 -0
- package/dist/presets/hls-drm/index.d.ts.map +1 -0
- package/dist/presets/hls-drm/index.js +8 -0
- package/dist/presets/hls-drm/index.js.map +1 -0
- package/dist/presets/hls-ts/index.d.ts +4 -0
- package/dist/presets/hls-ts/index.d.ts.map +1 -0
- package/dist/presets/hls-ts/index.js +8 -0
- package/dist/presets/hls-ts/index.js.map +1 -0
- package/dist/presets/hls-ts-drm/index.d.ts +4 -0
- package/dist/presets/hls-ts-drm/index.d.ts.map +1 -0
- package/dist/presets/hls-ts-drm/index.js +13 -0
- package/dist/presets/hls-ts-drm/index.js.map +1 -0
- package/dist/presets/kernel/index.d.ts +4 -0
- package/dist/presets/kernel/index.d.ts.map +1 -0
- package/dist/presets/kernel/index.js +9 -0
- package/dist/presets/kernel/index.js.map +1 -0
- package/dist/presets/storage.d.ts +9 -0
- package/dist/presets/storage.d.ts.map +1 -0
- package/dist/presets/storage.js +24 -0
- package/dist/presets/storage.js.map +1 -0
- package/dist/presets/tiers.d.ts +22 -0
- package/dist/presets/tiers.d.ts.map +1 -0
- package/dist/presets/tiers.js +78 -0
- package/dist/presets/tiers.js.map +1 -0
- package/dist/protocols/dash-cmaf/index.d.ts +20 -0
- package/dist/protocols/dash-cmaf/index.d.ts.map +1 -0
- package/dist/protocols/dash-cmaf/index.js +176 -0
- package/dist/protocols/dash-cmaf/index.js.map +1 -0
- package/dist/protocols/dash-cmaf/parse.d.ts +24 -0
- package/dist/protocols/dash-cmaf/parse.d.ts.map +1 -0
- package/dist/protocols/dash-cmaf/parse.js +586 -0
- package/dist/protocols/dash-cmaf/parse.js.map +1 -0
- package/dist/protocols/dash-live/index.d.ts +4 -0
- package/dist/protocols/dash-live/index.d.ts.map +1 -0
- package/dist/protocols/dash-live/index.js +188 -0
- package/dist/protocols/dash-live/index.js.map +1 -0
- package/dist/protocols/hls-cmaf/index.d.ts +17 -0
- package/dist/protocols/hls-cmaf/index.d.ts.map +1 -0
- package/dist/protocols/hls-cmaf/index.js +189 -0
- package/dist/protocols/hls-cmaf/index.js.map +1 -0
- package/dist/protocols/hls-cmaf/lexer.d.ts +25 -0
- package/dist/protocols/hls-cmaf/lexer.d.ts.map +1 -0
- package/dist/protocols/hls-cmaf/lexer.js +81 -0
- package/dist/protocols/hls-cmaf/lexer.js.map +1 -0
- package/dist/protocols/hls-cmaf/parse.d.ts +57 -0
- package/dist/protocols/hls-cmaf/parse.d.ts.map +1 -0
- package/dist/protocols/hls-cmaf/parse.js +572 -0
- package/dist/protocols/hls-cmaf/parse.js.map +1 -0
- package/dist/protocols/hls-live/index.d.ts +4 -0
- package/dist/protocols/hls-live/index.d.ts.map +1 -0
- package/dist/protocols/hls-live/index.js +309 -0
- package/dist/protocols/hls-live/index.js.map +1 -0
- package/dist/protocols/live-shared.d.ts +21 -0
- package/dist/protocols/live-shared.d.ts.map +1 -0
- package/dist/protocols/live-shared.js +32 -0
- package/dist/protocols/live-shared.js.map +1 -0
- package/dist/stages/abr/index.d.ts +16 -0
- package/dist/stages/abr/index.d.ts.map +1 -0
- package/dist/stages/abr/index.js +176 -0
- package/dist/stages/abr/index.js.map +1 -0
- package/dist/stages/abr-cap-size/index.d.ts +8 -0
- package/dist/stages/abr-cap-size/index.d.ts.map +1 -0
- package/dist/stages/abr-cap-size/index.js +21 -0
- package/dist/stages/abr-cap-size/index.js.map +1 -0
- package/dist/stages/abr-persist/index.d.ts +8 -0
- package/dist/stages/abr-persist/index.d.ts.map +1 -0
- package/dist/stages/abr-persist/index.js +44 -0
- package/dist/stages/abr-persist/index.js.map +1 -0
- package/dist/stages/aes-128/index.d.ts +15 -0
- package/dist/stages/aes-128/index.d.ts.map +1 -0
- package/dist/stages/aes-128/index.js +78 -0
- package/dist/stages/aes-128/index.js.map +1 -0
- package/dist/stages/alt-audio/index.d.ts +4 -0
- package/dist/stages/alt-audio/index.d.ts.map +1 -0
- package/dist/stages/alt-audio/index.js +90 -0
- package/dist/stages/alt-audio/index.js.map +1 -0
- package/dist/stages/cmaf-timing/index.d.ts +3 -0
- package/dist/stages/cmaf-timing/index.d.ts.map +1 -0
- package/dist/stages/cmaf-timing/index.js +56 -0
- package/dist/stages/cmaf-timing/index.js.map +1 -0
- package/dist/stages/cmcd/index.d.ts +22 -0
- package/dist/stages/cmcd/index.d.ts.map +1 -0
- package/dist/stages/cmcd/index.js +92 -0
- package/dist/stages/cmcd/index.js.map +1 -0
- package/dist/stages/codec-probe/index.d.ts +9 -0
- package/dist/stages/codec-probe/index.d.ts.map +1 -0
- package/dist/stages/codec-probe/index.js +68 -0
- package/dist/stages/codec-probe/index.js.map +1 -0
- package/dist/stages/codec-switch/index.d.ts +6 -0
- package/dist/stages/codec-switch/index.d.ts.map +1 -0
- package/dist/stages/codec-switch/index.js +59 -0
- package/dist/stages/codec-switch/index.js.map +1 -0
- package/dist/stages/content-steering/index.d.ts +4 -0
- package/dist/stages/content-steering/index.d.ts.map +1 -0
- package/dist/stages/content-steering/index.js +174 -0
- package/dist/stages/content-steering/index.js.map +1 -0
- package/dist/stages/drm-shared.d.ts +46 -0
- package/dist/stages/drm-shared.d.ts.map +1 -0
- package/dist/stages/drm-shared.js +28 -0
- package/dist/stages/drm-shared.js.map +1 -0
- package/dist/stages/eme-cenc/index.d.ts +12 -0
- package/dist/stages/eme-cenc/index.d.ts.map +1 -0
- package/dist/stages/eme-cenc/index.js +53 -0
- package/dist/stages/eme-cenc/index.js.map +1 -0
- package/dist/stages/eme-core/index.d.ts +29 -0
- package/dist/stages/eme-core/index.d.ts.map +1 -0
- package/dist/stages/eme-core/index.js +244 -0
- package/dist/stages/eme-core/index.js.map +1 -0
- package/dist/stages/eme-fairplay/index.d.ts +20 -0
- package/dist/stages/eme-fairplay/index.d.ts.map +1 -0
- package/dist/stages/eme-fairplay/index.js +59 -0
- package/dist/stages/eme-fairplay/index.js.map +1 -0
- package/dist/stages/meta-id3/index.d.ts +14 -0
- package/dist/stages/meta-id3/index.d.ts.map +1 -0
- package/dist/stages/meta-id3/index.js +30 -0
- package/dist/stages/meta-id3/index.js.map +1 -0
- package/dist/stages/mp4-box/index.d.ts +3 -0
- package/dist/stages/mp4-box/index.d.ts.map +1 -0
- package/dist/stages/mp4-box/index.js +19 -0
- package/dist/stages/mp4-box/index.js.map +1 -0
- package/dist/stages/nal-scan/index.d.ts +3 -0
- package/dist/stages/nal-scan/index.d.ts.map +1 -0
- package/dist/stages/nal-scan/index.js +123 -0
- package/dist/stages/nal-scan/index.js.map +1 -0
- package/dist/stages/pdt/index.d.ts +14 -0
- package/dist/stages/pdt/index.d.ts.map +1 -0
- package/dist/stages/pdt/index.js +34 -0
- package/dist/stages/pdt/index.js.map +1 -0
- package/dist/stages/recovery/index.d.ts +16 -0
- package/dist/stages/recovery/index.d.ts.map +1 -0
- package/dist/stages/recovery/index.js +270 -0
- package/dist/stages/recovery/index.js.map +1 -0
- package/dist/stages/text-cea608/decode.d.ts +44 -0
- package/dist/stages/text-cea608/decode.d.ts.map +1 -0
- package/dist/stages/text-cea608/decode.js +225 -0
- package/dist/stages/text-cea608/decode.js.map +1 -0
- package/dist/stages/text-cea608/index.d.ts +3 -0
- package/dist/stages/text-cea608/index.d.ts.map +1 -0
- package/dist/stages/text-cea608/index.js +84 -0
- package/dist/stages/text-cea608/index.js.map +1 -0
- package/dist/stages/text-webvtt/index.d.ts +3 -0
- package/dist/stages/text-webvtt/index.d.ts.map +1 -0
- package/dist/stages/text-webvtt/index.js +82 -0
- package/dist/stages/text-webvtt/index.js.map +1 -0
- package/dist/stages/text-webvtt/parse.d.ts +19 -0
- package/dist/stages/text-webvtt/parse.d.ts.map +1 -0
- package/dist/stages/text-webvtt/parse.js +62 -0
- package/dist/stages/text-webvtt/parse.js.map +1 -0
- package/dist/stages/text-webvtt-segmented/index.d.ts +5 -0
- package/dist/stages/text-webvtt-segmented/index.d.ts.map +1 -0
- package/dist/stages/text-webvtt-segmented/index.js +63 -0
- package/dist/stages/text-webvtt-segmented/index.js.map +1 -0
- package/dist/stages/thumbnails/index.d.ts +34 -0
- package/dist/stages/thumbnails/index.d.ts.map +1 -0
- package/dist/stages/thumbnails/index.js +58 -0
- package/dist/stages/thumbnails/index.js.map +1 -0
- package/dist/types/error.d.ts +33 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +7 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/facade.d.ts +104 -0
- package/dist/types/facade.d.ts.map +1 -0
- package/dist/types/facade.js +2 -0
- package/dist/types/facade.js.map +1 -0
- package/dist/types/ir.d.ts +238 -0
- package/dist/types/ir.d.ts.map +1 -0
- package/dist/types/ir.js +7 -0
- package/dist/types/ir.js.map +1 -0
- package/dist/types/kernel.d.ts +217 -0
- package/dist/types/kernel.d.ts.map +1 -0
- package/dist/types/kernel.js +2 -0
- package/dist/types/kernel.js.map +1 -0
- package/dist/types/messages.d.ts +288 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +2 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/quality.d.ts +108 -0
- package/dist/types/quality.d.ts.map +1 -0
- package/dist/types/quality.js +2 -0
- package/dist/types/quality.js.map +1 -0
- package/dist/types/sink.d.ts +27 -0
- package/dist/types/sink.d.ts.map +1 -0
- package/dist/types/sink.js +2 -0
- package/dist/types/sink.js.map +1 -0
- package/dist/types/stage.d.ts +139 -0
- package/dist/types/stage.d.ts.map +1 -0
- package/dist/types/stage.js +2 -0
- package/dist/types/stage.js.map +1 -0
- package/package.json +132 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { ccTriplesFromSei } from "../sei.js";
|
|
2
|
+
import { parseAdts } from "../adts.js";
|
|
3
|
+
import { writeInitSegment, writeMediaSegment } from "../fmp4/writer.js";
|
|
4
|
+
import { demux, unrollTimestamps } from "./demux.js";
|
|
5
|
+
import { NAL_TYPE, accessUnitFromNals, nalType, splitNalUnits, spsDimensions, toAccessUnit } from "./h264.js";
|
|
6
|
+
//#region src/containers/ts-transmux/transmux.ts
|
|
7
|
+
/**
|
|
8
|
+
* The transmux core: MPEG-TS bytes to a self-contained fragmented MP4. Each
|
|
9
|
+
* call is independent and pure, so identical input plus identical
|
|
10
|
+
* presentation start yields identical output, on the main thread or in the
|
|
11
|
+
* Worker. A muxed segment produces one init with a video and an audio track
|
|
12
|
+
* and one media fragment carrying both, so a single SourceBuffer decodes it.
|
|
13
|
+
*
|
|
14
|
+
* Segment timing is anchored to the playlist presentation start, not the raw
|
|
15
|
+
* PES timestamps: legacy TS streams begin at an arbitrary PTS, and aligning
|
|
16
|
+
* baseMediaDecodeTime to the playlist is what keeps the buffer where the
|
|
17
|
+
* scheduler expects it. Sample durations still come from the PES timeline.
|
|
18
|
+
*/
|
|
19
|
+
const VIDEO_TIMESCALE = 9e4;
|
|
20
|
+
const VIDEO_TRACK_ID = 1;
|
|
21
|
+
const AUDIO_TRACK_ID = 2;
|
|
22
|
+
/** Fallback duration for a lone trailing video sample: 30 fps in 90 kHz. */
|
|
23
|
+
const DEFAULT_FRAME_DURATION = 3e3;
|
|
24
|
+
function concat(parts) {
|
|
25
|
+
let length = 0;
|
|
26
|
+
for (const part of parts) length += part.byteLength;
|
|
27
|
+
const out = new Uint8Array(length);
|
|
28
|
+
let offset = 0;
|
|
29
|
+
for (const part of parts) {
|
|
30
|
+
out.set(part, offset);
|
|
31
|
+
offset += part.byteLength;
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Reframes video access units. Access units do not align with PES packet
|
|
37
|
+
* boundaries in the wild: a picture's tail spills into the next PES packet,
|
|
38
|
+
* whose header carries the next picture's timestamps. So the elementary stream
|
|
39
|
+
* is concatenated and split into units by access-unit delimiter, and each unit
|
|
40
|
+
* takes the timestamps of the PES packet its delimiter falls in. A stream with
|
|
41
|
+
* no delimiters falls back to one unit per PES, which is correct when the muxer
|
|
42
|
+
* did align them.
|
|
43
|
+
*/
|
|
44
|
+
function frameAccessUnits(packets) {
|
|
45
|
+
let total = 0;
|
|
46
|
+
for (const p of packets) total += p.data.byteLength;
|
|
47
|
+
const es = new Uint8Array(total);
|
|
48
|
+
const boundaries = [];
|
|
49
|
+
let offset = 0;
|
|
50
|
+
for (const p of packets) {
|
|
51
|
+
boundaries.push({
|
|
52
|
+
offset,
|
|
53
|
+
pts: p.pts,
|
|
54
|
+
dts: p.dts
|
|
55
|
+
});
|
|
56
|
+
es.set(p.data, offset);
|
|
57
|
+
offset += p.data.byteLength;
|
|
58
|
+
}
|
|
59
|
+
const nals = splitNalUnits(es);
|
|
60
|
+
if (!nals.some((n) => nalType(n) === NAL_TYPE.accessUnitDelimiter)) return packets.map((p) => ({
|
|
61
|
+
unit: toAccessUnit(p.data),
|
|
62
|
+
pts: p.pts,
|
|
63
|
+
dts: p.dts
|
|
64
|
+
}));
|
|
65
|
+
const framed = [];
|
|
66
|
+
let group = [];
|
|
67
|
+
let groupOffset = 0;
|
|
68
|
+
let boundaryIndex = 0;
|
|
69
|
+
const flush = () => {
|
|
70
|
+
if (group.length === 0) return;
|
|
71
|
+
while (boundaryIndex + 1 < boundaries.length && boundaries[boundaryIndex + 1].offset <= groupOffset) boundaryIndex += 1;
|
|
72
|
+
const b = boundaries[boundaryIndex];
|
|
73
|
+
framed.push({
|
|
74
|
+
unit: accessUnitFromNals(group),
|
|
75
|
+
pts: b.pts,
|
|
76
|
+
dts: b.dts
|
|
77
|
+
});
|
|
78
|
+
group = [];
|
|
79
|
+
};
|
|
80
|
+
for (const nal of nals) {
|
|
81
|
+
if (nalType(nal) === NAL_TYPE.accessUnitDelimiter && group.length > 0) flush();
|
|
82
|
+
if (group.length === 0) groupOffset = nal.byteOffset - es.byteOffset;
|
|
83
|
+
group.push(nal);
|
|
84
|
+
}
|
|
85
|
+
flush();
|
|
86
|
+
return framed;
|
|
87
|
+
}
|
|
88
|
+
function buildVideo(packets, presentationStart, wantCaptions) {
|
|
89
|
+
if (packets.length === 0) return null;
|
|
90
|
+
const framed = frameAccessUnits(packets);
|
|
91
|
+
const units = framed.map((f) => f.unit);
|
|
92
|
+
let sps = null;
|
|
93
|
+
let pps = null;
|
|
94
|
+
for (const unit of units) {
|
|
95
|
+
if (unit.sps !== null) sps = unit.sps;
|
|
96
|
+
if (unit.pps !== null) pps = unit.pps;
|
|
97
|
+
}
|
|
98
|
+
if (sps === null || pps === null) return null;
|
|
99
|
+
const dts = unrollTimestamps(framed.map((f) => f.dts));
|
|
100
|
+
const pts = unrollTimestamps(framed.map((f) => f.pts));
|
|
101
|
+
const base = Math.round(presentationStart * VIDEO_TIMESCALE);
|
|
102
|
+
const captions = [];
|
|
103
|
+
if (wantCaptions) {
|
|
104
|
+
var _pts$;
|
|
105
|
+
const firstPts = (_pts$ = pts[0]) !== null && _pts$ !== void 0 ? _pts$ : 0;
|
|
106
|
+
for (let i = 0; i < units.length; i += 1) {
|
|
107
|
+
const unit = units[i];
|
|
108
|
+
if (unit.sei.length === 0) continue;
|
|
109
|
+
const triples = unit.sei.flatMap((nal) => ccTriplesFromSei(nal));
|
|
110
|
+
if (triples.length === 0) continue;
|
|
111
|
+
const time = presentationStart + (pts[i] - firstPts) / VIDEO_TIMESCALE;
|
|
112
|
+
captions.push({
|
|
113
|
+
time,
|
|
114
|
+
triples
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const samples = [];
|
|
119
|
+
for (let i = 0; i < units.length; i += 1) {
|
|
120
|
+
const duration = i + 1 < units.length ? Math.max(0, dts[i + 1] - dts[i]) : DEFAULT_FRAME_DURATION;
|
|
121
|
+
samples.push({
|
|
122
|
+
data: units[i].avcc,
|
|
123
|
+
duration: duration || DEFAULT_FRAME_DURATION,
|
|
124
|
+
cts: pts[i] - dts[i],
|
|
125
|
+
isKeyframe: units[i].isKeyframe
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const { width, height } = spsDimensions(sps);
|
|
129
|
+
return {
|
|
130
|
+
config: {
|
|
131
|
+
id: VIDEO_TRACK_ID,
|
|
132
|
+
kind: "video",
|
|
133
|
+
timescale: VIDEO_TIMESCALE,
|
|
134
|
+
sps,
|
|
135
|
+
pps,
|
|
136
|
+
width,
|
|
137
|
+
height
|
|
138
|
+
},
|
|
139
|
+
fragment: {
|
|
140
|
+
trackId: VIDEO_TRACK_ID,
|
|
141
|
+
baseMediaDecodeTime: base,
|
|
142
|
+
samples
|
|
143
|
+
},
|
|
144
|
+
captions
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function buildAudio(packets, presentationStart) {
|
|
148
|
+
if (packets.length === 0) return null;
|
|
149
|
+
const adts = parseAdts(concat(packets.map((p) => p.data)));
|
|
150
|
+
if (adts.frames.length === 0) return null;
|
|
151
|
+
const base = Math.round(presentationStart * adts.sampleRate);
|
|
152
|
+
const samples = adts.frames.map((frame) => ({
|
|
153
|
+
data: frame.data,
|
|
154
|
+
duration: 1024,
|
|
155
|
+
cts: 0,
|
|
156
|
+
isKeyframe: true
|
|
157
|
+
}));
|
|
158
|
+
return {
|
|
159
|
+
config: {
|
|
160
|
+
id: AUDIO_TRACK_ID,
|
|
161
|
+
kind: "audio",
|
|
162
|
+
timescale: adts.sampleRate,
|
|
163
|
+
audioObjectType: adts.audioObjectType,
|
|
164
|
+
samplingFrequencyIndex: adts.samplingFrequencyIndex,
|
|
165
|
+
channelConfig: adts.channelConfig
|
|
166
|
+
},
|
|
167
|
+
fragment: {
|
|
168
|
+
trackId: AUDIO_TRACK_ID,
|
|
169
|
+
baseMediaDecodeTime: base,
|
|
170
|
+
samples
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function transmux(input, presentationStart = 0, wantCaptions = false) {
|
|
175
|
+
var _video$captions;
|
|
176
|
+
const streams = demux(input);
|
|
177
|
+
if (streams.notTransportStream) return {
|
|
178
|
+
bytes: null,
|
|
179
|
+
notTransportStream: true,
|
|
180
|
+
empty: false,
|
|
181
|
+
captions: []
|
|
182
|
+
};
|
|
183
|
+
const video = buildVideo(streams.video, presentationStart, wantCaptions);
|
|
184
|
+
const audio = buildAudio(streams.audio, presentationStart);
|
|
185
|
+
if (video === null && audio === null) return {
|
|
186
|
+
bytes: null,
|
|
187
|
+
notTransportStream: false,
|
|
188
|
+
empty: true,
|
|
189
|
+
captions: []
|
|
190
|
+
};
|
|
191
|
+
const configs = [];
|
|
192
|
+
const fragments = [];
|
|
193
|
+
if (video !== null) {
|
|
194
|
+
configs.push(video.config);
|
|
195
|
+
fragments.push(video.fragment);
|
|
196
|
+
}
|
|
197
|
+
if (audio !== null) {
|
|
198
|
+
configs.push(audio.config);
|
|
199
|
+
fragments.push(audio.fragment);
|
|
200
|
+
}
|
|
201
|
+
const sequenceNumber = Math.max(1, Math.round(presentationStart) + 1);
|
|
202
|
+
return {
|
|
203
|
+
bytes: concat([writeInitSegment(configs), writeMediaSegment(sequenceNumber, fragments)]),
|
|
204
|
+
notTransportStream: false,
|
|
205
|
+
empty: false,
|
|
206
|
+
captions: (_video$captions = video === null || video === void 0 ? void 0 : video.captions) !== null && _video$captions !== void 0 ? _video$captions : []
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
//#endregion
|
|
210
|
+
export { transmux };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { transmux } from "./transmux.js";
|
|
2
|
+
//#region src/containers/ts-transmux/transmux.worker.ts
|
|
3
|
+
const scope = self;
|
|
4
|
+
scope.onmessage = (event) => {
|
|
5
|
+
const { id, bytes, presentationStart, wantCaptions } = event.data;
|
|
6
|
+
const result = transmux(new Uint8Array(bytes), presentationStart, wantCaptions);
|
|
7
|
+
const out = result.bytes;
|
|
8
|
+
if (out === null) {
|
|
9
|
+
scope.postMessage({
|
|
10
|
+
id,
|
|
11
|
+
bytes: null,
|
|
12
|
+
notTransportStream: result.notTransportStream,
|
|
13
|
+
captions: []
|
|
14
|
+
}, []);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const buffer = new ArrayBuffer(out.byteLength);
|
|
18
|
+
new Uint8Array(buffer).set(out);
|
|
19
|
+
scope.postMessage({
|
|
20
|
+
id,
|
|
21
|
+
bytes: buffer,
|
|
22
|
+
notTransportStream: false,
|
|
23
|
+
captions: result.captions
|
|
24
|
+
}, [buffer]);
|
|
25
|
+
};
|
|
26
|
+
//#endregion
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { exportTrace, replay } from "./kernel/trace.js";
|
|
2
|
+
import { createBus } from "./kernel/bus.js";
|
|
3
|
+
import { createEffectRunner } from "./kernel/effects.js";
|
|
4
|
+
import { normalizeMimeType } from "./kernel/mime.js";
|
|
5
|
+
import _objectSpread2 from "./_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectSpread2.js";
|
|
6
|
+
import { canSwitchTo, createArbiter } from "./kernel/rendition-select.js";
|
|
7
|
+
import { createMseSink } from "./kernel/sinks/mse-sink.js";
|
|
8
|
+
import { createReducer, initialState, resolveConfig } from "./kernel/reducer.js";
|
|
9
|
+
import { createLifecycle } from "./kernel/lifecycle.js";
|
|
10
|
+
import { compose } from "./kernel/loader.js";
|
|
11
|
+
import _asyncToGenerator from "./_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/asyncToGenerator.js";
|
|
12
|
+
import { createMseController } from "./kernel/mse.js";
|
|
13
|
+
import { createTrackRegistry } from "./kernel/track-registry.js";
|
|
14
|
+
import { createTransport } from "./kernel/transport.js";
|
|
15
|
+
//#region src/index.ts
|
|
16
|
+
/**
|
|
17
|
+
* Mattebox: a modular adaptive-streaming engine for HLS and DASH.
|
|
18
|
+
* The public entry: the mattebox() factory composes the kernel with the
|
|
19
|
+
* caller's stages; mattebox.from() finds an engine from its element. One
|
|
20
|
+
* name for both, so the ESM import and the CDN global read the same.
|
|
21
|
+
*/
|
|
22
|
+
const registry = /* @__PURE__ */ new WeakMap();
|
|
23
|
+
/** Creates an engine. The element is supplied later via `attach`. */
|
|
24
|
+
function mattebox(options) {
|
|
25
|
+
var _options$stages, _options$config$media, _options$config, _options$transport, _options$transport2, _options$transport$re, _options$transport3, _options$transport$re2, _options$transport4;
|
|
26
|
+
const composition = compose((_options$stages = options.stages) !== null && _options$stages !== void 0 ? _options$stages : []);
|
|
27
|
+
const config = _objectSpread2(_objectSpread2({}, options.config), {}, { mediaTimeNormalized: (_options$config$media = (_options$config = options.config) === null || _options$config === void 0 ? void 0 : _options$config.mediaTimeNormalized) !== null && _options$config$media !== void 0 ? _options$config$media : composition.capabilities.includes("media-time-normalized") });
|
|
28
|
+
const cfg = resolveConfig(config);
|
|
29
|
+
const bus = createBus({
|
|
30
|
+
reducer: createReducer([], config),
|
|
31
|
+
initial: initialState(config),
|
|
32
|
+
traceCapacity: cfg.traceCapacity
|
|
33
|
+
});
|
|
34
|
+
const runner = createEffectRunner({ onEvent: (event, payload) => bus.emitEvent(event, payload) });
|
|
35
|
+
bus.setEffectSink((effects) => runner.run(effects));
|
|
36
|
+
const mediaTransforms = composition.capabilities.includes("media-transform");
|
|
37
|
+
const mse = createMseController(_objectSpread2({
|
|
38
|
+
absorb: (fact) => bus.absorb(fact),
|
|
39
|
+
backBufferSeconds: cfg.backBufferSeconds,
|
|
40
|
+
inferType: (bytes) => {
|
|
41
|
+
var _hooks$typeProbe, _hooks$typeProbe2;
|
|
42
|
+
return (_hooks$typeProbe = (_hooks$typeProbe2 = hooks.typeProbe) === null || _hooks$typeProbe2 === void 0 ? void 0 : _hooks$typeProbe2.call(hooks, bytes)) !== null && _hooks$typeProbe !== void 0 ? _hooks$typeProbe : null;
|
|
43
|
+
}
|
|
44
|
+
}, mediaTransforms ? { appendTransform: function() {
|
|
45
|
+
var _ref = _asyncToGenerator(function* (data, meta) {
|
|
46
|
+
let out = data;
|
|
47
|
+
for (const step of bus.transforms()) out = new Uint8Array(yield step.transform(out, meta));
|
|
48
|
+
return out;
|
|
49
|
+
});
|
|
50
|
+
return function appendTransform(_x, _x2) {
|
|
51
|
+
return _ref.apply(this, arguments);
|
|
52
|
+
};
|
|
53
|
+
}() } : {}));
|
|
54
|
+
mse.registerHandlers(runner);
|
|
55
|
+
const transport = createTransport(_objectSpread2(_objectSpread2({
|
|
56
|
+
absorb: (fact) => bus.absorb(fact),
|
|
57
|
+
inflight: (token) => bus.getState().scheduling.inflight.get(token),
|
|
58
|
+
acceptManifestType: (contentType) => {
|
|
59
|
+
const type = normalizeMimeType(contentType);
|
|
60
|
+
return !(type.startsWith("audio/") || type.startsWith("video/")) || accepts(type);
|
|
61
|
+
}
|
|
62
|
+
}, ((_options$transport = options.transport) === null || _options$transport === void 0 ? void 0 : _options$transport.retry) !== void 0 ? { retry: options.transport.retry } : {}), ((_options$transport2 = options.transport) === null || _options$transport2 === void 0 ? void 0 : _options$transport2.fetchImpl) !== void 0 ? { fetchImpl: options.transport.fetchImpl } : {}));
|
|
63
|
+
transport.registerHandlers(runner);
|
|
64
|
+
for (const hook of (_options$transport$re = (_options$transport3 = options.transport) === null || _options$transport3 === void 0 ? void 0 : _options$transport3.requestHooks) !== null && _options$transport$re !== void 0 ? _options$transport$re : []) transport.addRequestHook(hook);
|
|
65
|
+
for (const hook of (_options$transport$re2 = (_options$transport4 = options.transport) === null || _options$transport4 === void 0 ? void 0 : _options$transport4.responseHooks) !== null && _options$transport$re2 !== void 0 ? _options$transport$re2 : []) transport.addResponseHook(hook);
|
|
66
|
+
runner.register("emit", (effect) => {
|
|
67
|
+
bus.emitEvent(effect.event, effect.payload);
|
|
68
|
+
});
|
|
69
|
+
runner.register("schedule", (effect) => {
|
|
70
|
+
const id = setTimeout(() => {
|
|
71
|
+
runner.forget(effect.token);
|
|
72
|
+
const msg = effect.then.type === "TICK" ? _objectSpread2(_objectSpread2({}, effect.then), {}, { wallClock: Date.now() / 1e3 }) : effect.then;
|
|
73
|
+
bus.route(msg);
|
|
74
|
+
}, effect.delayMs);
|
|
75
|
+
return () => clearTimeout(id);
|
|
76
|
+
});
|
|
77
|
+
runner.register("seekElement", (effect) => {
|
|
78
|
+
const el = lifecycle.element();
|
|
79
|
+
if (el !== null) el.currentTime = effect.to;
|
|
80
|
+
});
|
|
81
|
+
const cueSinks = /* @__PURE__ */ new Map();
|
|
82
|
+
function cueSinkFor(contentType) {
|
|
83
|
+
const existing = cueSinks.get(contentType);
|
|
84
|
+
if (existing !== void 0) return existing;
|
|
85
|
+
const el = lifecycle.element();
|
|
86
|
+
if (el === null) return null;
|
|
87
|
+
const factory = bus.sinkFor(contentType);
|
|
88
|
+
if (factory === void 0) return null;
|
|
89
|
+
const sink = factory({ element: el });
|
|
90
|
+
cueSinks.set(contentType, sink);
|
|
91
|
+
return sink;
|
|
92
|
+
}
|
|
93
|
+
function contentTypeOfTrack(trackId) {
|
|
94
|
+
var _bus$getState$present, _bus$getState$present2;
|
|
95
|
+
for (const period of (_bus$getState$present = (_bus$getState$present2 = bus.getState().presentation) === null || _bus$getState$present2 === void 0 ? void 0 : _bus$getState$present2.periods) !== null && _bus$getState$present !== void 0 ? _bus$getState$present : []) for (const track of period.tracks) if (track.id === trackId) return track.contentType;
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
runner.register("emitCues", (effect) => {
|
|
99
|
+
var _cueSinkFor;
|
|
100
|
+
const contentType = contentTypeOfTrack(effect.trackId);
|
|
101
|
+
if (contentType !== "text" && contentType !== "metadata") return void 0;
|
|
102
|
+
(_cueSinkFor = cueSinkFor(contentType)) === null || _cueSinkFor === void 0 || _cueSinkFor.handleEmitCues(effect.trackId, effect.cues);
|
|
103
|
+
});
|
|
104
|
+
let deliverChain = Promise.resolve();
|
|
105
|
+
runner.register("deliver", (effect) => {
|
|
106
|
+
const sink = cueSinkFor(effect.contentType);
|
|
107
|
+
if (sink === null) return void 0;
|
|
108
|
+
deliverChain = deliverChain.then(_asyncToGenerator(function* () {
|
|
109
|
+
let data = new Uint8Array(effect.data);
|
|
110
|
+
for (const step of bus.transforms()) data = new Uint8Array(yield step.transform(data, effect.meta));
|
|
111
|
+
const bytes = data.byteOffset === 0 && data.byteLength === data.buffer.byteLength ? data.buffer : data.slice().buffer;
|
|
112
|
+
const produced = sink.accept(effect.trackId, bytes, effect.meta);
|
|
113
|
+
if (produced.length > 0) runner.run(produced);
|
|
114
|
+
})).catch(() => {
|
|
115
|
+
bus.emitEvent("error", {
|
|
116
|
+
category: "media",
|
|
117
|
+
code: "MEDIA_CONTAINER_INVALID",
|
|
118
|
+
fatal: false,
|
|
119
|
+
recoverable: false,
|
|
120
|
+
trackId: effect.trackId
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
runner.register("clearCues", (effect) => {
|
|
125
|
+
for (const sink of cueSinks.values()) sink.clear(effect.trackId, effect.start, effect.end);
|
|
126
|
+
});
|
|
127
|
+
const sinkInstances = /* @__PURE__ */ new Map();
|
|
128
|
+
for (const contentType of ["video", "audio"]) {
|
|
129
|
+
const sink = createMseSink(contentType, { buffered: (sbId) => mse.buffered(sbId) });
|
|
130
|
+
sinkInstances.set(contentType, sink);
|
|
131
|
+
bus.registerSink(contentType, () => sink);
|
|
132
|
+
}
|
|
133
|
+
for (const capability of composition.capabilities) bus.registerCapability(capability);
|
|
134
|
+
const tracks = createTrackRegistry({
|
|
135
|
+
getState: () => bus.getState(),
|
|
136
|
+
dispatch: (cmd) => bus.dispatch(cmd),
|
|
137
|
+
emitEvent: (event, payload) => bus.emitEvent(event, payload),
|
|
138
|
+
hasSink: (contentType) => bus.sinkFor(contentType) !== void 0
|
|
139
|
+
});
|
|
140
|
+
const arbiter = createArbiter();
|
|
141
|
+
const hooks = { manifestTypes: composition.manifestTypes };
|
|
142
|
+
let lastError = null;
|
|
143
|
+
function accepts(mimeType) {
|
|
144
|
+
return composition.manifestTypes.has(normalizeMimeType(mimeType));
|
|
145
|
+
}
|
|
146
|
+
function activeVideoRenditions() {
|
|
147
|
+
const state = bus.getState();
|
|
148
|
+
if (state.presentation === null) return [];
|
|
149
|
+
const activeId = state.tracks.active.get("video");
|
|
150
|
+
for (const period of state.presentation.periods) for (const track of period.tracks) {
|
|
151
|
+
if (track.contentType !== "video") continue;
|
|
152
|
+
if (activeId === void 0 || track.id === activeId) return track.renditions;
|
|
153
|
+
}
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
function arbitrated() {
|
|
157
|
+
var _state$presentation$c, _state$presentation;
|
|
158
|
+
const state = bus.getState();
|
|
159
|
+
return arbiter.run({
|
|
160
|
+
renditions: activeVideoRenditions(),
|
|
161
|
+
constraints: state.quality.constraints,
|
|
162
|
+
pinned: state.quality.pinned,
|
|
163
|
+
current: state.quality.active,
|
|
164
|
+
couplings: (_state$presentation$c = (_state$presentation = state.presentation) === null || _state$presentation === void 0 ? void 0 : _state$presentation.couplings) !== null && _state$presentation$c !== void 0 ? _state$presentation$c : [],
|
|
165
|
+
activeTracks: state.tracks.active,
|
|
166
|
+
availableGroups: (() => {
|
|
167
|
+
var _state$presentation$p, _state$presentation2;
|
|
168
|
+
const groups = /* @__PURE__ */ new Set();
|
|
169
|
+
for (const period of (_state$presentation$p = (_state$presentation2 = state.presentation) === null || _state$presentation2 === void 0 ? void 0 : _state$presentation2.periods) !== null && _state$presentation$p !== void 0 ? _state$presentation$p : []) for (const track of period.tracks) {
|
|
170
|
+
if (track.contentType !== "audio" && track.contentType !== "text") continue;
|
|
171
|
+
const colon = track.id.indexOf(":");
|
|
172
|
+
groups.add(`${track.contentType}:${colon === -1 ? track.id : track.id.slice(0, colon)}`);
|
|
173
|
+
}
|
|
174
|
+
return groups;
|
|
175
|
+
})(),
|
|
176
|
+
telemetry: {
|
|
177
|
+
throughputEwma: state.stats.throughputEwma,
|
|
178
|
+
throughputFastEwma: state.stats.throughputFastEwma,
|
|
179
|
+
current: state.quality.active,
|
|
180
|
+
currentTime: state.playback.currentTime
|
|
181
|
+
}
|
|
182
|
+
}, state.quality.version);
|
|
183
|
+
}
|
|
184
|
+
const facadeTarget = {};
|
|
185
|
+
const MEDIA_ERR = [
|
|
186
|
+
"",
|
|
187
|
+
"MEDIA_ERR_ABORTED",
|
|
188
|
+
"MEDIA_ERR_NETWORK",
|
|
189
|
+
"MEDIA_ERR_DECODE",
|
|
190
|
+
"MEDIA_ERR_SRC_NOT_SUPPORTED"
|
|
191
|
+
];
|
|
192
|
+
function onMediaError(el) {
|
|
193
|
+
var _el$error$code, _el$error, _MEDIA_ERR$code, _el$error$message, _el$error2;
|
|
194
|
+
const code = (_el$error$code = (_el$error = el.error) === null || _el$error === void 0 ? void 0 : _el$error.code) !== null && _el$error$code !== void 0 ? _el$error$code : 0;
|
|
195
|
+
if (code === 1 || lastError !== null) return;
|
|
196
|
+
bus.emitEvent("error", {
|
|
197
|
+
category: "media",
|
|
198
|
+
code: code === 4 ? "MEDIA_CODEC_UNSUPPORTED" : "MEDIA_DECODE_ERROR",
|
|
199
|
+
fatal: true,
|
|
200
|
+
recoverable: false,
|
|
201
|
+
context: {
|
|
202
|
+
mediaError: (_MEDIA_ERR$code = MEDIA_ERR[code]) !== null && _MEDIA_ERR$code !== void 0 ? _MEDIA_ERR$code : code,
|
|
203
|
+
message: (_el$error$message = (_el$error2 = el.error) === null || _el$error2 === void 0 ? void 0 : _el$error2.message) !== null && _el$error$message !== void 0 ? _el$error$message : ""
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
const base = {
|
|
208
|
+
get media() {
|
|
209
|
+
return lifecycle.element();
|
|
210
|
+
},
|
|
211
|
+
quality: {
|
|
212
|
+
get renditions() {
|
|
213
|
+
return activeVideoRenditions();
|
|
214
|
+
},
|
|
215
|
+
get allowed() {
|
|
216
|
+
const ids = arbitrated().result.allowed;
|
|
217
|
+
return activeVideoRenditions().filter((r) => ids.includes(r.id));
|
|
218
|
+
},
|
|
219
|
+
get active() {
|
|
220
|
+
var _activeVideoRendition;
|
|
221
|
+
const id = bus.getState().quality.active;
|
|
222
|
+
return (_activeVideoRendition = activeVideoRenditions().find((r) => r.id === id)) !== null && _activeVideoRendition !== void 0 ? _activeVideoRendition : null;
|
|
223
|
+
},
|
|
224
|
+
get playing() {
|
|
225
|
+
var _activeVideoRendition2;
|
|
226
|
+
const state = bus.getState();
|
|
227
|
+
const id = arbiter.playingAt(state.quality.appendLog, state.playback.currentTime);
|
|
228
|
+
return (_activeVideoRendition2 = activeVideoRenditions().find((r) => r.id === id)) !== null && _activeVideoRendition2 !== void 0 ? _activeVideoRendition2 : null;
|
|
229
|
+
},
|
|
230
|
+
get pinned() {
|
|
231
|
+
return bus.getState().quality.pinned;
|
|
232
|
+
},
|
|
233
|
+
get constraints() {
|
|
234
|
+
return bus.getState().quality.constraints;
|
|
235
|
+
},
|
|
236
|
+
constrain(source, constraint) {
|
|
237
|
+
bus.dispatch({
|
|
238
|
+
type: "CONSTRAIN",
|
|
239
|
+
source,
|
|
240
|
+
constraint
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
release(source) {
|
|
244
|
+
bus.dispatch({
|
|
245
|
+
type: "RELEASE_CONSTRAINT",
|
|
246
|
+
source
|
|
247
|
+
});
|
|
248
|
+
},
|
|
249
|
+
pin(renditionId, pinOptions) {
|
|
250
|
+
var _pinOptions$apply;
|
|
251
|
+
bus.dispatch({
|
|
252
|
+
type: "PIN_RENDITION",
|
|
253
|
+
renditionId,
|
|
254
|
+
apply: (_pinOptions$apply = pinOptions === null || pinOptions === void 0 ? void 0 : pinOptions.apply) !== null && _pinOptions$apply !== void 0 ? _pinOptions$apply : "soon"
|
|
255
|
+
});
|
|
256
|
+
},
|
|
257
|
+
auto() {
|
|
258
|
+
bus.dispatch({ type: "RELEASE_PIN" });
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
tracks,
|
|
262
|
+
stats: {
|
|
263
|
+
get throughput() {
|
|
264
|
+
return bus.getState().stats.throughputEwma;
|
|
265
|
+
},
|
|
266
|
+
trace() {
|
|
267
|
+
return bus.trace();
|
|
268
|
+
},
|
|
269
|
+
snapshot() {
|
|
270
|
+
return bus.getState();
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
get error() {
|
|
274
|
+
return lastError;
|
|
275
|
+
},
|
|
276
|
+
attach(el) {
|
|
277
|
+
return _asyncToGenerator(function* () {
|
|
278
|
+
lifecycle.attach(el);
|
|
279
|
+
})();
|
|
280
|
+
},
|
|
281
|
+
detach() {
|
|
282
|
+
return _asyncToGenerator(function* () {
|
|
283
|
+
lifecycle.detach();
|
|
284
|
+
})();
|
|
285
|
+
},
|
|
286
|
+
load(url, loadOptions) {
|
|
287
|
+
let absolute = url;
|
|
288
|
+
try {
|
|
289
|
+
var _globalThis$location;
|
|
290
|
+
absolute = new URL(url, (_globalThis$location = globalThis.location) === null || _globalThis$location === void 0 ? void 0 : _globalThis$location.href).href;
|
|
291
|
+
} catch (_unused) {}
|
|
292
|
+
lastError = null;
|
|
293
|
+
bus.dispatch(_objectSpread2({
|
|
294
|
+
type: "LOAD",
|
|
295
|
+
url: absolute
|
|
296
|
+
}, (loadOptions === null || loadOptions === void 0 ? void 0 : loadOptions.mimeType) !== void 0 ? { mimeType: loadOptions.mimeType } : {}));
|
|
297
|
+
},
|
|
298
|
+
unload() {
|
|
299
|
+
bus.dispatch({ type: "UNLOAD" });
|
|
300
|
+
},
|
|
301
|
+
dispatch(cmd) {
|
|
302
|
+
bus.dispatch(cmd);
|
|
303
|
+
},
|
|
304
|
+
capabilities() {
|
|
305
|
+
return composition.capabilities.map((capability) => typeof capability === "string" ? capability : `${capability.contentType}:${capability.mimeType}`);
|
|
306
|
+
},
|
|
307
|
+
accepts,
|
|
308
|
+
on(event, fn) {
|
|
309
|
+
return bus.on(event, fn);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
bus.on("error", (payload) => {
|
|
313
|
+
const summary = payload;
|
|
314
|
+
if (summary.fatal === true) {
|
|
315
|
+
var _summary$category, _summary$code, _summary$recoverable;
|
|
316
|
+
lastError = {
|
|
317
|
+
category: (_summary$category = summary.category) !== null && _summary$category !== void 0 ? _summary$category : "internal",
|
|
318
|
+
code: (_summary$code = summary.code) !== null && _summary$code !== void 0 ? _summary$code : "INTERNAL_ASSERTION",
|
|
319
|
+
fatal: true,
|
|
320
|
+
recoverable: (_summary$recoverable = summary.recoverable) !== null && _summary$recoverable !== void 0 ? _summary$recoverable : false,
|
|
321
|
+
trace: bus.trace()
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
Object.defineProperties(facadeTarget, Object.getOwnPropertyDescriptors(base));
|
|
326
|
+
const engine = facadeTarget;
|
|
327
|
+
const lifecycle = createLifecycle({
|
|
328
|
+
bus,
|
|
329
|
+
mse,
|
|
330
|
+
composition,
|
|
331
|
+
facade: facadeTarget,
|
|
332
|
+
config,
|
|
333
|
+
hooks,
|
|
334
|
+
addRequestHook: (hook) => transport.addRequestHook(hook),
|
|
335
|
+
request: (url, init) => transport.request(url, init),
|
|
336
|
+
register: (el) => registry.set(el, engine),
|
|
337
|
+
unregister: (el) => {
|
|
338
|
+
registry.delete(el);
|
|
339
|
+
runner.cancelAll();
|
|
340
|
+
for (const sink of cueSinks.values()) sink.dispose();
|
|
341
|
+
cueSinks.clear();
|
|
342
|
+
},
|
|
343
|
+
onMediaError
|
|
344
|
+
});
|
|
345
|
+
return engine;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Static lookup from an element to its engine, backed by a WeakMap. The
|
|
349
|
+
* element itself carries no added surface and garbage-collects normally.
|
|
350
|
+
*/
|
|
351
|
+
mattebox.from = (el) => {
|
|
352
|
+
var _registry$get;
|
|
353
|
+
return (_registry$get = registry.get(el)) !== null && _registry$get !== void 0 ? _registry$get : null;
|
|
354
|
+
};
|
|
355
|
+
//#endregion
|
|
356
|
+
export { canSwitchTo, createReducer, exportTrace, initialState, mattebox, replay, resolveConfig };
|