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,211 @@
|
|
|
1
|
+
//#region src/containers/ts-transmux/demux.ts
|
|
2
|
+
/**
|
|
3
|
+
* MPEG-TS demux: 188-byte packets into PES payloads, grouped by elementary
|
|
4
|
+
* stream. PAT names the PMT, the PMT names the elementary PIDs and their
|
|
5
|
+
* stream types, and the payload-unit-start flag frames each PES. Nothing
|
|
6
|
+
* here allocates per packet beyond the growing payload buffers, and every
|
|
7
|
+
* loop strictly advances, so a truncated or garbage segment returns what it
|
|
8
|
+
* could parse rather than throwing or spinning.
|
|
9
|
+
*/
|
|
10
|
+
const PACKET_SIZE = 188;
|
|
11
|
+
const SYNC_BYTE = 71;
|
|
12
|
+
/** MPEG-TS stream_type values this transmuxer routes. */
|
|
13
|
+
const STREAM_TYPE = {
|
|
14
|
+
h264: 27,
|
|
15
|
+
aacAdts: 15,
|
|
16
|
+
mp3a: 3,
|
|
17
|
+
mp3b: 4,
|
|
18
|
+
ac3: 129,
|
|
19
|
+
metadata: 21,
|
|
20
|
+
privateData: 6
|
|
21
|
+
};
|
|
22
|
+
function kindOf(streamType) {
|
|
23
|
+
if (streamType === STREAM_TYPE.h264) return "video";
|
|
24
|
+
if (streamType === STREAM_TYPE.aacAdts || streamType === STREAM_TYPE.mp3a || streamType === STREAM_TYPE.mp3b || streamType === STREAM_TYPE.ac3) return "audio";
|
|
25
|
+
if (streamType === STREAM_TYPE.metadata) return "id3";
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
/** True when the buffer carries the TS sync byte at the packet cadence. */
|
|
29
|
+
function looksLikeTransportStream(data) {
|
|
30
|
+
if (data.byteLength < PACKET_SIZE) return false;
|
|
31
|
+
let offset = 0;
|
|
32
|
+
while (offset + PACKET_SIZE < data.byteLength) {
|
|
33
|
+
if (data[offset] === SYNC_BYTE && data[offset + PACKET_SIZE] === SYNC_BYTE) return true;
|
|
34
|
+
offset += 1;
|
|
35
|
+
if (offset > PACKET_SIZE) return false;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
/** Reads a 33-bit PTS/DTS field from a 5-byte PES timestamp region. */
|
|
40
|
+
function readTimestamp(data, offset) {
|
|
41
|
+
var _data$offset, _data, _data2, _data3, _data4;
|
|
42
|
+
const b0 = (_data$offset = data[offset]) !== null && _data$offset !== void 0 ? _data$offset : 0;
|
|
43
|
+
const b1 = (_data = data[offset + 1]) !== null && _data !== void 0 ? _data : 0;
|
|
44
|
+
const b2 = (_data2 = data[offset + 2]) !== null && _data2 !== void 0 ? _data2 : 0;
|
|
45
|
+
const b3 = (_data3 = data[offset + 3]) !== null && _data3 !== void 0 ? _data3 : 0;
|
|
46
|
+
const b4 = (_data4 = data[offset + 4]) !== null && _data4 !== void 0 ? _data4 : 0;
|
|
47
|
+
const high = b0 >> 1 & 7;
|
|
48
|
+
const mid = (b1 << 7 | b2 >> 1) & 32767;
|
|
49
|
+
const low = (b3 << 7 | b4 >> 1) & 32767;
|
|
50
|
+
return high * 1073741824 + mid * 32768 + low;
|
|
51
|
+
}
|
|
52
|
+
/** Parses one completed PES accumulator into a packet with timestamps. */
|
|
53
|
+
function finishPes(acc) {
|
|
54
|
+
var _buf$, _buf$2;
|
|
55
|
+
const buf = concatChunks(acc.chunks, acc.length);
|
|
56
|
+
if (buf.byteLength < 9 || buf[0] !== 0 || buf[1] !== 0 || buf[2] !== 1) return null;
|
|
57
|
+
const headerDataLength = (_buf$ = buf[8]) !== null && _buf$ !== void 0 ? _buf$ : 0;
|
|
58
|
+
const ptsDtsFlags = ((_buf$2 = buf[7]) !== null && _buf$2 !== void 0 ? _buf$2 : 0) >> 6;
|
|
59
|
+
let pts = null;
|
|
60
|
+
let dts = null;
|
|
61
|
+
if (ptsDtsFlags & 2 && buf.byteLength >= 14) {
|
|
62
|
+
pts = readTimestamp(buf, 9);
|
|
63
|
+
dts = pts;
|
|
64
|
+
if (ptsDtsFlags & 1 && buf.byteLength >= 19) dts = readTimestamp(buf, 14);
|
|
65
|
+
}
|
|
66
|
+
const payloadStart = 9 + headerDataLength;
|
|
67
|
+
const data = payloadStart <= buf.byteLength ? buf.subarray(payloadStart) : /* @__PURE__ */ new Uint8Array(0);
|
|
68
|
+
return {
|
|
69
|
+
pid: acc.pid,
|
|
70
|
+
streamType: acc.streamType,
|
|
71
|
+
kind: acc.kind,
|
|
72
|
+
pts,
|
|
73
|
+
dts,
|
|
74
|
+
data
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function concatChunks(chunks, length) {
|
|
78
|
+
if (chunks.length === 1) return chunks[0];
|
|
79
|
+
const out = new Uint8Array(length);
|
|
80
|
+
let offset = 0;
|
|
81
|
+
for (const chunk of chunks) {
|
|
82
|
+
out.set(chunk, offset);
|
|
83
|
+
offset += chunk.byteLength;
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
function demux(data) {
|
|
88
|
+
if (!looksLikeTransportStream(data)) return {
|
|
89
|
+
video: [],
|
|
90
|
+
audio: [],
|
|
91
|
+
id3: [],
|
|
92
|
+
notTransportStream: true
|
|
93
|
+
};
|
|
94
|
+
let base = 0;
|
|
95
|
+
while (base < data.byteLength && data[base] !== SYNC_BYTE) base += 1;
|
|
96
|
+
let pmtPid = -1;
|
|
97
|
+
const streamTypes = /* @__PURE__ */ new Map();
|
|
98
|
+
const accumulators = /* @__PURE__ */ new Map();
|
|
99
|
+
const completed = [];
|
|
100
|
+
function flush(pid) {
|
|
101
|
+
const acc = accumulators.get(pid);
|
|
102
|
+
if (acc === void 0 || acc.length === 0) return;
|
|
103
|
+
const packet = finishPes(acc);
|
|
104
|
+
if (packet !== null) completed.push(packet);
|
|
105
|
+
accumulators.delete(pid);
|
|
106
|
+
}
|
|
107
|
+
for (let offset = base; offset + PACKET_SIZE <= data.byteLength; offset += PACKET_SIZE) {
|
|
108
|
+
var _data5, _data6, _data7;
|
|
109
|
+
if (data[offset] !== SYNC_BYTE) {
|
|
110
|
+
let resync = offset + 1;
|
|
111
|
+
while (resync < data.byteLength && data[resync] !== SYNC_BYTE) resync += 1;
|
|
112
|
+
offset = resync - PACKET_SIZE;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const b1 = (_data5 = data[offset + 1]) !== null && _data5 !== void 0 ? _data5 : 0;
|
|
116
|
+
const b2 = (_data6 = data[offset + 2]) !== null && _data6 !== void 0 ? _data6 : 0;
|
|
117
|
+
const b3 = (_data7 = data[offset + 3]) !== null && _data7 !== void 0 ? _data7 : 0;
|
|
118
|
+
const pusi = (b1 & 64) !== 0;
|
|
119
|
+
const pid = (b1 & 31) << 8 | b2;
|
|
120
|
+
const adaptationControl = b3 >> 4 & 3;
|
|
121
|
+
if (!((adaptationControl & 1) !== 0)) continue;
|
|
122
|
+
let payloadOffset = offset + 4;
|
|
123
|
+
if (adaptationControl & 2) {
|
|
124
|
+
var _data$payloadOffset;
|
|
125
|
+
const adaptationLength = (_data$payloadOffset = data[payloadOffset]) !== null && _data$payloadOffset !== void 0 ? _data$payloadOffset : 0;
|
|
126
|
+
payloadOffset += 1 + adaptationLength;
|
|
127
|
+
}
|
|
128
|
+
if (payloadOffset >= offset + PACKET_SIZE) continue;
|
|
129
|
+
const payload = data.subarray(payloadOffset, offset + PACKET_SIZE);
|
|
130
|
+
if (pid === 0) {
|
|
131
|
+
var _payload$;
|
|
132
|
+
const pointer = (_payload$ = payload[0]) !== null && _payload$ !== void 0 ? _payload$ : 0;
|
|
133
|
+
const section = payload.subarray(1 + pointer);
|
|
134
|
+
if (section.byteLength >= 13) {
|
|
135
|
+
var _section$, _section$2;
|
|
136
|
+
pmtPid = (((_section$ = section[10]) !== null && _section$ !== void 0 ? _section$ : 0) & 31) << 8 | ((_section$2 = section[11]) !== null && _section$2 !== void 0 ? _section$2 : 0);
|
|
137
|
+
}
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (pid === pmtPid && pusi) {
|
|
141
|
+
var _payload$2, _section$3, _section$4, _section$5, _section$6;
|
|
142
|
+
const pointer = (_payload$2 = payload[0]) !== null && _payload$2 !== void 0 ? _payload$2 : 0;
|
|
143
|
+
const section = payload.subarray(1 + pointer);
|
|
144
|
+
const sectionLength = (((_section$3 = section[1]) !== null && _section$3 !== void 0 ? _section$3 : 0) & 15) << 8 | ((_section$4 = section[2]) !== null && _section$4 !== void 0 ? _section$4 : 0);
|
|
145
|
+
let cursor = 12 + ((((_section$5 = section[10]) !== null && _section$5 !== void 0 ? _section$5 : 0) & 15) << 8 | ((_section$6 = section[11]) !== null && _section$6 !== void 0 ? _section$6 : 0));
|
|
146
|
+
const end = Math.min(3 + sectionLength - 4, section.byteLength);
|
|
147
|
+
while (cursor + 5 <= end) {
|
|
148
|
+
var _section$cursor, _section, _section2, _section3, _section4;
|
|
149
|
+
const streamType = (_section$cursor = section[cursor]) !== null && _section$cursor !== void 0 ? _section$cursor : 0;
|
|
150
|
+
const elementaryPid = (((_section = section[cursor + 1]) !== null && _section !== void 0 ? _section : 0) & 31) << 8 | ((_section2 = section[cursor + 2]) !== null && _section2 !== void 0 ? _section2 : 0);
|
|
151
|
+
const esInfoLength = (((_section3 = section[cursor + 3]) !== null && _section3 !== void 0 ? _section3 : 0) & 15) << 8 | ((_section4 = section[cursor + 4]) !== null && _section4 !== void 0 ? _section4 : 0);
|
|
152
|
+
streamTypes.set(elementaryPid, streamType);
|
|
153
|
+
cursor += 5 + esInfoLength;
|
|
154
|
+
}
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
const streamType = streamTypes.get(pid);
|
|
158
|
+
if (streamType === void 0) continue;
|
|
159
|
+
const kind = kindOf(streamType);
|
|
160
|
+
if (kind === null) continue;
|
|
161
|
+
if (pusi) {
|
|
162
|
+
flush(pid);
|
|
163
|
+
accumulators.set(pid, {
|
|
164
|
+
pid,
|
|
165
|
+
streamType,
|
|
166
|
+
kind,
|
|
167
|
+
chunks: [],
|
|
168
|
+
length: 0
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
const acc = accumulators.get(pid);
|
|
172
|
+
if (acc === void 0) continue;
|
|
173
|
+
acc.chunks.push(payload);
|
|
174
|
+
acc.length += payload.byteLength;
|
|
175
|
+
}
|
|
176
|
+
for (const pid of accumulators.keys()) flush(pid);
|
|
177
|
+
return {
|
|
178
|
+
video: completed.filter((p) => p.kind === "video"),
|
|
179
|
+
audio: completed.filter((p) => p.kind === "audio"),
|
|
180
|
+
id3: completed.filter((p) => p.kind === "id3"),
|
|
181
|
+
notTransportStream: false
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Corrects a 33-bit timestamp series for wrap. When a value drops by more
|
|
186
|
+
* than half the range from the previous one, the counter rolled over; the
|
|
187
|
+
* accumulated offset carries every later value past the wrap. The reference
|
|
188
|
+
* anchors the first value so the output starts near zero regardless of where
|
|
189
|
+
* in the 26.5 hour cycle the segment sits.
|
|
190
|
+
*/
|
|
191
|
+
function unrollTimestamps(values) {
|
|
192
|
+
const RANGE = 8589934592;
|
|
193
|
+
const HALF = 4294967296;
|
|
194
|
+
let offset = 0;
|
|
195
|
+
let previous = null;
|
|
196
|
+
const out = [];
|
|
197
|
+
for (const value of values) {
|
|
198
|
+
if (value === null) {
|
|
199
|
+
var _previous;
|
|
200
|
+
out.push((_previous = previous) !== null && _previous !== void 0 ? _previous : 0);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (previous !== null && value + offset < previous - HALF) offset += RANGE;
|
|
204
|
+
const unrolled = value + offset;
|
|
205
|
+
out.push(unrolled);
|
|
206
|
+
previous = unrolled;
|
|
207
|
+
}
|
|
208
|
+
return out;
|
|
209
|
+
}
|
|
210
|
+
//#endregion
|
|
211
|
+
export { STREAM_TYPE, demux, looksLikeTransportStream, unrollTimestamps };
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import _defineProperty from "../../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/defineProperty.js";
|
|
2
|
+
//#region src/containers/ts-transmux/h264.ts
|
|
3
|
+
/**
|
|
4
|
+
* H.264 Annex B to AVCC. The elementary stream separates NAL units with
|
|
5
|
+
* start codes; MSE wants them length-prefixed, with the parameter sets moved
|
|
6
|
+
* into the avcC box instead of the sample data. This module splits NALs,
|
|
7
|
+
* pulls the SPS and PPS, and reads the coded dimensions out of the SPS so
|
|
8
|
+
* the init segment is honest. Exp-Golomb reads are bounded by the bitstream
|
|
9
|
+
* length, so a truncated SPS yields zeroes rather than a runaway loop.
|
|
10
|
+
*/
|
|
11
|
+
const NAL_TYPE = {
|
|
12
|
+
nonIdrSlice: 1,
|
|
13
|
+
idrSlice: 5,
|
|
14
|
+
sei: 6,
|
|
15
|
+
sps: 7,
|
|
16
|
+
pps: 8,
|
|
17
|
+
accessUnitDelimiter: 9
|
|
18
|
+
};
|
|
19
|
+
/** Splits an Annex B buffer into raw NAL units, start codes removed. */
|
|
20
|
+
function splitNalUnits(data) {
|
|
21
|
+
const nals = [];
|
|
22
|
+
const length = data.byteLength;
|
|
23
|
+
let start = -1;
|
|
24
|
+
let i = 0;
|
|
25
|
+
while (i + 2 < length) if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 1) {
|
|
26
|
+
if (start !== -1) nals.push(data.subarray(start, i));
|
|
27
|
+
i += 3;
|
|
28
|
+
start = i;
|
|
29
|
+
} else i += 1;
|
|
30
|
+
if (start !== -1 && start < length) nals.push(data.subarray(start, length));
|
|
31
|
+
return nals.filter((nal) => nal.byteLength > 0);
|
|
32
|
+
}
|
|
33
|
+
function nalType(nal) {
|
|
34
|
+
var _nal$;
|
|
35
|
+
return ((_nal$ = nal[0]) !== null && _nal$ !== void 0 ? _nal$ : 0) & 31;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Turns one PES payload's NALs into an access unit. Parameter sets are
|
|
39
|
+
* surfaced for the init segment and dropped from the sample; slices and SEI
|
|
40
|
+
* become length-prefixed AVCC. An IDR slice marks the sample as a keyframe.
|
|
41
|
+
*/
|
|
42
|
+
function toAccessUnit(annexB) {
|
|
43
|
+
return accessUnitFromNals(splitNalUnits(annexB));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Builds one access unit from its already-split NAL units. Access units do not
|
|
47
|
+
* align with PES packet boundaries in the wild, so the demux splits the whole
|
|
48
|
+
* elementary stream and groups NALs into units by access-unit delimiter; this
|
|
49
|
+
* turns one such group into an AVCC sample.
|
|
50
|
+
*/
|
|
51
|
+
function accessUnitFromNals(nals) {
|
|
52
|
+
let sps = null;
|
|
53
|
+
let pps = null;
|
|
54
|
+
let isKeyframe = false;
|
|
55
|
+
const sampleNals = [];
|
|
56
|
+
const sei = [];
|
|
57
|
+
for (const nal of nals) {
|
|
58
|
+
const type = nalType(nal);
|
|
59
|
+
if (type === NAL_TYPE.sps) sps = nal;
|
|
60
|
+
else if (type === NAL_TYPE.pps) pps = nal;
|
|
61
|
+
else if (type === NAL_TYPE.accessUnitDelimiter) continue;
|
|
62
|
+
else {
|
|
63
|
+
if (type === NAL_TYPE.idrSlice) isKeyframe = true;
|
|
64
|
+
if (type === NAL_TYPE.sei) sei.push(nal);
|
|
65
|
+
sampleNals.push(nal);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
let length = 0;
|
|
69
|
+
for (const nal of sampleNals) length += 4 + nal.byteLength;
|
|
70
|
+
const avcc = new Uint8Array(length);
|
|
71
|
+
const view = new DataView(avcc.buffer);
|
|
72
|
+
let offset = 0;
|
|
73
|
+
for (const nal of sampleNals) {
|
|
74
|
+
view.setUint32(offset, nal.byteLength);
|
|
75
|
+
avcc.set(nal, offset + 4);
|
|
76
|
+
offset += 4 + nal.byteLength;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
avcc,
|
|
80
|
+
isKeyframe,
|
|
81
|
+
sps,
|
|
82
|
+
pps,
|
|
83
|
+
sei
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** Strips H.264 emulation-prevention bytes (00 00 03 -> 00 00) for RBSP reads. */
|
|
87
|
+
function toRbsp(nal) {
|
|
88
|
+
const out = new Uint8Array(nal.byteLength);
|
|
89
|
+
let count = 0;
|
|
90
|
+
let zeros = 0;
|
|
91
|
+
for (let i = 1; i < nal.byteLength; i += 1) {
|
|
92
|
+
const byte = nal[i];
|
|
93
|
+
if (zeros >= 2 && byte === 3) {
|
|
94
|
+
zeros = 0;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
out[count] = byte;
|
|
98
|
+
count += 1;
|
|
99
|
+
zeros = byte === 0 ? zeros + 1 : 0;
|
|
100
|
+
}
|
|
101
|
+
return out.subarray(0, count);
|
|
102
|
+
}
|
|
103
|
+
var BitReader = class {
|
|
104
|
+
constructor(data) {
|
|
105
|
+
this.data = data;
|
|
106
|
+
_defineProperty(this, "byte", 0);
|
|
107
|
+
_defineProperty(this, "bit", 0);
|
|
108
|
+
}
|
|
109
|
+
readBit() {
|
|
110
|
+
if (this.byte >= this.data.byteLength) return 0;
|
|
111
|
+
const value = this.data[this.byte] >> 7 - this.bit & 1;
|
|
112
|
+
this.bit += 1;
|
|
113
|
+
if (this.bit === 8) {
|
|
114
|
+
this.bit = 0;
|
|
115
|
+
this.byte += 1;
|
|
116
|
+
}
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
readBits(count) {
|
|
120
|
+
let value = 0;
|
|
121
|
+
for (let i = 0; i < count; i += 1) value = value << 1 | this.readBit();
|
|
122
|
+
return value >>> 0;
|
|
123
|
+
}
|
|
124
|
+
/** Unsigned Exp-Golomb, bounded so a malformed stream cannot loop forever. */
|
|
125
|
+
readUe() {
|
|
126
|
+
let leadingZeros = 0;
|
|
127
|
+
while (leadingZeros < 32 && this.byte < this.data.byteLength && this.readBit() === 0) leadingZeros += 1;
|
|
128
|
+
if (leadingZeros === 0) return 0;
|
|
129
|
+
return (1 << leadingZeros) - 1 + this.readBits(leadingZeros);
|
|
130
|
+
}
|
|
131
|
+
readSe() {
|
|
132
|
+
const value = this.readUe();
|
|
133
|
+
return value & 1 ? value + 1 >> 1 : -(value >> 1);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
/** Reads coded width and height from an SPS NAL, cropping applied. */
|
|
137
|
+
function spsDimensions(sps) {
|
|
138
|
+
const reader = new BitReader(toRbsp(sps));
|
|
139
|
+
const profileIdc = reader.readBits(8);
|
|
140
|
+
reader.readBits(8);
|
|
141
|
+
reader.readBits(8);
|
|
142
|
+
reader.readUe();
|
|
143
|
+
let chromaFormat = 1;
|
|
144
|
+
if ([
|
|
145
|
+
100,
|
|
146
|
+
110,
|
|
147
|
+
122,
|
|
148
|
+
244,
|
|
149
|
+
44,
|
|
150
|
+
83,
|
|
151
|
+
86,
|
|
152
|
+
118,
|
|
153
|
+
128,
|
|
154
|
+
138,
|
|
155
|
+
139,
|
|
156
|
+
134,
|
|
157
|
+
135
|
|
158
|
+
].includes(profileIdc)) {
|
|
159
|
+
chromaFormat = reader.readUe();
|
|
160
|
+
if (chromaFormat === 3) reader.readBits(1);
|
|
161
|
+
reader.readUe();
|
|
162
|
+
reader.readUe();
|
|
163
|
+
reader.readBits(1);
|
|
164
|
+
if (reader.readBits(1)) {
|
|
165
|
+
const count = chromaFormat === 3 ? 12 : 8;
|
|
166
|
+
for (let i = 0; i < count; i += 1) if (reader.readBits(1)) reader.readUe();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
reader.readUe();
|
|
170
|
+
const picOrderCntType = reader.readUe();
|
|
171
|
+
if (picOrderCntType === 0) reader.readUe();
|
|
172
|
+
else if (picOrderCntType === 1) {
|
|
173
|
+
reader.readBits(1);
|
|
174
|
+
reader.readSe();
|
|
175
|
+
reader.readSe();
|
|
176
|
+
const numRefFrames = reader.readUe();
|
|
177
|
+
for (let i = 0; i < numRefFrames && i < 256; i += 1) reader.readSe();
|
|
178
|
+
}
|
|
179
|
+
reader.readUe();
|
|
180
|
+
reader.readBits(1);
|
|
181
|
+
const picWidthInMbs = reader.readUe() + 1;
|
|
182
|
+
const picHeightInMapUnits = reader.readUe() + 1;
|
|
183
|
+
const frameMbsOnly = reader.readBits(1);
|
|
184
|
+
if (frameMbsOnly === 0) reader.readBits(1);
|
|
185
|
+
reader.readBits(1);
|
|
186
|
+
let cropLeft = 0;
|
|
187
|
+
let cropRight = 0;
|
|
188
|
+
let cropTop = 0;
|
|
189
|
+
let cropBottom = 0;
|
|
190
|
+
if (reader.readBits(1)) {
|
|
191
|
+
cropLeft = reader.readUe();
|
|
192
|
+
cropRight = reader.readUe();
|
|
193
|
+
cropTop = reader.readUe();
|
|
194
|
+
cropBottom = reader.readUe();
|
|
195
|
+
}
|
|
196
|
+
const width = picWidthInMbs * 16 - (cropLeft + cropRight) * 2;
|
|
197
|
+
const height = (2 - frameMbsOnly) * picHeightInMapUnits * 16 - (cropTop + cropBottom) * 2;
|
|
198
|
+
return {
|
|
199
|
+
width: Math.max(0, width),
|
|
200
|
+
height: Math.max(0, height)
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
//#endregion
|
|
204
|
+
export { NAL_TYPE, accessUnitFromNals, nalType, splitNalUnits, spsDimensions, toAccessUnit };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import _asyncToGenerator from "../../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/asyncToGenerator.js";
|
|
2
|
+
import { captionsWanted, deliverCaptions } from "../captions.js";
|
|
3
|
+
import { looksLikeTransportStream } from "./demux.js";
|
|
4
|
+
import { createTransmuxRunner } from "./runner.js";
|
|
5
|
+
//#region src/containers/ts-transmux/index.ts
|
|
6
|
+
/** Runs after decrypt-class steps (lower order) and before caption extraction. */
|
|
7
|
+
const TRANSMUX_ORDER = 100;
|
|
8
|
+
function tsTransmux(options = {}) {
|
|
9
|
+
return {
|
|
10
|
+
name: "ts-transmux",
|
|
11
|
+
provides: [
|
|
12
|
+
"ts-transmux",
|
|
13
|
+
"media-transform",
|
|
14
|
+
"media-time-normalized"
|
|
15
|
+
],
|
|
16
|
+
install(ctx) {
|
|
17
|
+
const runner = createTransmuxRunner(options);
|
|
18
|
+
ctx.registerTransform({
|
|
19
|
+
name: "ts-transmux",
|
|
20
|
+
order: TRANSMUX_ORDER,
|
|
21
|
+
transform(data, meta) {
|
|
22
|
+
return _asyncToGenerator(function* () {
|
|
23
|
+
var _result$bytes;
|
|
24
|
+
if (meta.contentType !== "video" && meta.contentType !== "audio") return data;
|
|
25
|
+
if (!looksLikeTransportStream(data)) return data;
|
|
26
|
+
const result = yield runner.run(data, meta.start, captionsWanted());
|
|
27
|
+
if (result.captions.length > 0) deliverCaptions(result.captions);
|
|
28
|
+
return (_result$bytes = result.bytes) !== null && _result$bytes !== void 0 ? _result$bytes : data;
|
|
29
|
+
})();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return () => runner.dispose();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { tsTransmux as default };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { transmux } from "./transmux.js";
|
|
2
|
+
//#region src/containers/ts-transmux/runner.ts
|
|
3
|
+
/**
|
|
4
|
+
* The boundary between the transform step and where the demux actually runs.
|
|
5
|
+
* A Worker keeps the hot path off the main thread; when the build cannot emit
|
|
6
|
+
* a Worker chunk, or the environment has no Worker, or a custom-URL Worker
|
|
7
|
+
* fails to start, the same pure transmux runs synchronously on the main
|
|
8
|
+
* thread. Both paths call the identical function, so the bytes match whatever
|
|
9
|
+
* route a given browser takes; only the timing differs.
|
|
10
|
+
*/
|
|
11
|
+
function runOnMainThread(bytes, presentationStart, wantCaptions) {
|
|
12
|
+
return transmux(bytes, presentationStart, wantCaptions);
|
|
13
|
+
}
|
|
14
|
+
function createTransmuxRunner(options = {}) {
|
|
15
|
+
let worker = null;
|
|
16
|
+
let workerBroken = options.disableWorker === true;
|
|
17
|
+
let lastPath = "main";
|
|
18
|
+
let nextId = 1;
|
|
19
|
+
const pending = /* @__PURE__ */ new Map();
|
|
20
|
+
function ensureWorker() {
|
|
21
|
+
if (workerBroken) return null;
|
|
22
|
+
if (worker !== null) return worker;
|
|
23
|
+
try {
|
|
24
|
+
worker = options.workerUrl !== void 0 ? new Worker(options.workerUrl, { type: "module" }) : new Worker(new URL("./transmux.worker.js", import.meta.url), { type: "module" });
|
|
25
|
+
worker.onmessage = (event) => {
|
|
26
|
+
const entry = pending.get(event.data.id);
|
|
27
|
+
if (entry === void 0) return;
|
|
28
|
+
pending.delete(event.data.id);
|
|
29
|
+
entry.resolve({
|
|
30
|
+
bytes: event.data.bytes === null ? null : new Uint8Array(event.data.bytes),
|
|
31
|
+
notTransportStream: event.data.notTransportStream,
|
|
32
|
+
empty: event.data.bytes === null && !event.data.notTransportStream,
|
|
33
|
+
captions: event.data.captions
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
worker.onerror = () => {
|
|
37
|
+
workerBroken = true;
|
|
38
|
+
worker = null;
|
|
39
|
+
for (const [id, entry] of pending) {
|
|
40
|
+
pending.delete(id);
|
|
41
|
+
entry.resolve(runOnMainThread(entry.bytes, entry.presentationStart, entry.wantCaptions));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
} catch (_unused) {
|
|
45
|
+
workerBroken = true;
|
|
46
|
+
worker = null;
|
|
47
|
+
}
|
|
48
|
+
return worker;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
run(bytes, presentationStart, wantCaptions = false) {
|
|
52
|
+
const active = ensureWorker();
|
|
53
|
+
if (active === null) {
|
|
54
|
+
lastPath = "main";
|
|
55
|
+
return Promise.resolve(runOnMainThread(bytes, presentationStart, wantCaptions));
|
|
56
|
+
}
|
|
57
|
+
lastPath = "worker";
|
|
58
|
+
const id = nextId;
|
|
59
|
+
nextId += 1;
|
|
60
|
+
const copy = bytes.slice();
|
|
61
|
+
return new Promise((resolve) => {
|
|
62
|
+
pending.set(id, {
|
|
63
|
+
resolve,
|
|
64
|
+
bytes,
|
|
65
|
+
presentationStart,
|
|
66
|
+
wantCaptions
|
|
67
|
+
});
|
|
68
|
+
try {
|
|
69
|
+
active.postMessage({
|
|
70
|
+
id,
|
|
71
|
+
bytes: copy.buffer,
|
|
72
|
+
presentationStart,
|
|
73
|
+
wantCaptions
|
|
74
|
+
}, [copy.buffer]);
|
|
75
|
+
} catch (_unused2) {
|
|
76
|
+
pending.delete(id);
|
|
77
|
+
workerBroken = true;
|
|
78
|
+
worker = null;
|
|
79
|
+
lastPath = "main";
|
|
80
|
+
resolve(runOnMainThread(bytes, presentationStart, wantCaptions));
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
path() {
|
|
85
|
+
return lastPath;
|
|
86
|
+
},
|
|
87
|
+
dispose() {
|
|
88
|
+
worker === null || worker === void 0 || worker.terminate();
|
|
89
|
+
worker = null;
|
|
90
|
+
pending.clear();
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
export { createTransmuxRunner };
|