@omnimedia/omnitool 1.1.0-8 → 1.1.0-81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +293 -76
- package/package.json +19 -17
- package/s/context.ts +0 -7
- package/s/demo/demo.bundle.ts +104 -43
- package/s/demo/demo.css +244 -14
- package/s/demo/routines/export-test.ts +16 -0
- package/s/demo/routines/filmstrip-test.ts +22 -18
- package/s/demo/routines/load-video.ts +2 -3
- package/s/demo/routines/playback-test.ts +61 -0
- package/s/demo/routines/timeline-setup.ts +50 -0
- package/s/demo/routines/transcode-test.ts +19 -5
- package/s/demo/routines/transitions-test.ts +2 -2
- package/s/demo/routines/waveform-test.ts +35 -8
- package/s/driver/driver-worker.ts +9 -0
- package/s/driver/driver.test.ts +1 -1
- package/s/driver/driver.ts +43 -42
- package/s/driver/fns/schematic.ts +26 -6
- package/s/driver/fns/work.ts +65 -189
- package/s/driver/parts/compositor.ts +316 -0
- package/s/driver/parts/machina.ts +19 -20
- package/s/driver/utils/find-pixi-filter.ts +24 -0
- package/s/index.html.ts +103 -25
- package/s/index.ts +1 -0
- package/s/tests.bundle.ts +11 -0
- package/s/tests.html.ts +28 -0
- package/s/timeline/index.ts +8 -2
- package/s/timeline/parts/animations.ts +56 -0
- package/s/timeline/parts/filmstrip.ts +43 -16
- package/s/timeline/parts/filters.ts +453 -0
- package/s/timeline/parts/item.ts +70 -7
- package/s/timeline/parts/media.ts +12 -2
- package/s/timeline/parts/resource-pool.ts +8 -5
- package/s/timeline/parts/resource.ts +3 -0
- package/s/timeline/parts/waveform/parts/collect.ts +72 -0
- package/s/timeline/parts/waveform/parts/render.ts +45 -0
- package/s/timeline/parts/waveform/parts/types.ts +24 -0
- package/s/timeline/parts/waveform/waveform.ts +161 -0
- package/s/timeline/renderers/export/parts/audio-gain.ts +17 -0
- package/s/timeline/renderers/export/parts/audio-mix.ts +133 -0
- package/s/timeline/renderers/export/parts/cursor.ts +129 -0
- package/s/timeline/renderers/export/parts/produce-audio.ts +64 -0
- package/s/timeline/renderers/export/parts/produce-video.ts +49 -0
- package/s/timeline/renderers/export/parts/resamplers.ts +48 -0
- package/s/timeline/renderers/export/produce.ts +28 -0
- package/s/timeline/renderers/parts/handy.ts +377 -0
- package/s/timeline/renderers/parts/samplers/audio/parts/find.ts +19 -0
- package/s/timeline/renderers/parts/samplers/audio/parts/init.ts +60 -0
- package/s/timeline/renderers/parts/samplers/audio/parts/sink.ts +38 -0
- package/s/timeline/renderers/parts/samplers/audio/parts/types.ts +16 -0
- package/s/timeline/renderers/parts/samplers/audio/sampler.ts +35 -0
- package/s/timeline/renderers/parts/samplers/visual/parts/defaults.ts +16 -0
- package/s/timeline/renderers/parts/samplers/visual/parts/sample.ts +69 -0
- package/s/timeline/renderers/parts/samplers/visual/parts/sequence.ts +111 -0
- package/s/timeline/renderers/parts/samplers/visual/parts/sink.ts +38 -0
- package/s/timeline/renderers/parts/samplers/visual/parts/transition.ts +28 -0
- package/s/timeline/renderers/parts/samplers/visual/parts/types.ts +10 -0
- package/s/timeline/renderers/parts/samplers/visual/sampler.ts +28 -0
- package/s/timeline/renderers/parts/schedulers.ts +96 -0
- package/s/timeline/renderers/player/parts/playback.ts +159 -0
- package/s/timeline/renderers/player/player.ts +77 -0
- package/s/timeline/renderers/renderers.test.ts +403 -0
- package/s/timeline/sugar/helpers.ts +190 -0
- package/s/timeline/sugar/o.ts +271 -59
- package/s/timeline/sugar/omni.test.ts +210 -0
- package/s/timeline/sugar/omni.ts +35 -12
- package/s/timeline/types.ts +28 -3
- package/s/timeline/utils/anim.ts +72 -0
- package/s/timeline/utils/checksum.ts +3 -1
- package/s/timeline/utils/datafile.ts +15 -4
- package/s/timeline/utils/dummy-data.ts +3 -3
- package/s/timeline/utils/matrix.ts +21 -0
- package/s/timeline/utils/terps.ts +81 -0
- package/s/units/fps.ts +8 -0
- package/s/units/ms.ts +8 -0
- package/s/units/seconds.ts +8 -0
- package/x/WebGLRenderer-4CHIZDHY.js +2 -0
- package/x/WebGLRenderer-4CHIZDHY.js.map +7 -0
- package/x/WebGPURenderer-O6WXU2QR.js +2 -0
- package/x/WebGPURenderer-O6WXU2QR.js.map +7 -0
- package/x/browserAll-WNIOTNNP.js +2 -0
- package/x/browserAll-WNIOTNNP.js.map +7 -0
- package/x/chunk-23FOBGX6.js +2 -0
- package/x/chunk-23FOBGX6.js.map +7 -0
- package/x/chunk-73XOWA4F.js +393 -0
- package/x/chunk-73XOWA4F.js.map +7 -0
- package/x/chunk-IAWJKNX5.js +42 -0
- package/x/chunk-IAWJKNX5.js.map +7 -0
- package/x/chunk-KCMVLWBS.js +157 -0
- package/x/chunk-KCMVLWBS.js.map +7 -0
- package/x/chunk-MR32SQ27.js +2 -0
- package/x/chunk-MR32SQ27.js.map +7 -0
- package/x/chunk-VCUJJYRJ.js +327 -0
- package/x/chunk-VCUJJYRJ.js.map +7 -0
- package/x/chunk-XNIZ4L5W.js +269 -0
- package/x/chunk-XNIZ4L5W.js.map +7 -0
- package/x/chunk-ZLGNQFUI.js +15 -0
- package/x/chunk-ZLGNQFUI.js.map +7 -0
- package/x/context.d.ts +1 -4
- package/x/context.js +1 -5
- package/x/context.js.map +1 -1
- package/x/demo/WebGLRenderer-RSJAHIG2.js +2 -0
- package/x/demo/WebGLRenderer-RSJAHIG2.js.map +7 -0
- package/x/demo/WebGPURenderer-MGFAJCYY.js +2 -0
- package/x/demo/WebGPURenderer-MGFAJCYY.js.map +7 -0
- package/x/demo/browserAll-PTRBXBRP.js +2 -0
- package/x/demo/browserAll-PTRBXBRP.js.map +7 -0
- package/x/demo/chunk-CUYOGHWU.js +42 -0
- package/x/demo/chunk-CUYOGHWU.js.map +7 -0
- package/x/demo/chunk-DGTDNJ7W.js +2 -0
- package/x/demo/chunk-DGTDNJ7W.js.map +7 -0
- package/x/demo/chunk-FZ5BYF63.js +15 -0
- package/x/demo/chunk-FZ5BYF63.js.map +7 -0
- package/x/demo/chunk-KWN4NNES.js +269 -0
- package/x/demo/chunk-KWN4NNES.js.map +7 -0
- package/x/demo/chunk-OJ3FPXW7.js +157 -0
- package/x/demo/chunk-OJ3FPXW7.js.map +7 -0
- package/x/demo/chunk-PSLUOGTZ.js +393 -0
- package/x/demo/chunk-PSLUOGTZ.js.map +7 -0
- package/x/demo/chunk-VLCVEIFU.js +327 -0
- package/x/demo/chunk-VLCVEIFU.js.map +7 -0
- package/x/demo/chunk-ZWCPT5FR.js +2 -0
- package/x/demo/chunk-ZWCPT5FR.js.map +7 -0
- package/x/demo/demo.bundle.js +94 -40
- package/x/demo/demo.bundle.js.map +1 -1
- package/x/demo/demo.bundle.min.js +7340 -90
- package/x/demo/demo.bundle.min.js.map +4 -4
- package/x/demo/demo.css +244 -14
- package/x/demo/routines/export-test.d.ts +2 -0
- package/x/demo/routines/export-test.js +10 -0
- package/x/demo/routines/export-test.js.map +1 -0
- package/x/demo/routines/filmstrip-test.d.ts +1 -1
- package/x/demo/routines/filmstrip-test.js +20 -17
- package/x/demo/routines/filmstrip-test.js.map +1 -1
- package/x/demo/routines/load-video.d.ts +1 -1
- package/x/demo/routines/load-video.js +1 -2
- package/x/demo/routines/load-video.js.map +1 -1
- package/x/demo/routines/playback-test.d.ts +2 -0
- package/x/demo/routines/playback-test.js +51 -0
- package/x/demo/routines/playback-test.js.map +1 -0
- package/x/demo/routines/timeline-setup.d.ts +6 -0
- package/x/demo/routines/timeline-setup.js +32 -0
- package/x/demo/routines/timeline-setup.js.map +1 -0
- package/x/demo/routines/transcode-test.js +15 -5
- package/x/demo/routines/transcode-test.js.map +1 -1
- package/x/demo/routines/transitions-test.js +2 -2
- package/x/demo/routines/transitions-test.js.map +1 -1
- package/x/demo/routines/waveform-test.d.ts +2 -1
- package/x/demo/routines/waveform-test.js +29 -8
- package/x/demo/routines/waveform-test.js.map +1 -1
- package/x/demo/webworkerAll-JENRT6BT.js +2 -0
- package/x/demo/webworkerAll-JENRT6BT.js.map +7 -0
- package/x/driver/driver-worker.d.ts +1 -0
- package/x/driver/driver-worker.js +6 -0
- package/x/driver/driver-worker.js.map +1 -0
- package/x/driver/driver.d.ts +25 -8
- package/x/driver/driver.js +43 -39
- package/x/driver/driver.js.map +1 -1
- package/x/driver/driver.test.js +1 -1
- package/x/driver/driver.test.js.map +1 -1
- package/x/driver/driver.worker.bundle.min.js +117 -3506
- package/x/driver/driver.worker.bundle.min.js.map +4 -4
- package/x/driver/fns/host.d.ts +3 -2
- package/x/driver/fns/schematic.d.ts +25 -4
- package/x/driver/fns/work.d.ts +4 -4
- package/x/driver/fns/work.js +55 -155
- package/x/driver/fns/work.js.map +1 -1
- package/x/driver/parts/compositor.d.ts +39 -0
- package/x/driver/parts/compositor.js +261 -0
- package/x/driver/parts/compositor.js.map +1 -0
- package/x/driver/parts/machina.d.ts +0 -20
- package/x/driver/parts/machina.js +6 -10
- package/x/driver/parts/machina.js.map +1 -1
- package/x/driver/utils/find-pixi-filter.d.ts +5 -0
- package/x/driver/utils/find-pixi-filter.js +13 -0
- package/x/driver/utils/find-pixi-filter.js.map +1 -0
- package/x/features/speech/transcribe/parts/prep-audio.d.ts +1 -1
- package/x/features/speech/transcribe/worker.bundle.min.js +899 -899
- package/x/features/speech/transcribe/worker.bundle.min.js.map +4 -4
- package/x/index.d.ts +1 -0
- package/x/index.html +347 -38
- package/x/index.html.js +103 -24
- package/x/index.html.js.map +1 -1
- package/x/index.js +1 -0
- package/x/index.js.map +1 -1
- package/x/tests.bundle.js +8 -0
- package/x/tests.bundle.js.map +1 -0
- package/x/tests.bundle.min.js +7374 -0
- package/x/tests.bundle.min.js.map +7 -0
- package/x/tests.html +316 -0
- package/x/tests.html.d.ts +2 -0
- package/x/tests.html.js +22 -0
- package/x/tests.html.js.map +1 -0
- package/x/timeline/index.d.ts +7 -1
- package/x/timeline/index.js +7 -1
- package/x/timeline/index.js.map +1 -1
- package/x/timeline/parts/animations.d.ts +105 -0
- package/x/timeline/parts/animations.js +28 -0
- package/x/timeline/parts/animations.js.map +1 -0
- package/x/timeline/parts/filmstrip.d.ts +4 -3
- package/x/timeline/parts/filmstrip.js +29 -10
- package/x/timeline/parts/filmstrip.js.map +1 -1
- package/x/timeline/parts/filters.d.ts +108 -0
- package/x/timeline/parts/filters.js +340 -0
- package/x/timeline/parts/filters.js.map +1 -0
- package/x/timeline/parts/item.d.ts +56 -4
- package/x/timeline/parts/item.js +5 -1
- package/x/timeline/parts/item.js.map +1 -1
- package/x/timeline/parts/media.d.ts +2 -0
- package/x/timeline/parts/media.js +11 -2
- package/x/timeline/parts/media.js.map +1 -1
- package/x/timeline/parts/resource-pool.d.ts +3 -0
- package/x/timeline/parts/resource-pool.js +7 -4
- package/x/timeline/parts/resource-pool.js.map +1 -1
- package/x/timeline/parts/resource.d.ts +3 -0
- package/x/timeline/parts/waveform/parts/collect.d.ts +11 -0
- package/x/timeline/parts/waveform/parts/collect.js +56 -0
- package/x/timeline/parts/waveform/parts/collect.js.map +1 -0
- package/x/timeline/parts/waveform/parts/render.d.ts +5 -0
- package/x/timeline/parts/waveform/parts/render.js +29 -0
- package/x/timeline/parts/waveform/parts/render.js.map +1 -0
- package/x/timeline/parts/waveform/parts/types.d.ts +21 -0
- package/x/timeline/parts/waveform/parts/types.js.map +1 -0
- package/x/timeline/parts/waveform/waveform.d.ts +19 -0
- package/x/timeline/parts/waveform/waveform.js +133 -0
- package/x/timeline/parts/waveform/waveform.js.map +1 -0
- package/x/timeline/renderers/export/parts/audio-gain.d.ts +1 -0
- package/x/timeline/renderers/export/parts/audio-gain.js +13 -0
- package/x/timeline/renderers/export/parts/audio-gain.js.map +1 -0
- package/x/timeline/renderers/export/parts/audio-mix.d.ts +21 -0
- package/x/timeline/renderers/export/parts/audio-mix.js +89 -0
- package/x/timeline/renderers/export/parts/audio-mix.js.map +1 -0
- package/x/timeline/renderers/export/parts/cursor.d.ts +18 -0
- package/x/timeline/renderers/export/parts/cursor.js +99 -0
- package/x/timeline/renderers/export/parts/cursor.js.map +1 -0
- package/x/timeline/renderers/export/parts/produce-audio.d.ts +6 -0
- package/x/timeline/renderers/export/parts/produce-audio.js +41 -0
- package/x/timeline/renderers/export/parts/produce-audio.js.map +1 -0
- package/x/timeline/renderers/export/parts/produce-video.d.ts +10 -0
- package/x/timeline/renderers/export/parts/produce-video.js +26 -0
- package/x/timeline/renderers/export/parts/produce-video.js.map +1 -0
- package/x/timeline/renderers/export/parts/resamplers.d.ts +12 -0
- package/x/timeline/renderers/export/parts/resamplers.js +29 -0
- package/x/timeline/renderers/export/parts/resamplers.js.map +1 -0
- package/x/timeline/renderers/export/produce.d.ts +13 -0
- package/x/timeline/renderers/export/produce.js +15 -0
- package/x/timeline/renderers/export/produce.js.map +1 -0
- package/x/timeline/renderers/parts/handy.d.ts +36 -0
- package/x/timeline/renderers/parts/handy.js +221 -0
- package/x/timeline/renderers/parts/handy.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/find.d.ts +6 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/find.js +15 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/find.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/init.d.ts +5 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/init.js +40 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/init.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/sink.d.ts +8 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/sink.js +24 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/sink.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/types.d.ts +14 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/types.js +2 -0
- package/x/timeline/renderers/parts/samplers/audio/parts/types.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/audio/sampler.d.ts +11 -0
- package/x/timeline/renderers/parts/samplers/audio/sampler.js +22 -0
- package/x/timeline/renderers/parts/samplers/audio/sampler.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/defaults.d.ts +5 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/defaults.js +10 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/defaults.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sample.d.ts +6 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sample.js +48 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sample.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sequence.d.ts +6 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sequence.js +75 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sequence.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sink.d.ts +8 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sink.js +24 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/sink.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/transition.d.ts +3 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/transition.js +18 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/transition.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/types.d.ts +8 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/types.js +2 -0
- package/x/timeline/renderers/parts/samplers/visual/parts/types.js.map +1 -0
- package/x/timeline/renderers/parts/samplers/visual/sampler.d.ts +7 -0
- package/x/timeline/renderers/parts/samplers/visual/sampler.js +17 -0
- package/x/timeline/renderers/parts/samplers/visual/sampler.js.map +1 -0
- package/x/timeline/renderers/parts/schedulers.d.ts +17 -0
- package/x/timeline/renderers/parts/schedulers.js +64 -0
- package/x/timeline/renderers/parts/schedulers.js.map +1 -0
- package/x/timeline/renderers/player/parts/playback.d.ts +36 -0
- package/x/timeline/renderers/player/parts/playback.js +113 -0
- package/x/timeline/renderers/player/parts/playback.js.map +1 -0
- package/x/timeline/renderers/player/player.d.ts +25 -0
- package/x/timeline/renderers/player/player.js +56 -0
- package/x/timeline/renderers/player/player.js.map +1 -0
- package/x/timeline/renderers/renderers.test.d.ts +33 -0
- package/x/timeline/renderers/renderers.test.js +321 -0
- package/x/timeline/renderers/renderers.test.js.map +1 -0
- package/x/timeline/sugar/helpers.d.ts +56 -0
- package/x/timeline/sugar/helpers.js +104 -0
- package/x/timeline/sugar/helpers.js.map +1 -0
- package/x/timeline/sugar/o.d.ts +48 -14
- package/x/timeline/sugar/o.js +213 -54
- package/x/timeline/sugar/o.js.map +1 -1
- package/x/timeline/sugar/omni.d.ts +11 -6
- package/x/timeline/sugar/omni.js +28 -8
- package/x/timeline/sugar/omni.js.map +1 -1
- package/x/timeline/sugar/omni.test.d.ts +27 -0
- package/x/timeline/sugar/omni.test.js +128 -0
- package/x/timeline/sugar/omni.test.js.map +1 -0
- package/x/timeline/types.d.ts +12 -2
- package/x/timeline/utils/anim.d.ts +5 -0
- package/x/timeline/utils/anim.js +44 -0
- package/x/timeline/utils/anim.js.map +1 -0
- package/x/timeline/utils/checksum.d.ts +3 -2
- package/x/timeline/utils/checksum.js.map +1 -1
- package/x/timeline/utils/datafile.d.ts +5 -3
- package/x/timeline/utils/datafile.js +18 -5
- package/x/timeline/utils/datafile.js.map +1 -1
- package/x/timeline/utils/dummy-data.d.ts +1 -2
- package/x/timeline/utils/dummy-data.js +4 -2
- package/x/timeline/utils/dummy-data.js.map +1 -1
- package/x/timeline/utils/matrix.d.ts +9 -0
- package/x/timeline/utils/matrix.js +10 -0
- package/x/timeline/utils/matrix.js.map +1 -1
- package/x/timeline/utils/terps.d.ts +11 -0
- package/x/timeline/utils/terps.js +57 -0
- package/x/timeline/utils/terps.js.map +1 -0
- package/x/units/fps.d.ts +6 -0
- package/x/units/fps.js +2 -0
- package/x/units/fps.js.map +1 -0
- package/x/units/ms.d.ts +6 -0
- package/x/units/ms.js +2 -0
- package/x/units/ms.js.map +1 -0
- package/x/units/seconds.d.ts +6 -0
- package/x/units/seconds.js +2 -0
- package/x/units/seconds.js.map +1 -0
- package/x/webworkerAll-RLCTMSDD.js +2 -0
- package/x/webworkerAll-RLCTMSDD.js.map +7 -0
- package/s/tests.test.ts +0 -8
- package/s/timeline/parts/compositor/export.ts +0 -77
- package/s/timeline/parts/compositor/parts/html-tree.ts +0 -37
- package/s/timeline/parts/compositor/parts/schedulers.ts +0 -85
- package/s/timeline/parts/compositor/parts/tree-builder.ts +0 -184
- package/s/timeline/parts/compositor/parts/webcodecs-tree.ts +0 -30
- package/s/timeline/parts/compositor/playback.ts +0 -81
- package/s/timeline/parts/compositor/samplers/html.ts +0 -115
- package/s/timeline/parts/compositor/samplers/webcodecs.ts +0 -60
- package/s/timeline/parts/waveform.ts +0 -62
- package/s/timeline/sugar/builders.ts +0 -102
- package/s/timeline/sugar/omni-test.ts +0 -38
- package/s/timeline/timeline.ts +0 -22
- package/s/timeline/utils/audio-stream.ts +0 -15
- package/s/timeline/utils/video-cursor.ts +0 -40
- package/s/tools/common/loader.ts +0 -26
- package/s/tools/common/transformer-pipeline.ts +0 -26
- package/s/tools/speech-recognition/common/model.ts +0 -26
- package/s/tools/speech-recognition/whisper/fns/host.ts +0 -25
- package/s/tools/speech-recognition/whisper/fns/schematic.ts +0 -23
- package/s/tools/speech-recognition/whisper/fns/work.ts +0 -91
- package/s/tools/speech-recognition/whisper/parts/types.ts +0 -38
- package/s/tools/speech-recognition/whisper/parts/worker.bundle.ts +0 -7
- package/s/tools/speech-recognition/whisper/tool.ts +0 -70
- package/x/tests.test.js +0 -6
- package/x/tests.test.js.map +0 -1
- package/x/timeline/parts/compositor/export.d.ts +0 -9
- package/x/timeline/parts/compositor/export.js +0 -64
- package/x/timeline/parts/compositor/export.js.map +0 -1
- package/x/timeline/parts/compositor/parts/html-tree.d.ts +0 -3
- package/x/timeline/parts/compositor/parts/html-tree.js +0 -40
- package/x/timeline/parts/compositor/parts/html-tree.js.map +0 -1
- package/x/timeline/parts/compositor/parts/schedulers.d.ts +0 -15
- package/x/timeline/parts/compositor/parts/schedulers.js +0 -64
- package/x/timeline/parts/compositor/parts/schedulers.js.map +0 -1
- package/x/timeline/parts/compositor/parts/tree-builder.d.ts +0 -37
- package/x/timeline/parts/compositor/parts/tree-builder.js +0 -147
- package/x/timeline/parts/compositor/parts/tree-builder.js.map +0 -1
- package/x/timeline/parts/compositor/parts/webcodecs-tree.d.ts +0 -3
- package/x/timeline/parts/compositor/parts/webcodecs-tree.js +0 -28
- package/x/timeline/parts/compositor/parts/webcodecs-tree.js.map +0 -1
- package/x/timeline/parts/compositor/playback.d.ts +0 -19
- package/x/timeline/parts/compositor/playback.js +0 -71
- package/x/timeline/parts/compositor/playback.js.map +0 -1
- package/x/timeline/parts/compositor/samplers/html.d.ts +0 -3
- package/x/timeline/parts/compositor/samplers/html.js +0 -106
- package/x/timeline/parts/compositor/samplers/html.js.map +0 -1
- package/x/timeline/parts/compositor/samplers/webcodecs.d.ts +0 -2
- package/x/timeline/parts/compositor/samplers/webcodecs.js +0 -55
- package/x/timeline/parts/compositor/samplers/webcodecs.js.map +0 -1
- package/x/timeline/parts/waveform.d.ts +0 -8
- package/x/timeline/parts/waveform.js +0 -51
- package/x/timeline/parts/waveform.js.map +0 -1
- package/x/timeline/sugar/builders.d.ts +0 -96
- package/x/timeline/sugar/builders.js +0 -108
- package/x/timeline/sugar/builders.js.map +0 -1
- package/x/timeline/sugar/omni-test.d.ts +0 -1
- package/x/timeline/sugar/omni-test.js +0 -22
- package/x/timeline/sugar/omni-test.js.map +0 -1
- package/x/timeline/timeline.d.ts +0 -9
- package/x/timeline/timeline.js +0 -22
- package/x/timeline/timeline.js.map +0 -1
- package/x/timeline/utils/audio-stream.d.ts +0 -6
- package/x/timeline/utils/audio-stream.js +0 -17
- package/x/timeline/utils/audio-stream.js.map +0 -1
- package/x/timeline/utils/video-cursor.d.ts +0 -10
- package/x/timeline/utils/video-cursor.js +0 -36
- package/x/timeline/utils/video-cursor.js.map +0 -1
- package/x/tools/common/loader.d.ts +0 -19
- package/x/tools/common/loader.js +0 -18
- package/x/tools/common/loader.js.map +0 -1
- package/x/tools/common/transformer-pipeline.d.ts +0 -8
- package/x/tools/common/transformer-pipeline.js +0 -24
- package/x/tools/common/transformer-pipeline.js.map +0 -1
- package/x/tools/speech-recognition/common/model.d.ts +0 -14
- package/x/tools/speech-recognition/common/model.js +0 -16
- package/x/tools/speech-recognition/common/model.js.map +0 -1
- package/x/tools/speech-recognition/whisper/fns/host.d.ts +0 -13
- package/x/tools/speech-recognition/whisper/fns/host.js +0 -19
- package/x/tools/speech-recognition/whisper/fns/host.js.map +0 -1
- package/x/tools/speech-recognition/whisper/fns/schematic.d.ts +0 -19
- package/x/tools/speech-recognition/whisper/fns/schematic.js +0 -2
- package/x/tools/speech-recognition/whisper/fns/schematic.js.map +0 -1
- package/x/tools/speech-recognition/whisper/fns/work.d.ts +0 -12
- package/x/tools/speech-recognition/whisper/fns/work.js +0 -74
- package/x/tools/speech-recognition/whisper/fns/work.js.map +0 -1
- package/x/tools/speech-recognition/whisper/parts/types.d.ts +0 -31
- package/x/tools/speech-recognition/whisper/parts/types.js.map +0 -1
- package/x/tools/speech-recognition/whisper/parts/worker.bundle.d.ts +0 -1
- package/x/tools/speech-recognition/whisper/parts/worker.bundle.js +0 -4
- package/x/tools/speech-recognition/whisper/parts/worker.bundle.js.map +0 -1
- package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js +0 -8
- package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js.map +0 -7
- package/x/tools/speech-recognition/whisper/tool.d.ts +0 -12
- package/x/tools/speech-recognition/whisper/tool.js +0 -63
- package/x/tools/speech-recognition/whisper/tool.js.map +0 -1
- /package/x/{tests.test.d.ts → tests.bundle.d.ts} +0 -0
- /package/x/{tools/speech-recognition/whisper → timeline/parts/waveform}/parts/types.js +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { resolveTerp } from "./terps.js";
|
|
2
|
+
import { Kind } from "../parts/item.js";
|
|
3
|
+
const resolveScalar = (time, keys, terp, fallback = 0) => {
|
|
4
|
+
if (keys.length === 0)
|
|
5
|
+
return fallback;
|
|
6
|
+
if (keys.length === 1)
|
|
7
|
+
return keys[0][1];
|
|
8
|
+
const sorted = [...keys].sort((a, b) => a[0] - b[0]);
|
|
9
|
+
if (time <= sorted[0][0])
|
|
10
|
+
return sorted[0][1];
|
|
11
|
+
const last = sorted[sorted.length - 1];
|
|
12
|
+
if (time >= last[0])
|
|
13
|
+
return last[1];
|
|
14
|
+
let index = 0;
|
|
15
|
+
for (let i = 0; i < sorted.length - 1; i++) {
|
|
16
|
+
const a = sorted[i];
|
|
17
|
+
const b = sorted[i + 1];
|
|
18
|
+
if (time >= a[0] && time <= b[0]) {
|
|
19
|
+
index = i;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const [t2] = sorted[index];
|
|
24
|
+
const [t3] = sorted[index + 1];
|
|
25
|
+
const span = t3 - t2;
|
|
26
|
+
const x = span === 0 ? 0 : (time - t2) / span;
|
|
27
|
+
return resolveTerp(terp, x, sorted, index);
|
|
28
|
+
};
|
|
29
|
+
export const resolveTransformAnimation = (time, anim) => ([
|
|
30
|
+
[
|
|
31
|
+
resolveScalar(time, anim.track.position.x, anim.terp),
|
|
32
|
+
resolveScalar(time, anim.track.position.y, anim.terp),
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
resolveScalar(time, anim.track.scale.x, anim.terp, 1),
|
|
36
|
+
resolveScalar(time, anim.track.scale.y, anim.terp, 1),
|
|
37
|
+
],
|
|
38
|
+
resolveScalar(time, anim.track.rotation, anim.terp),
|
|
39
|
+
]);
|
|
40
|
+
export const resolveScalarAnimation = (time, anim) => resolveScalar(time, anim.track, anim.terp);
|
|
41
|
+
export const resolveSpatialTransform = (spatial, time) => spatial.kind === Kind.AnimatedSpatial
|
|
42
|
+
? resolveTransformAnimation(time, spatial.anim)
|
|
43
|
+
: spatial.transform;
|
|
44
|
+
//# sourceMappingURL=anim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anim.js","sourceRoot":"","sources":["../../../s/timeline/utils/anim.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Hash } from "../parts/basics.js";
|
|
1
2
|
export declare class Checksum {
|
|
2
3
|
data: Uint8Array;
|
|
3
4
|
bytes: Uint8Array;
|
|
4
|
-
hash:
|
|
5
|
+
hash: Hash;
|
|
5
6
|
nickname: string;
|
|
6
|
-
constructor(data: Uint8Array, bytes: Uint8Array, hash:
|
|
7
|
+
constructor(data: Uint8Array, bytes: Uint8Array, hash: Hash, nickname: string);
|
|
7
8
|
static make(data: Uint8Array): Promise<Checksum>;
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../../s/timeline/utils/checksum.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../../s/timeline/utils/checksum.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AAIzC,MAAM,OAAO,QAAQ;IAEZ;IACA;IACA;IACA;IAJR,YACQ,IAAgB,EAChB,KAAiB,EACjB,IAAU,EACV,QAAgB;QAHhB,SAAI,GAAJ,IAAI,CAAY;QAChB,UAAK,GAAL,KAAK,CAAY;QACjB,SAAI,GAAJ,IAAI,CAAM;QACV,aAAQ,GAAR,QAAQ,CAAQ;IACrB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;QAC1E,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAClD,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC;CACD"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Checksum } from "./checksum.js";
|
|
2
2
|
export declare class Datafile {
|
|
3
|
+
url: string;
|
|
3
4
|
bytes: Uint8Array;
|
|
5
|
+
blob: Blob;
|
|
4
6
|
filename: string;
|
|
5
7
|
checksum: Checksum;
|
|
6
|
-
constructor(bytes: Uint8Array, filename: string, checksum: Checksum);
|
|
7
|
-
static make(
|
|
8
|
-
static load(
|
|
8
|
+
constructor(url: string, bytes: Uint8Array, blob: Blob, filename: string, checksum: Checksum);
|
|
9
|
+
static make(file: Blob, name?: string): Promise<Datafile>;
|
|
10
|
+
static load(path: string): Promise<void>;
|
|
9
11
|
}
|
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
import { Checksum } from "./checksum.js";
|
|
2
2
|
export class Datafile {
|
|
3
|
+
url;
|
|
3
4
|
bytes;
|
|
5
|
+
blob;
|
|
4
6
|
filename;
|
|
5
7
|
checksum;
|
|
6
|
-
constructor(bytes, filename, checksum) {
|
|
8
|
+
constructor(url, bytes, blob, filename, checksum) {
|
|
9
|
+
this.url = url;
|
|
7
10
|
this.bytes = bytes;
|
|
11
|
+
this.blob = blob;
|
|
8
12
|
this.filename = filename;
|
|
9
13
|
this.checksum = checksum;
|
|
10
14
|
}
|
|
11
|
-
static async make(
|
|
15
|
+
static async make(file, name) {
|
|
16
|
+
const buffer = await file.arrayBuffer();
|
|
17
|
+
const bytes = new Uint8Array(buffer);
|
|
12
18
|
const checksum = await Checksum.make(bytes);
|
|
13
19
|
const filename = name ?? checksum.nickname;
|
|
14
|
-
|
|
20
|
+
const url = URL.createObjectURL(file);
|
|
21
|
+
return new this(url, bytes, file, filename, checksum);
|
|
15
22
|
}
|
|
16
|
-
static async load(
|
|
17
|
-
|
|
23
|
+
static async load(path) {
|
|
24
|
+
// const file = await fetch(path)
|
|
25
|
+
// const buffer = await file.arrayBuffer()
|
|
26
|
+
// const bytes = new Uint8Array(buffer)
|
|
27
|
+
// const filename = file?.headers.get('Content-Disposition')?.split('filename=')[1] ?? "file"
|
|
28
|
+
// console.log(filename)
|
|
29
|
+
// const checksum = await Checksum.make(bytes)
|
|
30
|
+
// return new this(path, bytes, filename, checksum)
|
|
18
31
|
}
|
|
19
32
|
}
|
|
20
33
|
//# sourceMappingURL=datafile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datafile.js","sourceRoot":"","sources":["../../../s/timeline/utils/datafile.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,MAAM,OAAO,QAAQ;IAEZ;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"datafile.js","sourceRoot":"","sources":["../../../s/timeline/utils/datafile.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,MAAM,OAAO,QAAQ;IAEZ;IACA;IACA;IACA;IACA;IALR,YACQ,GAAW,EACX,KAAiB,EACjB,IAAU,EACV,QAAgB,EAChB,QAAkB;QAJlB,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAY;QACjB,SAAI,GAAJ,IAAI,CAAM;QACV,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAU;IACvB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAU,EAAE,IAAa;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAA;QAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY;QAC7B,iCAAiC;QACjC,0CAA0C;QAC1C,uCAAuC;QACvC,8FAA8F;QAC9F,wBAAwB;QACxB,8CAA8C;QAC9C,mDAAmD;IACpD,CAAC;CACD"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const dummyData: () => Promise<Datafile>;
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export const dummyData = () => Datafile.make(
|
|
1
|
+
export {};
|
|
2
|
+
// export const dummyData = () => Datafile.make(
|
|
3
|
+
// new Uint8Array([0xDE, 0xAD, 0xBE, 0xEF])
|
|
4
|
+
// )
|
|
3
5
|
//# sourceMappingURL=dummy-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy-data.js","sourceRoot":"","sources":["../../../s/timeline/utils/dummy-data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dummy-data.js","sourceRoot":"","sources":["../../../s/timeline/utils/dummy-data.ts"],"names":[],"mappings":";AAGA,gDAAgD;AAChD,4CAA4C;AAC5C,IAAI"}
|
|
@@ -4,5 +4,14 @@ export declare const transformToMat6: (t: Transform) => Mat6;
|
|
|
4
4
|
export declare const mat6ToMatrix: ([a, b, c, d, tx, ty]: Mat6) => Matrix;
|
|
5
5
|
export declare const transformToMatrix: (t: Transform) => Matrix;
|
|
6
6
|
export declare const mul6: (local: Mat6, parent: Mat6) => Mat6;
|
|
7
|
+
export declare const mat6ToTransform: (mat: Mat6Obj) => Transform;
|
|
8
|
+
export interface Mat6Obj {
|
|
9
|
+
a: number;
|
|
10
|
+
b: number;
|
|
11
|
+
c: number;
|
|
12
|
+
d: number;
|
|
13
|
+
tx: number;
|
|
14
|
+
ty: number;
|
|
15
|
+
}
|
|
7
16
|
export declare const I6: Mat6;
|
|
8
17
|
export type Mat6 = [a: number, b: number, c: number, d: number, tx: number, ty: number];
|
|
@@ -22,5 +22,15 @@ export const mul6 = (local, parent) => {
|
|
|
22
22
|
b1 * tx2 + d1 * ty2 + ty1
|
|
23
23
|
];
|
|
24
24
|
};
|
|
25
|
+
export const mat6ToTransform = (mat) => {
|
|
26
|
+
const scaleX = Math.hypot(mat.a, mat.b);
|
|
27
|
+
const scaleY = Math.hypot(mat.c, mat.d);
|
|
28
|
+
const rotation = Math.atan2(mat.b, mat.a) * (180 / Math.PI);
|
|
29
|
+
return [
|
|
30
|
+
[mat.tx, mat.ty],
|
|
31
|
+
[scaleX, scaleY],
|
|
32
|
+
rotation,
|
|
33
|
+
];
|
|
34
|
+
};
|
|
25
35
|
export const I6 = [1, 0, 0, 1, 0, 0];
|
|
26
36
|
//# sourceMappingURL=matrix.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../s/timeline/utils/matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAA;AAG9B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAY,EAAQ,EAAE;IACrD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;IAClB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;IACpB,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAA;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvB,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAO,EAAU,EAAE,CAClE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAE/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAY,EAAE,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAW,EAAE,MAAY,EAAQ,EAAE;IACvD,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;IACxC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAA;IACzC,OAAO;QACN,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG;QACzB,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG;KACzB,CAAA;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,EAAE,GAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../s/timeline/utils/matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAA;AAG9B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAY,EAAQ,EAAE;IACrD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;IAClB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;IACpB,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAA;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvB,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAO,EAAU,EAAE,CAClE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAE/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAY,EAAE,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAW,EAAE,MAAY,EAAQ,EAAE;IACvD,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAA;IACxC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAA;IACzC,OAAO;QACN,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACjB,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG;QACzB,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG;KACzB,CAAA;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAY,EAAa,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IAE3D,OAAO;QACN,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;QAChB,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,QAAQ;KACR,CAAA;AACF,CAAC,CAAA;AAWD,MAAM,CAAC,MAAM,EAAE,GAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Interpolation, Keyframes } from "../types.js";
|
|
2
|
+
declare class TerpKeys {
|
|
3
|
+
private keys;
|
|
4
|
+
private index;
|
|
5
|
+
constructor(keys: Keyframes, index: number);
|
|
6
|
+
near(offset: number): number;
|
|
7
|
+
}
|
|
8
|
+
type TerpFn = (x: number, keys: TerpKeys) => number;
|
|
9
|
+
export declare const terps: Record<Interpolation, TerpFn>;
|
|
10
|
+
export declare const resolveTerp: (terp: Interpolation, x: number, keys: Keyframes, index: number) => number;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
class TerpKeys {
|
|
2
|
+
keys;
|
|
3
|
+
index;
|
|
4
|
+
constructor(keys, index) {
|
|
5
|
+
this.keys = keys;
|
|
6
|
+
this.index = index;
|
|
7
|
+
}
|
|
8
|
+
near(offset) {
|
|
9
|
+
const next = this.keys[Math.max(0, Math.min(this.keys.length - 1, this.index + offset))];
|
|
10
|
+
return next[1];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const asTerp = (fn) => fn;
|
|
14
|
+
const fromEasingFn = (easing) => asTerp((x, keys) => easing(x, keys.near(0), keys.near(1)));
|
|
15
|
+
const lerp = (x, a, b) => a + (b - a) * x;
|
|
16
|
+
export const terps = {
|
|
17
|
+
linear: fromEasingFn(lerp),
|
|
18
|
+
ease: fromEasingFn((x, a, b) => {
|
|
19
|
+
const eased = x < 0.5
|
|
20
|
+
? 4 * x * x * x
|
|
21
|
+
: 1 - Math.pow(-2 * x + 2, 3) / 2;
|
|
22
|
+
return lerp(eased, a, b);
|
|
23
|
+
}),
|
|
24
|
+
easeIn: fromEasingFn((x, a, b) => lerp(x * x * x, a, b)),
|
|
25
|
+
easeOut: fromEasingFn((x, a, b) => lerp(1 - Math.pow(1 - x, 3), a, b)),
|
|
26
|
+
bounce: fromEasingFn((x, a, b) => {
|
|
27
|
+
const n1 = 7.5625;
|
|
28
|
+
const d1 = 2.75;
|
|
29
|
+
const eased = x < 1 / d1
|
|
30
|
+
? n1 * x * x
|
|
31
|
+
: x < 2 / d1
|
|
32
|
+
? n1 * (x - 1.5 / d1) ** 2 + 0.75
|
|
33
|
+
: x < 2.5 / d1
|
|
34
|
+
? n1 * (x - 2.25 / d1) ** 2 + 0.9375
|
|
35
|
+
: n1 * (x - 2.625 / d1) ** 2 + 0.984375;
|
|
36
|
+
return lerp(eased, a, b);
|
|
37
|
+
}),
|
|
38
|
+
catmullRom: asTerp((x, keys) => {
|
|
39
|
+
const p1 = keys.near(-1);
|
|
40
|
+
const p2 = keys.near(0);
|
|
41
|
+
const p3 = keys.near(1);
|
|
42
|
+
const p4 = keys.near(2);
|
|
43
|
+
const x2 = x * x;
|
|
44
|
+
const x3 = x2 * x;
|
|
45
|
+
return 0.5 * ((2 * p2) +
|
|
46
|
+
(-p1 + p3) * x +
|
|
47
|
+
(2 * p1 - 5 * p2 + 4 * p3 - p4) * x2 +
|
|
48
|
+
(-p1 + 3 * p2 - 3 * p3 + p4) * x3);
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
export const resolveTerp = (terp, x, keys, index) => {
|
|
52
|
+
const fn = terps[terp];
|
|
53
|
+
if (!fn)
|
|
54
|
+
throw new Error(`unknown terp "${terp}"`);
|
|
55
|
+
return fn(x, new TerpKeys(keys, index));
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=terps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terps.js","sourceRoot":"","sources":["../../../s/timeline/utils/terps.ts"],"names":[],"mappings":"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"}
|
package/x/units/fps.d.ts
ADDED
package/x/units/fps.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fps.js","sourceRoot":"","sources":["../../s/units/fps.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAa,EAAO,EAAE,CACzC,KAAY,CAAA"}
|
package/x/units/ms.d.ts
ADDED
package/x/units/ms.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ms.js","sourceRoot":"","sources":["../../s/units/ms.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAM,EAAE,CACvC,KAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seconds.js","sourceRoot":"","sources":["../../s/units/seconds.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CACjD,KAAgB,CAAA"}
|
package/s/tests.test.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import {TimelineFile} from "../basics.js"
|
|
2
|
-
import {context} from "../../../context.js"
|
|
3
|
-
import {fixedStep} from "./parts/schedulers.js"
|
|
4
|
-
import {makeWebCodecsSampler} from "./samplers/webcodecs.js"
|
|
5
|
-
import {DecoderSource} from "../../../driver/fns/schematic.js"
|
|
6
|
-
import {buildWebCodecsNodeTree} from "./parts/webcodecs-tree.js"
|
|
7
|
-
|
|
8
|
-
export class Export {
|
|
9
|
-
#sampler
|
|
10
|
-
constructor(
|
|
11
|
-
private framerate = 30,
|
|
12
|
-
private resolveMedia: (hash: string) => DecoderSource = _hash => "/assets/temp/gl.mp4"
|
|
13
|
-
) {
|
|
14
|
-
this.#sampler = makeWebCodecsSampler(this.resolveMedia)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async #build(timeline: TimelineFile) {
|
|
18
|
-
const rootItem = new Map(timeline.items.map(i => [i.id, i])).get(timeline.rootId)!
|
|
19
|
-
const items = new Map(timeline.items.map(i => [i.id, i]))
|
|
20
|
-
return await buildWebCodecsNodeTree(rootItem, items, this.#sampler)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async render(timeline: TimelineFile) {
|
|
24
|
-
const root = await this.#build(timeline)
|
|
25
|
-
|
|
26
|
-
const driver = await context.driver
|
|
27
|
-
const videoStream = new TransformStream<VideoFrame, VideoFrame>()
|
|
28
|
-
const audioStream = new TransformStream<AudioData, AudioData>()
|
|
29
|
-
|
|
30
|
-
const encodePromise = driver.encode({
|
|
31
|
-
video: videoStream.readable,
|
|
32
|
-
audio: audioStream.readable,
|
|
33
|
-
config: {
|
|
34
|
-
audio: {codec: "opus", bitrate: 128000},
|
|
35
|
-
video: {codec: "vp9", bitrate: 1000000},
|
|
36
|
-
},
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
const videoWriter = videoStream.writable.getWriter()
|
|
40
|
-
const audioWriter = audioStream.writable.getWriter()
|
|
41
|
-
|
|
42
|
-
const audioPromise = (async () => {
|
|
43
|
-
if (root.audio) {
|
|
44
|
-
for await (const chunk of root.audio.getStream()) {
|
|
45
|
-
await audioWriter.write(chunk)
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
await audioWriter.close()
|
|
49
|
-
})()
|
|
50
|
-
|
|
51
|
-
const videoPromise = (async () => {
|
|
52
|
-
let i = 0
|
|
53
|
-
const dt = 1 / this.framerate
|
|
54
|
-
|
|
55
|
-
await fixedStep(
|
|
56
|
-
{fps: this.framerate, duration: root.duration ?? 0},
|
|
57
|
-
async t => {
|
|
58
|
-
const layers = await root.visuals?.sampleAt(t) ?? []
|
|
59
|
-
const composed = await driver.composite(layers)
|
|
60
|
-
const vf = new VideoFrame(composed, {
|
|
61
|
-
timestamp: Math.round(i * dt * 1_000_000),
|
|
62
|
-
duration: Math.round(dt * 1_000_000),
|
|
63
|
-
})
|
|
64
|
-
await videoWriter.write(vf)
|
|
65
|
-
composed.close()
|
|
66
|
-
i++
|
|
67
|
-
}
|
|
68
|
-
)
|
|
69
|
-
await videoWriter.close()
|
|
70
|
-
})()
|
|
71
|
-
|
|
72
|
-
await audioPromise
|
|
73
|
-
await videoPromise
|
|
74
|
-
await encodePromise
|
|
75
|
-
// this.#sampler.dispose()
|
|
76
|
-
}
|
|
77
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import {Item} from "../../item.js"
|
|
2
|
-
import {AudioPlaybackComponent, HTMLSampler, Node, TreeBuilder} from "./tree-builder.js"
|
|
3
|
-
|
|
4
|
-
class HTMLNodeBuilder extends TreeBuilder<AudioPlaybackComponent> {
|
|
5
|
-
constructor(protected items: Map<number, Item.Any>, protected sampler: HTMLSampler) {
|
|
6
|
-
super(items, sampler)
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
composeAudio_Stack(children: Node<AudioPlaybackComponent>[]) {
|
|
10
|
-
return {
|
|
11
|
-
onTimeUpdate: (time: number) => {
|
|
12
|
-
for (const child of children) {
|
|
13
|
-
if (child.audio) child.audio.onTimeUpdate(time)
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
composeAudio_Sequence(children: Node<AudioPlaybackComponent>[]) {
|
|
19
|
-
return {
|
|
20
|
-
onTimeUpdate: (time: number) => {
|
|
21
|
-
let localTime = time
|
|
22
|
-
for (const child of children) {
|
|
23
|
-
if (localTime < child.duration) {
|
|
24
|
-
if (child.audio) child.audio.onTimeUpdate(localTime)
|
|
25
|
-
break
|
|
26
|
-
}
|
|
27
|
-
localTime -= child.duration
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function buildHTMLNodeTree(root: Item.Any, items: Map<number, Item.Any>, sampler: HTMLSampler) {
|
|
35
|
-
const builder = new HTMLNodeBuilder(items, sampler)
|
|
36
|
-
return builder.build(root)
|
|
37
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
export type RealtimeController = {
|
|
2
|
-
play(): void
|
|
3
|
-
pause(): void
|
|
4
|
-
seek(t: number): void
|
|
5
|
-
dispose(): void
|
|
6
|
-
setFPS(v: number): void
|
|
7
|
-
isPlaying(): boolean
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const realtime = (onTick: (t: number) => void): RealtimeController => {
|
|
11
|
-
let playing = false
|
|
12
|
-
let rafId: number | null = null
|
|
13
|
-
let fps = 60
|
|
14
|
-
|
|
15
|
-
let frameDuration = 1000 / fps
|
|
16
|
-
let currentTimeS = 0
|
|
17
|
-
let lastTime = 0
|
|
18
|
-
let accumulator = 0
|
|
19
|
-
|
|
20
|
-
const tick = (now: number) => {
|
|
21
|
-
if (!playing) return
|
|
22
|
-
|
|
23
|
-
const deltaTime = now - lastTime
|
|
24
|
-
lastTime = now
|
|
25
|
-
|
|
26
|
-
accumulator += deltaTime
|
|
27
|
-
|
|
28
|
-
while (accumulator >= frameDuration) {
|
|
29
|
-
onTick(currentTimeS)
|
|
30
|
-
currentTimeS += frameDuration / 1000
|
|
31
|
-
accumulator -= frameDuration
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
rafId = requestAnimationFrame(tick)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
play() {
|
|
39
|
-
if (playing) return
|
|
40
|
-
playing = true
|
|
41
|
-
lastTime = performance.now()
|
|
42
|
-
rafId = requestAnimationFrame(tick)
|
|
43
|
-
},
|
|
44
|
-
pause() {
|
|
45
|
-
if (!playing) return
|
|
46
|
-
playing = false
|
|
47
|
-
if (rafId !== null) cancelAnimationFrame(rafId)
|
|
48
|
-
rafId = null
|
|
49
|
-
},
|
|
50
|
-
seek(t) {
|
|
51
|
-
currentTimeS = Math.max(0, t)
|
|
52
|
-
accumulator = 0
|
|
53
|
-
},
|
|
54
|
-
dispose() {
|
|
55
|
-
this.pause()
|
|
56
|
-
},
|
|
57
|
-
isPlaying() {
|
|
58
|
-
return playing
|
|
59
|
-
},
|
|
60
|
-
setFPS(v) {
|
|
61
|
-
fps = v
|
|
62
|
-
frameDuration = 1000 / fps
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export type FixedStepOptions = {
|
|
68
|
-
fps: number
|
|
69
|
-
duration: number
|
|
70
|
-
abort?: AbortSignal
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export const fixedStep = async (
|
|
74
|
-
opts: FixedStepOptions,
|
|
75
|
-
onFrame: (t: number, index: number) => Promise<void> | void
|
|
76
|
-
) => {
|
|
77
|
-
const dt = 1 / opts.fps
|
|
78
|
-
const total = Math.ceil(opts.duration * opts.fps)
|
|
79
|
-
|
|
80
|
-
for (let i = 0; i < total; i++) {
|
|
81
|
-
if (opts.abort?.aborted) break
|
|
82
|
-
const t = i * dt
|
|
83
|
-
await onFrame(t, i)
|
|
84
|
-
}
|
|
85
|
-
}
|