@hypit/hypit 0.1.3 → 0.1.5
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 +5 -3
- package/dist/public/caption.d.ts +206 -183
- package/dist/public/composition.d.ts +25 -3
- package/dist/public/endpoint-kit.d.ts +24 -2
- package/dist/public/generation.d.ts +5 -1
- package/dist/public/hyperframes.d.ts +19 -1
- package/dist/public/narrative.d.ts +17 -3
- package/dist/public/performance.d.ts +1590 -0
- package/dist/public/program-space.d.ts +179 -32
- package/dist/public/runtime-kit.d.ts +21 -8
- package/dist/public/sound.d.ts +822 -0
- package/dist/public/speech.d.ts +41 -0
- package/dist/public/studio-adapter.d.ts +107 -16
- package/dist/public/temporal-markup.d.ts +9 -44
- package/dist/public/temporal.d.ts +37 -28
- package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
- package/examples/README.md +18 -10
- package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
- package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
- package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
- package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
- package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
- package/examples/provider-package/README.md +78 -0
- package/examples/provider-package/hypit.runtime.json +12 -0
- package/examples/provider-package/packages/provider-images/package.json +11 -0
- package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
- package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
- package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
- package/examples/semantic-composition/README.md +6 -0
- package/examples/semantic-composition/chat.svml +6 -5
- package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
- package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
- package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
- package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
- package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
- package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
- package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
- package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
- package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
- package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
- package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
- package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
- package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
- package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
- package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
- package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
- package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
- package/package.json +35 -15
- package/packages/audio-track/README.md +20 -13
- package/packages/audio-track/package.json +1 -1
- package/packages/audio-track/src/component.ts +4 -4
- package/packages/audio-track/src/fragment.ts +6 -5
- package/packages/audio-track/src/index.ts +1 -1
- package/packages/audio-track/src/manifest.ts +17 -16
- package/packages/audio-track/src/program.ts +21 -25
- package/packages/audio-track/src/surface.ts +19 -18
- package/packages/audio-track-studio/README.md +23 -0
- package/packages/audio-track-studio/src/index.ts +33 -19
- package/packages/author-kit/README.md +1 -1
- package/packages/background-removal/README.md +4 -7
- package/packages/browser-capture/package.json +1 -1
- package/packages/build-result/README.md +69 -0
- package/packages/build-result/package.json +2 -1
- package/packages/build-result/src/decode.ts +12 -8
- package/packages/build-result/src/execution-log.ts +17 -0
- package/packages/build-result/src/file-reference.ts +42 -0
- package/packages/build-result/src/index.ts +4 -0
- package/packages/build-result/src/replace-file-windows.ts +58 -0
- package/packages/build-result/src/replace-file.ts +11 -0
- package/packages/build-result/src/store.ts +58 -14
- package/packages/build-result/src/types.ts +41 -8
- package/packages/build-result/src/writer.ts +12 -1
- package/packages/build-result-fs/README.md +23 -1
- package/packages/build-result-s3/README.md +5 -0
- package/packages/build-result-s3/src/repository.ts +23 -5
- package/packages/caption/README.md +61 -73
- package/packages/caption/package.json +3 -2
- package/packages/caption/src/activation.ts +2 -2
- package/packages/caption/src/component.ts +20 -5
- package/packages/caption/src/display.ts +3 -18
- package/packages/caption/src/fragment.ts +3 -7
- package/packages/caption/src/index.ts +6 -5
- package/packages/caption/src/manifest.ts +29 -46
- package/packages/caption/src/style.ts +24 -135
- package/packages/caption/src/surface.ts +12 -92
- package/packages/caption/src/temporalize.ts +18 -53
- package/packages/caption/src/types.ts +8 -35
- package/packages/caption/src/visibility.ts +23 -0
- package/packages/caption-fine/README.md +31 -11
- package/packages/caption-fine/package.json +4 -2
- package/packages/caption-fine/src/component.ts +3 -3
- package/packages/caption-fine/src/fragment.ts +7 -19
- package/packages/caption-fine/src/index.ts +2 -0
- package/packages/caption-fine/src/manifest.ts +27 -18
- package/packages/caption-fine/src/recipe.ts +7 -0
- package/packages/caption-fine/src/render.ts +62 -49
- package/packages/caption-fine/src/schedule.ts +39 -35
- package/packages/caption-fine/src/style.ts +10 -9
- package/packages/caption-fine/src/surface.ts +62 -35
- package/packages/caption-fine/src/types.ts +2 -0
- package/packages/caption-fine-studio/README.md +24 -2
- package/packages/caption-fine-studio/package.json +10 -3
- package/packages/caption-fine-studio/src/activation.ts +3 -3
- package/packages/caption-fine-studio/src/index.ts +61 -40
- package/packages/cli/README.md +81 -3
- package/packages/cli/package.json +1 -0
- package/packages/cli/src/arguments.ts +39 -15
- package/packages/cli/src/build-planning.ts +9 -3
- package/packages/cli/src/command.ts +7 -1
- package/packages/cli/src/commands/environment.ts +66 -27
- package/packages/cli/src/commands/execution.ts +81 -26
- package/packages/cli/src/commands/results.ts +7 -11
- package/packages/cli/src/index.ts +2 -2
- package/packages/cli/src/machine-view.ts +15 -5
- package/packages/cli/src/main.ts +38 -42
- package/packages/cli/src/observation.ts +7 -1
- package/packages/cli/src/output.ts +92 -34
- package/packages/cli/src/result-export.ts +22 -13
- package/packages/cli/src/run-file.ts +19 -8
- package/packages/cli/src/view.ts +64 -18
- package/packages/comment-sticker/README.md +3 -3
- package/packages/comment-sticker/package.json +1 -1
- package/packages/comment-sticker/src/component.ts +4 -4
- package/packages/comment-sticker/src/fragment.ts +5 -4
- package/packages/comment-sticker/src/manifest.ts +7 -6
- package/packages/comment-sticker/src/program.ts +9 -9
- package/packages/comment-sticker/src/surface.ts +6 -7
- package/packages/comment-sticker-studio/src/index.ts +2 -1
- package/packages/compiler-node/src/compiler.ts +1 -0
- package/packages/composition/README.md +21 -0
- package/packages/composition/src/audio-presentation.ts +44 -0
- package/packages/composition/src/index.ts +3 -0
- package/packages/composition/src/schema.ts +8 -3
- package/packages/composition/src/track.ts +15 -1
- package/packages/credential-store-env/README.md +1 -1
- package/packages/deck-track/README.md +3 -3
- package/packages/deck-track/package.json +1 -1
- package/packages/deck-track/src/component.ts +5 -5
- package/packages/deck-track/src/fragment.ts +6 -5
- package/packages/deck-track/src/lower.ts +12 -12
- package/packages/deck-track/src/manifest.ts +8 -7
- package/packages/deck-track/src/program.ts +13 -16
- package/packages/deck-track/src/surface.ts +9 -10
- package/packages/driver-node/src/driver.ts +41 -3
- package/packages/elevenlabs-speech/README.md +27 -0
- package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
- package/packages/elevenlabs-speech/src/activation.ts +26 -0
- package/packages/elevenlabs-speech/src/fragment.ts +11 -0
- package/packages/elevenlabs-speech/src/index.ts +111 -0
- package/packages/elevenlabs-speech/src/surface.ts +167 -0
- package/packages/endpoint-kit/README.md +24 -0
- package/packages/endpoint-kit/src/index.ts +7 -1
- package/packages/estimate/README.md +56 -3
- package/packages/estimate/src/program.ts +7 -8
- package/packages/film/README.md +12 -7
- package/packages/film/package.json +1 -1
- package/packages/film/src/component.ts +4 -4
- package/packages/film/src/fragment.ts +6 -5
- package/packages/film/src/manifest.ts +11 -10
- package/packages/film/src/program.ts +5 -5
- package/packages/film/src/recipe.ts +2 -1
- package/packages/film/src/surface.ts +6 -6
- package/packages/film-studio/package.json +1 -1
- package/packages/film-studio/src/index.ts +2 -2
- package/packages/fishaudio-speech/README.md +33 -0
- package/packages/fishaudio-speech/package.json +21 -0
- package/packages/fishaudio-speech/src/activation.ts +32 -0
- package/packages/fishaudio-speech/src/fragment.ts +11 -0
- package/packages/fishaudio-speech/src/index.ts +156 -0
- package/packages/fishaudio-speech/src/surface.ts +192 -0
- package/packages/fonts-open/README.md +5 -0
- package/packages/fonts-open/package.json +5 -1
- package/packages/fonts-open/src/studio.ts +21 -0
- package/packages/generation/README.md +11 -1
- package/packages/generation/src/mapping.ts +28 -30
- package/packages/gpt-image/README.md +1 -2
- package/packages/grok-imagine/README.md +1 -2
- package/packages/hyperframes/README.md +7 -3
- package/packages/hyperframes/src/browser-program.ts +11 -2
- package/packages/hyperframes/src/document.ts +15 -2
- package/packages/interview-emoji-reveal/README.md +4 -4
- package/packages/interview-emoji-reveal/package.json +1 -1
- package/packages/interview-emoji-reveal/src/component.ts +4 -4
- package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
- package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
- package/packages/interview-emoji-reveal/src/program.ts +14 -14
- package/packages/interview-emoji-reveal/src/surface.ts +8 -9
- package/packages/media-execution/README.md +7 -3
- package/packages/media-execution/src/audio-presentation.ts +23 -0
- package/packages/media-execution/src/execute.ts +2 -0
- package/packages/media-pipeline/README.md +7 -3
- package/packages/media-pipeline/src/audio-plan.ts +4 -1
- package/packages/media-pipeline/src/component.ts +16 -2
- package/packages/media-pipeline/src/manifest.ts +3 -1
- package/packages/media-pipeline/src/types.ts +2 -1
- package/packages/media-track/README.md +14 -47
- package/packages/media-track/package.json +1 -1
- package/packages/media-track/preview/preview.svml +5 -5
- package/packages/media-track/src/author.ts +12 -6
- package/packages/media-track/src/component.ts +10 -16
- package/packages/media-track/src/fragment.ts +8 -7
- package/packages/media-track/src/index.ts +3 -1
- package/packages/media-track/src/lower.ts +7 -7
- package/packages/media-track/src/manifest.ts +16 -38
- package/packages/media-track/src/program.ts +62 -67
- package/packages/media-track/src/sampling.ts +6 -6
- package/packages/media-track/src/sequence.ts +8 -8
- package/packages/media-track/src/surface.ts +25 -43
- package/packages/media-track-studio/README.md +9 -0
- package/packages/media-track-studio/src/index.ts +23 -13
- package/packages/mimo-speech/README.md +1 -1
- package/packages/minimax-h3/README.md +1 -1
- package/packages/nano-banana/README.md +1 -1
- package/packages/narrative/README.md +23 -1
- package/packages/narrative/src/identity.ts +11 -0
- package/packages/narrative/src/index.ts +3 -0
- package/packages/narrative/src/schema.ts +28 -27
- package/packages/narrative/src/selection.ts +52 -0
- package/packages/narrative/src/types.ts +2 -0
- package/packages/package-loader-node/README.md +30 -0
- package/packages/package-loader-node/package.json +5 -2
- package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
- package/packages/package-loader-node/src/index.ts +1 -0
- package/packages/package-loader-node/src/loader.ts +12 -15
- package/packages/package-loader-node/src/location.ts +27 -1
- package/packages/package-loader-node/src/module-scope.ts +183 -0
- package/packages/package-loader-node/src/types.ts +4 -0
- package/packages/performance/README.md +83 -0
- package/packages/performance/package.json +30 -0
- package/packages/performance/src/activation.ts +11 -0
- package/packages/performance/src/component.ts +46 -0
- package/packages/performance/src/index.ts +6 -0
- package/packages/performance/src/manifest.ts +53 -0
- package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
- package/packages/performance/src/program.ts +51 -0
- package/packages/performance/src/style.ts +35 -0
- package/packages/performance/src/surface.ts +99 -0
- package/packages/performance-studio/README.md +25 -0
- package/packages/performance-studio/package.json +21 -0
- package/packages/performance-studio/src/activation.ts +6 -0
- package/packages/performance-studio/src/index.ts +84 -0
- package/packages/program-space/README.md +9 -18
- package/packages/program-space/src/activation.ts +1 -5
- package/packages/program-space/src/index.ts +2 -11
- package/packages/program-space/src/surface.ts +1 -20
- package/packages/project-context-node/README.md +20 -0
- package/packages/project-context-node/package.json +10 -0
- package/packages/project-context-node/src/index.ts +3 -0
- package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
- package/packages/provider-hyperframes-local/README.md +43 -15
- package/packages/provider-hyperframes-local/src/activation.ts +4 -3
- package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
- package/packages/provider-hyperframes-local/src/capture.ts +96 -26
- package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
- package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
- package/packages/provider-hyperframes-local/src/options.ts +2 -0
- package/packages/provider-hyperframes-local/src/program.ts +6 -3
- package/packages/provider-hyperframes-local/src/progress.ts +53 -0
- package/packages/provider-hyperframes-local/src/provider.ts +18 -5
- package/packages/provider-hyperframes-local/src/render.ts +48 -7
- package/packages/provider-hypihub/README.md +48 -17
- package/packages/provider-hypihub/package.json +2 -0
- package/packages/provider-hypihub/src/mapping.ts +31 -7
- package/packages/provider-hypihub/src/oauth.ts +6 -0
- package/packages/provider-hypihub/src/provider.ts +25 -13
- package/packages/provider-hypihub/src/routes.ts +1 -2
- package/packages/provider-hypihub/src/upload.ts +2 -0
- package/packages/provider-media-local/README.md +3 -4
- package/packages/provider-whisperx-local/README.md +57 -0
- package/packages/provider-whisperx-local/src/program.ts +1 -0
- package/packages/provider-whisperx-local/src/provider.ts +3 -0
- package/packages/ranking/README.md +8 -6
- package/packages/ranking/package.json +1 -1
- package/packages/ranking/src/component.ts +6 -6
- package/packages/ranking/src/fragment.ts +11 -7
- package/packages/ranking/src/manifest.ts +21 -14
- package/packages/ranking/src/render.ts +33 -35
- package/packages/ranking/src/schedule.ts +16 -19
- package/packages/ranking/src/surface.ts +12 -13
- package/packages/ranking-studio/README.md +29 -0
- package/packages/ranking-studio/package.json +8 -3
- package/packages/ranking-studio/src/index.ts +71 -12
- package/packages/render-hyperframes/README.md +7 -7
- package/packages/render-hyperframes/package.json +1 -1
- package/packages/render-hyperframes/src/component.ts +11 -1
- package/packages/render-hyperframes/src/fragment.ts +7 -4
- package/packages/render-hyperframes/src/manifest.ts +4 -4
- package/packages/render-hyperframes/src/surface.ts +6 -6
- package/packages/runtime/README.md +8 -1
- package/packages/runtime/src/catalog.ts +2 -0
- package/packages/runtime/src/execution.ts +15 -4
- package/packages/runtime/src/index.ts +2 -1
- package/packages/runtime/src/log.ts +51 -0
- package/packages/runtime/src/types.ts +5 -8
- package/packages/runtime-host-node/README.md +30 -0
- package/packages/runtime-host-node/package.json +1 -0
- package/packages/runtime-host-node/src/index.ts +25 -9
- package/packages/runtime-host-node/src/packages.ts +47 -50
- package/packages/runtime-kit/README.md +5 -0
- package/packages/runtime-kit/src/index.ts +3 -1
- package/packages/runtime-local/README.md +111 -4
- package/packages/runtime-local/src/config.ts +202 -56
- package/packages/runtime-local/src/control.ts +9 -1
- package/packages/runtime-local/src/executor.ts +66 -0
- package/packages/runtime-local/src/host.ts +37 -17
- package/packages/runtime-local/src/log.ts +48 -0
- package/packages/runtime-local/src/programs.ts +41 -25
- package/packages/runtime-local/src/result-writer.ts +2 -0
- package/packages/runtime-local/src/runtime.ts +10 -6
- package/packages/runtime-local/src/supervisor.ts +142 -0
- package/packages/runtime-local/src/types.ts +9 -2
- package/packages/runtime-local/src/worker-process.ts +7 -24
- package/packages/runtime-local/src/worker.ts +55 -83
- package/packages/screen-overlay/README.md +3 -3
- package/packages/screen-overlay/package.json +1 -1
- package/packages/screen-overlay/src/component.ts +3 -3
- package/packages/screen-overlay/src/fragment.ts +5 -4
- package/packages/screen-overlay/src/manifest.ts +7 -6
- package/packages/screen-overlay/src/program.ts +9 -9
- package/packages/screen-overlay/src/surface.ts +6 -7
- package/packages/script/README.md +37 -2
- package/packages/script/src/edit.ts +123 -73
- package/packages/script/src/lexical.ts +40 -6
- package/packages/script/src/manifest.ts +2 -2
- package/packages/script/src/narrative.ts +1 -0
- package/packages/script/src/parser.ts +36 -8
- package/packages/script/src/surface.ts +4 -3
- package/packages/script/src/types.ts +5 -1
- package/packages/script-studio/package.json +9 -3
- package/packages/script-studio/src/index.ts +2 -0
- package/packages/script-studio/src/projection.ts +105 -0
- package/packages/seedance/README.md +30 -1
- package/packages/seedance/src/index.ts +18 -7
- package/packages/seedance/src/surface.ts +17 -4
- package/packages/seedance-kits/README.md +10 -2
- package/packages/seedance-kits/kits/speaker-v1.svs +5 -5
- package/packages/seedream/README.md +1 -1
- package/packages/sound/README.md +81 -0
- package/packages/sound/package.json +25 -0
- package/packages/sound/src/activation.ts +11 -0
- package/packages/sound/src/component.ts +28 -0
- package/packages/sound/src/index.ts +5 -0
- package/packages/sound/src/manifest.ts +47 -0
- package/packages/sound/src/program.ts +84 -0
- package/packages/sound/src/style.ts +34 -0
- package/packages/sound/src/surface.ts +90 -0
- package/packages/sound-studio/README.md +22 -0
- package/packages/sound-studio/package.json +20 -0
- package/packages/sound-studio/src/activation.ts +6 -0
- package/packages/sound-studio/src/index.ts +74 -0
- package/packages/speech/README.md +2 -2
- package/packages/speech-alignment/src/align.ts +45 -21
- package/packages/speech-alignment/src/local.ts +8 -0
- package/packages/speech-alignment/src/locate.ts +1 -1
- package/packages/store-sqlite/README.md +7 -0
- package/packages/store-sqlite/src/store.ts +84 -83
- package/packages/studio/INSPECTOR.md +117 -0
- package/packages/studio/README.md +149 -14
- package/packages/studio/package.json +8 -7
- package/packages/studio/src/build-library.ts +99 -84
- package/packages/studio/src/companion-assembly.ts +1 -0
- package/packages/studio/src/domain.ts +1 -1
- package/packages/studio/src/fallback-companions.ts +3 -3
- package/packages/studio/src/feedback-server.ts +51 -0
- package/packages/studio/src/feedback-store.ts +66 -0
- package/packages/studio/src/feedback.ts +60 -0
- package/packages/studio/src/library-media.ts +19 -0
- package/packages/studio/src/parameter-values.ts +83 -1
- package/packages/studio/src/parameters.ts +132 -43
- package/packages/studio/src/preview/render.ts +5 -1
- package/packages/studio/src/preview/runtime-shim.ts +49 -3
- package/packages/studio/src/programme.ts +14 -30
- package/packages/studio/src/server.ts +66 -34
- package/packages/studio/src/shared.ts +24 -8
- package/packages/studio/src/snapshot.ts +21 -132
- package/packages/studio/src/studio-preflight.ts +3 -3
- package/packages/studio/src/studio-registry.ts +72 -6
- package/packages/studio/src/style.css +342 -190
- package/packages/studio/src/temporal-edit.ts +131 -0
- package/packages/studio/src/ui/artifact-name.ts +80 -0
- package/packages/studio/src/ui/artifact-preview.ts +99 -0
- package/packages/studio/src/ui/comments.ts +233 -0
- package/packages/studio/src/ui/icons.ts +10 -1
- package/packages/studio/src/ui/library.ts +373 -192
- package/packages/studio/src/ui/main.ts +291 -110
- package/packages/studio/src/ui/material-preview.ts +1 -1
- package/packages/studio/src/ui/overlay.ts +31 -26
- package/packages/studio/src/ui/scrub-preview.ts +108 -0
- package/packages/studio/src/ui/sidebar-panel.ts +31 -0
- package/packages/studio/src/ui/stage.ts +188 -9
- package/packages/studio/src/ui/timeline.ts +187 -281
- package/packages/studio/start.ts +19 -5
- package/packages/studio-adapter/README.md +151 -11
- package/packages/studio-adapter/src/index.ts +126 -14
- package/packages/temporal/README.md +6 -6
- package/packages/temporal/package.json +1 -1
- package/packages/temporal/src/component.ts +5 -6
- package/packages/temporal/src/index.ts +8 -6
- package/packages/temporal/src/location.ts +11 -11
- package/packages/temporal/src/projection.ts +19 -19
- package/packages/temporal/src/rational.ts +4 -4
- package/packages/temporal-markup/EDITING.md +183 -0
- package/packages/temporal-markup/README.md +31 -11
- package/packages/temporal-markup/package.json +1 -1
- package/packages/temporal-markup/src/index.ts +20 -25
- package/packages/temporal-markup/src/space.ts +10 -41
- package/packages/timeline/README.md +31 -0
- package/packages/{semantic-track → timeline}/package.json +1 -1
- package/packages/timeline/src/activation.ts +8 -0
- package/packages/timeline/src/component.ts +24 -0
- package/packages/timeline/src/identity.ts +60 -0
- package/packages/timeline/src/index.ts +6 -0
- package/packages/{semantic-track → timeline}/src/location.ts +20 -20
- package/packages/timeline/src/manifest.ts +39 -0
- package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
- package/packages/timeline/src/types.ts +24 -0
- package/packages/timeline-author/README.md +68 -0
- package/packages/{speech-track → timeline-author}/package.json +6 -4
- package/packages/timeline-author/src/activation.ts +22 -0
- package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
- package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
- package/packages/timeline-author/src/index.ts +7 -0
- package/packages/timeline-author/src/manifest.ts +78 -0
- package/packages/timeline-author/src/program.ts +107 -0
- package/packages/timeline-author/src/surface.ts +46 -0
- package/packages/timeline-author/src/types.ts +6 -0
- package/packages/typography-track/README.md +4 -4
- package/packages/typography-track/package.json +1 -1
- package/packages/typography-track/src/component.ts +4 -4
- package/packages/typography-track/src/fragment.ts +4 -3
- package/packages/typography-track/src/manifest.ts +11 -9
- package/packages/typography-track/src/program.ts +15 -15
- package/packages/typography-track/src/surface.ts +17 -18
- package/packages/typography-track-studio/package.json +8 -3
- package/packages/typography-track-studio/src/index.ts +5 -1
- package/packages/video-cli/README.md +16 -4
- package/packages/video-cli/package.json +2 -1
- package/packages/video-cli/src/creation.ts +25 -9
- package/packages/video-cli/src/index.ts +1 -1
- package/packages/video-cli/src/studio-distribution.ts +2 -1
- package/packages/volcengine-matting/README.md +3 -3
- package/packages/whisperx/README.md +8 -1
- package/packages/workspace/src/index.ts +2 -0
- package/packages/workspace-fs-node/README.md +4 -1
- package/packages/workspace-fs-node/src/workspace.ts +3 -1
- package/services/whisperx/README.md +14 -0
- package/services/whisperx/pyproject.toml +2 -0
- package/services/whisperx/uv.lock +20 -20
- package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
- package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
- package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
- package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
- package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
- package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
- package/packages/provider-kie/README.md +0 -134
- package/packages/provider-kie/package.json +0 -43
- package/packages/provider-kie/src/activation.ts +0 -71
- package/packages/provider-kie/src/index.ts +0 -10
- package/packages/provider-kie/src/mapping.ts +0 -182
- package/packages/provider-kie/src/provider.ts +0 -657
- package/packages/provider-kie/src/routes.ts +0 -150
- package/packages/provider-xiaomi-mimo/README.md +0 -32
- package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
- package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
- package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
- package/packages/runtime/src/environment.ts +0 -6
- package/packages/semantic-track/README.md +0 -21
- package/packages/semantic-track/src/activation.ts +0 -8
- package/packages/semantic-track/src/component.ts +0 -24
- package/packages/semantic-track/src/identity.ts +0 -58
- package/packages/semantic-track/src/index.ts +0 -6
- package/packages/semantic-track/src/manifest.ts +0 -38
- package/packages/semantic-track/src/types.ts +0 -26
- package/packages/speech-track/README.md +0 -51
- package/packages/speech-track/src/activation.ts +0 -19
- package/packages/speech-track/src/index.ts +0 -7
- package/packages/speech-track/src/manifest.ts +0 -73
- package/packages/speech-track/src/program.ts +0 -64
- package/packages/speech-track/src/surface.ts +0 -35
- package/packages/speech-track/src/types.ts +0 -6
- package/packages/speech-track-studio/README.md +0 -3
- package/packages/speech-track-studio/package.json +0 -14
- package/packages/speech-track-studio/src/activation.ts +0 -7
- package/packages/speech-track-studio/src/index.ts +0 -40
- /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
- /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { programFrameSampleBoundary, programSpaceFrameCount } from "@hypit/program-space";
|
|
2
2
|
import type { ProgramSpace } from "@hypit/program-space";
|
|
3
|
-
import { assertCompositionIdentity } from "@hypit/composition";
|
|
3
|
+
import { assertCompositionIdentity, assertAudioPresentation } from "@hypit/composition";
|
|
4
4
|
import type { Composition } from "@hypit/composition";
|
|
5
5
|
import { canonicalize, isResourceId } from "@hypit/protocol";
|
|
6
6
|
|
|
@@ -62,6 +62,7 @@ export function verifyAudioProgramPlan(value: unknown): asserts value is AudioPr
|
|
|
62
62
|
assert(clip.pitch === "preserve", `AudioProgramPlan clip ${clip.id} pitch policy is invalid`);
|
|
63
63
|
assert(Number.isFinite(clip.gain) && clip.gain >= 0 && clip.gain <= 64,
|
|
64
64
|
`AudioProgramPlan clip ${clip.id} gain is invalid`);
|
|
65
|
+
assertAudioPresentation(clip, { startSample: clip.targetStartSample, endSampleExclusive: clip.targetEndSampleExclusive }, item.sampleFrames);
|
|
65
66
|
const length = clip.targetEndSampleExclusive - clip.targetStartSample;
|
|
66
67
|
assert(Number.isSafeInteger(clip.fadeInSamples) && clip.fadeInSamples >= 0 && clip.fadeInSamples <= length
|
|
67
68
|
&& Number.isSafeInteger(clip.fadeOutSamples) && clip.fadeOutSamples >= 0 && clip.fadeOutSamples <= length,
|
|
@@ -100,6 +101,8 @@ export function compileAudioProgramPlan(composition: Composition, programSpace:
|
|
|
100
101
|
gain: clip.gain,
|
|
101
102
|
fadeInSamples: clip.fadeInSamples,
|
|
102
103
|
fadeOutSamples: clip.fadeOutSamples,
|
|
104
|
+
...(clip.gainEnvelope === undefined ? {} : { gainEnvelope: clip.gainEnvelope }),
|
|
105
|
+
...(clip.audibility === undefined ? {} : { audibility: clip.audibility }),
|
|
103
106
|
};
|
|
104
107
|
}));
|
|
105
108
|
return sealAudioProgramPlan({
|
|
@@ -66,6 +66,7 @@ function plannedMediaNeed(
|
|
|
66
66
|
port: string,
|
|
67
67
|
capability: CapabilityRef,
|
|
68
68
|
roles: Readonly<Record<string, string>> = {},
|
|
69
|
+
present?: PlannedNeedFacet["present"],
|
|
69
70
|
): PlannedNeedFacet {
|
|
70
71
|
return {
|
|
71
72
|
producer,
|
|
@@ -75,6 +76,7 @@ function plannedMediaNeed(
|
|
|
75
76
|
return { constraints: {}, pendingInputs: plannedNeedInputs(state, step, roles) };
|
|
76
77
|
},
|
|
77
78
|
present(specification) {
|
|
79
|
+
if (present !== undefined) return present(specification);
|
|
78
80
|
const references: Record<string, number> = {};
|
|
79
81
|
for (const item of specification.pendingInputs) {
|
|
80
82
|
const role = item.role;
|
|
@@ -86,6 +88,18 @@ function plannedMediaNeed(
|
|
|
86
88
|
};
|
|
87
89
|
}
|
|
88
90
|
|
|
91
|
+
const presentAudioRender: NonNullable<PlannedNeedFacet["present"]> = (specification) => {
|
|
92
|
+
const request = specification.constraints as Partial<RenderAudioNeed>;
|
|
93
|
+
if (request.plan === undefined) return { fields: {}, references: {} };
|
|
94
|
+
const { plan, range } = request;
|
|
95
|
+
return { fields: {
|
|
96
|
+
startFrame: [range?.startFrame ?? 0],
|
|
97
|
+
endFrameExclusive: [range?.endFrameExclusive ?? plan.frameCount],
|
|
98
|
+
frameRate: [`${plan.frameRate.numerator}/${plan.frameRate.denominator}`],
|
|
99
|
+
sampleRate: [plan.sampleRate],
|
|
100
|
+
}, references: {} };
|
|
101
|
+
};
|
|
102
|
+
|
|
89
103
|
export const mediaPipelineComponent = {
|
|
90
104
|
validators: [
|
|
91
105
|
{
|
|
@@ -363,8 +377,8 @@ export const mediaPipelineComponent = {
|
|
|
363
377
|
mediaPipelineCapabilities.projectSpeechEvidenceAudio,
|
|
364
378
|
{ media: "audio" },
|
|
365
379
|
),
|
|
366
|
-
plannedMediaNeed(mediaPipelineProducers.renderAudio, "audio", mediaPipelineCapabilities.renderAudio, {
|
|
367
|
-
plannedMediaNeed(mediaPipelineProducers.renderAudioRange, "audio", mediaPipelineCapabilities.renderAudio, {
|
|
380
|
+
plannedMediaNeed(mediaPipelineProducers.renderAudio, "audio", mediaPipelineCapabilities.renderAudio, {}, presentAudioRender),
|
|
381
|
+
plannedMediaNeed(mediaPipelineProducers.renderAudioRange, "audio", mediaPipelineCapabilities.renderAudio, {}, presentAudioRender),
|
|
368
382
|
plannedMediaNeed(mediaPipelineProducers.mux, "media", mediaPipelineCapabilities.mux, { visual: "video", audio: "audio" }),
|
|
369
383
|
],
|
|
370
384
|
} satisfies ComponentPackage;
|
|
@@ -3,7 +3,7 @@ import { mediaDependency, mediaTypes } from "@hypit/media";
|
|
|
3
3
|
import { programSpaceDependency, programSpaceTypes } from "@hypit/program-space";
|
|
4
4
|
import { svsModuleRef, svsRecipeType } from "@hypit/svs";
|
|
5
5
|
import { speechDependency, speechTypes } from "@hypit/speech";
|
|
6
|
-
import { compositionDependency, compositionTypes } from "@hypit/composition";
|
|
6
|
+
import { compositionDependency, compositionTypes, audioSampleSpanSchema, audioGainEnvelopeSchema } from "@hypit/composition";
|
|
7
7
|
import { artifactTypes } from "@hypit/artifact";
|
|
8
8
|
import type {
|
|
9
9
|
CapabilityRef,
|
|
@@ -237,6 +237,8 @@ export const audioProgramPlanSchema: ValueSchema = {
|
|
|
237
237
|
gain: { schema: { kind: "number", minimum: 0, maximum: 64 } },
|
|
238
238
|
fadeInSamples: { schema: integer },
|
|
239
239
|
fadeOutSamples: { schema: integer },
|
|
240
|
+
gainEnvelope: { schema: audioGainEnvelopeSchema, optional: true },
|
|
241
|
+
audibility: { schema: { kind: "array", items: audioSampleSpanSchema }, optional: true },
|
|
240
242
|
},
|
|
241
243
|
} } },
|
|
242
244
|
mix: { schema: {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AudioPresentation } from "@hypit/composition";
|
|
1
2
|
import type { BlobRef } from "@hypit/protocol";
|
|
2
3
|
import type { MediaFrameRange, MediaInspection, MediaRational, MediaStreamSelection, RenderedVisual, TimelineAudio } from "@hypit/media";
|
|
3
4
|
|
|
@@ -134,7 +135,7 @@ export type ProjectSpeechEvidenceAudioNeed = {
|
|
|
134
135
|
readonly evidenceSampleFrames: number;
|
|
135
136
|
};
|
|
136
137
|
|
|
137
|
-
export type AudioProgramClip = {
|
|
138
|
+
export type AudioProgramClip = AudioPresentation & {
|
|
138
139
|
readonly id: string;
|
|
139
140
|
readonly artifact: BlobRef;
|
|
140
141
|
readonly targetStartSample: number;
|
|
@@ -1,61 +1,28 @@
|
|
|
1
1
|
# `@hypit/media-track`
|
|
2
2
|
|
|
3
|
-
The Track Surface accepts `
|
|
4
|
-
|
|
3
|
+
The Track Surface accepts `timeline={program.timeline}`. The same Timeline supports authored
|
|
4
|
+
positions and, where prepared Takes supply evidence, Script Selections and Moments. Shared `at`
|
|
5
5
|
inputs accept a Moment or a time such as `2s`; `at` with `for` produces a Window where required.
|
|
6
|
-
|
|
6
|
+
[Performance](../performance/README.md) separately obtains existing footage and source positions from Timeline.
|
|
7
7
|
|
|
8
8
|
Place images, prepared video or compositable surfaces over the semantic timeline. B-roll is a common
|
|
9
|
-
use: the picture can illustrate a phrase while the A-roll's speech continues.
|
|
9
|
+
use: the picture can illustrate a phrase while the A-roll's speech continues.
|
|
10
10
|
Media Items own independently timed pictures;
|
|
11
11
|
a Sequence owns one visual slot whose Members replace each other through Handoffs.
|
|
12
12
|
|
|
13
|
-
The Markup Track takes `canvas` and
|
|
13
|
+
The Markup Track takes `canvas` and `timeline`. Its Surface projects
|
|
14
14
|
authored Selections, Moments, Segments or clock expressions into Windows and Instants. The component
|
|
15
|
-
consumes those projected times with Frames, media and appearance; its Fragment receives
|
|
15
|
+
consumes those projected times with Frames, media and appearance; its Fragment receives the same Timeline.
|
|
16
16
|
|
|
17
17
|
Moving media enters after [normalization](../media-pipeline/README.md), with the intended streams and
|
|
18
18
|
frame clock already selected. Still images use their actual intrinsic Extent. Placement, fitting,
|
|
19
19
|
sampling and motion remain separate authored choices.
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Present existing Timeline footage
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
appearance={look.performance}/>
|
|
27
|
-
</media:Track>
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
`Performance` displays the prepared material in its enclosing Track's `semantic` input. `during`
|
|
31
|
-
selects the whole program, a Segment or a Selection; the other Window forms work as usual. One
|
|
32
|
-
Performance can span any number of Takes. Each plays at its original program position: if a Take
|
|
33
|
-
begins at program second 5, a Window from seconds 7 to 10 shows source seconds 2 to 5. An audio-only
|
|
34
|
-
interval contributes no picture. The presentation shares one frame, appearance and lifecycle across
|
|
35
|
-
Take boundaries.
|
|
36
|
-
|
|
37
|
-
Its appearance Recipe needs `stack-order` and can set fit, crop anchors, opacity, filters, clipping,
|
|
38
|
-
padding, border, shadow and frame paint. `motion` moves the framed presentation, and `Sampling`
|
|
39
|
-
children transform the fitted picture over the complete selected Window, without restarting at
|
|
40
|
-
Take boundaries. `Sound` children attach prepared effects to its entrance or exit. Its original
|
|
41
|
-
sound is independently available as `speech.audio` for Film. Use an Item with direct `media` for
|
|
42
|
-
independent playback or source trim; Performance preserves the semantic assembly's source timing.
|
|
43
|
-
|
|
44
|
-
```svml
|
|
45
|
-
<media:Performance during={story.segment.explanation} frame={layout.full}
|
|
46
|
-
appearance={look.performance}>
|
|
47
|
-
<media:Sampling at="start" zoom="1"/>
|
|
48
|
-
<media:Sampling at="end" zoom="1.08"/>
|
|
49
|
-
</media:Performance>
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
This excerpt belongs inside the same Media Track. Its selected passage determines the appearance
|
|
53
|
-
interval, while the two Sampling keys direct a gradual push-in inside the unchanged Frame.
|
|
54
|
-
|
|
55
|
-
For a fixed card, full picture, circle or cutout this is ordinary Media presentation. If video and
|
|
56
|
-
graphics must resize, mask or move together, write a project component that owns that relationship.
|
|
57
|
-
`projectSemanticMedia` supplies the same material spans to its drawing function. The component can
|
|
58
|
-
use a browser program from `@hypit/hypit/hyperframes` while Caption and independent overlays remain peers.
|
|
23
|
+
[Performance](../performance/README.md) obtains existing footage from Timeline and applies broad
|
|
24
|
+
and local Use rules. Use Media Items here for independently supplied assets and playback choices.
|
|
25
|
+
Both reuse the same geometry and fitting capabilities.
|
|
59
26
|
|
|
60
27
|
## Place the frame, then fit its contents
|
|
61
28
|
|
|
@@ -115,10 +82,10 @@ a deliberate pan or rotation may reveal the backing or lower layers.
|
|
|
115
82
|
## Author Items and replacement Sequences
|
|
116
83
|
|
|
117
84
|
These excerpts assume the imports, named assets, normalized media, Frames, Extents, Script,
|
|
118
|
-
|
|
85
|
+
Timeline and Recipes are already declared:
|
|
119
86
|
|
|
120
87
|
```svml
|
|
121
|
-
<media-track:Track id="coverage"
|
|
88
|
+
<media-track:Track id="coverage" timeline={speech.timeline} canvas={vertical}>
|
|
122
89
|
<media-track:Item image={photo} extent={photo-extent} frame={full-frame}
|
|
123
90
|
during={story.selection.example} appearance={recipes.media.still}/>
|
|
124
91
|
<media-track:Item media={clip-media.media} frame={full-frame}
|
|
@@ -132,7 +99,7 @@ Appearance owns stack order, fit, clipping and source sampling; a `motion` Recip
|
|
|
132
99
|
movement. `Sampling` children can move the sampled content inside the Frame independently.
|
|
133
100
|
|
|
134
101
|
```svml
|
|
135
|
-
<media-track:Track id="cards"
|
|
102
|
+
<media-track:Track id="cards" timeline={speech.timeline} canvas={vertical}>
|
|
136
103
|
<media-track:Sequence id="steps" frame={card-frame} appearance={recipes.media.card}
|
|
137
104
|
until={story.selection.demo} until-boundary="end">
|
|
138
105
|
<media-track:Member id="one" image={first} extent={card-extent}
|
|
@@ -177,7 +144,7 @@ separately controls which source frames it occupies there. `playback` defaults t
|
|
|
177
144
|
`trim-start` and `trim-end` are a pair of integer source-frame boundaries, with an exclusive end.
|
|
178
145
|
Omit both to use the full source. The playback rules apply to the trimmed range when present.
|
|
179
146
|
For `stretch`, the source-frame advance is `sourceLength / targetLength`. For native playback, moving
|
|
180
|
-
media has already been normalized to
|
|
147
|
+
media has already been normalized to Timeline's frame rate, so one program frame advances one
|
|
181
148
|
source frame. These are source sampling choices; they do not move a Selection's semantic boundaries.
|
|
182
149
|
|
|
183
150
|
A two-second Item can use the beginning of a four-second generated clip without requesting a
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"@hypit/narrative": "workspace:*",
|
|
20
20
|
"@hypit/program-space": "workspace:*",
|
|
21
21
|
"@hypit/protocol": "workspace:*",
|
|
22
|
-
"@hypit/
|
|
22
|
+
"@hypit/timeline": "workspace:*",
|
|
23
23
|
"@hypit/spatial": "workspace:*",
|
|
24
24
|
"@hypit/svs": "workspace:*",
|
|
25
25
|
"@hypit/markup": "workspace:*",
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<import from="@hypit/script@1"/>
|
|
7
7
|
<import as="media" from="@hypit/media@1"/>
|
|
8
8
|
<import as="pipeline" from="@hypit/media-pipeline@1"/>
|
|
9
|
-
<import as="
|
|
9
|
+
<import as="time" from="@hypit/timeline-author@1"/>
|
|
10
10
|
<import as="whisperx" from="@hypit/whisperx@1"/>
|
|
11
11
|
<import as="media-track" from="@hypit/media-track@1"/>
|
|
12
12
|
<import as="space" from="@hypit/spatial@1"/>
|
|
@@ -32,16 +32,16 @@
|
|
|
32
32
|
video="primary-moving" audio="none" span-authority="video"/>
|
|
33
33
|
<whisperx:SemanticTake id="showcase-time" narrative={story}
|
|
34
34
|
segment={story.segment.empty} media={duration-media.media}/>
|
|
35
|
-
<
|
|
35
|
+
<time:Timeline id="speech" clock={clock}><time:Take source={showcase-time.take}/></time:Timeline>
|
|
36
36
|
|
|
37
|
-
<media-track:Track id="showcase"
|
|
37
|
+
<media-track:Track id="showcase" timeline={speech.timeline} canvas={vertical}>
|
|
38
38
|
<media-track:Item id="rounded-card" image={picture-a} extent={picture-size} during="program"
|
|
39
39
|
frame={card-a} appearance={recipes.media.card} motion={recipes.motion.card}/>
|
|
40
40
|
<media-track:Item id="flush-card" image={picture-b} extent={picture-size} during="program"
|
|
41
41
|
frame={card-b} appearance={recipes.media.wide} motion={recipes.motion.card}/>
|
|
42
42
|
</media-track:Track>
|
|
43
|
-
<film:Film id="main" canvas={vertical}
|
|
43
|
+
<film:Film id="main" canvas={vertical} timeline={speech.timeline} appearance={recipes.film.vertical}>
|
|
44
44
|
<film:Track source={showcase.visual}/>
|
|
45
45
|
</film:Film>
|
|
46
|
-
<render:Video id="final" composition={main.composition}
|
|
46
|
+
<render:Video id="final" composition={main.composition} timeline={speech.timeline}/>
|
|
47
47
|
</svml>
|
|
@@ -182,12 +182,18 @@ export function decodeMediaSampleSpec(
|
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
/** Decode visual-only sample styling without choosing playback or source trim. */
|
|
185
|
+
/** Public authored defaults shared by decoding and optional editor fields. */
|
|
186
|
+
export const mediaAppearanceDefaults = {
|
|
187
|
+
opacity: 1, blur: 0, brightness: 1, contrast: 1, saturation: 1,
|
|
188
|
+
clip: "frame", radius: 0,
|
|
189
|
+
} as const;
|
|
190
|
+
|
|
185
191
|
export function decodeMediaSampleAppearance(recipe: SvsRecipe): MediaSampleAppearance {
|
|
186
192
|
return {
|
|
187
|
-
opacity: number(recipe, "opacity",
|
|
193
|
+
opacity: number(recipe, "opacity", mediaAppearanceDefaults.opacity),
|
|
188
194
|
filter: {
|
|
189
|
-
blurPx: number(recipe, "blur",
|
|
190
|
-
contrast: number(recipe, "contrast",
|
|
195
|
+
blurPx: number(recipe, "blur", mediaAppearanceDefaults.blur), brightness: number(recipe, "brightness", mediaAppearanceDefaults.brightness),
|
|
196
|
+
contrast: number(recipe, "contrast", mediaAppearanceDefaults.contrast), saturation: number(recipe, "saturation", mediaAppearanceDefaults.saturation),
|
|
191
197
|
},
|
|
192
198
|
};
|
|
193
199
|
}
|
|
@@ -236,10 +242,10 @@ export function decodeMediaMotion(recipe: SvsRecipe | undefined): MediaLifecycle
|
|
|
236
242
|
}
|
|
237
243
|
|
|
238
244
|
export function decodeMediaPresentation(recipe: SvsRecipe): MediaFramePresentation {
|
|
239
|
-
const clip = oneOf(recipe, "clip", ["none", "frame", "rounded"] as const,
|
|
245
|
+
const clip = oneOf(recipe, "clip", ["none", "frame", "rounded"] as const, mediaAppearanceDefaults.clip);
|
|
240
246
|
const borderWidth = number(recipe, "border-width", 0);
|
|
241
247
|
return {
|
|
242
|
-
clip: clip === "rounded" ? { kind: "rounded", radiusPx: number(recipe, "radius",
|
|
248
|
+
clip: clip === "rounded" ? { kind: "rounded", radiusPx: number(recipe, "radius", mediaAppearanceDefaults.radius) } : { kind: clip },
|
|
243
249
|
padding: padding(recipe),
|
|
244
250
|
...(borderWidth === 0 ? {} : { border: {
|
|
245
251
|
widthPx: borderWidth,
|
|
@@ -278,7 +284,7 @@ export function decodeMediaFramePaint(recipe: SvsRecipe, id: string): MediaPaint
|
|
|
278
284
|
export function decodeMediaPaintSpec(recipe: SvsRecipe, id: string): MediaPaintLayerSpec {
|
|
279
285
|
assertKeys(recipe, ["paint", "opacity"]);
|
|
280
286
|
return sealMediaPaintLayerSpec({
|
|
281
|
-
id, paint: paint(recipe), opacity: number(recipe, "opacity",
|
|
287
|
+
id, paint: paint(recipe), opacity: number(recipe, "opacity", mediaAppearanceDefaults.opacity),
|
|
282
288
|
});
|
|
283
289
|
}
|
|
284
290
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { SemanticTrack } from "@hypit/semantic-track";
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
3
2
|
import type { ComponentPackage, ProducerHandlerContext } from "@hypit/component-kit";
|
|
4
3
|
import type { CompositableSurfaceRef, SynchronizedMedia } from "@hypit/media";
|
|
5
4
|
import { canonicalize } from "@hypit/protocol";
|
|
6
5
|
import type { BlobRef, StoredValue } from "@hypit/protocol";
|
|
7
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
8
6
|
import type { CanvasSpace, ContentFit, IntrinsicExtent, SpatialFrame, SpatialPath } from "@hypit/spatial";
|
|
9
7
|
import type { TemporalInstant, TemporalWindow } from "@hypit/temporal";
|
|
10
8
|
|
|
@@ -54,7 +52,7 @@ function itemInputs(inputs: ProducerHandlerContext["inputs"]) {
|
|
|
54
52
|
return {
|
|
55
53
|
set: inline<MediaTrackSet>(inputs.set?.value, "MediaTrackSet"),
|
|
56
54
|
header: inline<MediaTrackHeader>(inputs.header?.value, "MediaTrackHeader"),
|
|
57
|
-
|
|
55
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
58
56
|
canvas: inline<CanvasSpace>(inputs.canvas?.value, "CanvasSpace"),
|
|
59
57
|
layers: inline<MediaLayerSet>(inputs.layers?.value, "MediaLayerSet"),
|
|
60
58
|
frame: inline<SpatialFrame>(inputs.frame?.value, "SpatialFrame"),
|
|
@@ -67,7 +65,7 @@ function itemInputs(inputs: ProducerHandlerContext["inputs"]) {
|
|
|
67
65
|
function memberInputs(inputs: ProducerHandlerContext["inputs"]) {
|
|
68
66
|
return {
|
|
69
67
|
members: inline<MediaSequenceMemberSet>(inputs.members?.value, "MediaSequenceMemberSet"),
|
|
70
|
-
|
|
68
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
71
69
|
layers: inline<MediaLayerSet>(inputs.layers?.value, "MediaLayerSet"),
|
|
72
70
|
spec: inline<MediaSequenceMemberSpec>(inputs.spec?.value, "MediaSequenceMemberSpec"),
|
|
73
71
|
activation: inline<TemporalInstant>(inputs.activation?.value, "TemporalInstant"),
|
|
@@ -78,7 +76,7 @@ function sequenceInputs(inputs: ProducerHandlerContext["inputs"]) {
|
|
|
78
76
|
return {
|
|
79
77
|
set: inline<MediaTrackSet>(inputs.set?.value, "MediaTrackSet"),
|
|
80
78
|
header: inline<MediaTrackHeader>(inputs.header?.value, "MediaTrackHeader"),
|
|
81
|
-
|
|
79
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
82
80
|
canvas: inline<CanvasSpace>(inputs.canvas?.value, "CanvasSpace"),
|
|
83
81
|
members: inline<MediaSequenceMemberSet>(inputs.members?.value, "MediaSequenceMemberSet"),
|
|
84
82
|
frame: inline<SpatialFrame>(inputs.frame?.value, "SpatialFrame"),
|
|
@@ -90,10 +88,6 @@ function sequenceInputs(inputs: ProducerHandlerContext["inputs"]) {
|
|
|
90
88
|
|
|
91
89
|
export const mediaTrackComponent = {
|
|
92
90
|
producers: [
|
|
93
|
-
{ producer: mediaTrackProducers.appendPerformance, handler: ({ inputs }) => ({ outputs: { set: output(appendMediaPerformance(
|
|
94
|
-
itemInputs(inputs), inline<SemanticTrack>(inputs.semantic?.value, "SemanticTrack"),
|
|
95
|
-
inline<ContentFit>(inputs.fit?.value, "ContentFit"), inline<MediaSampleLayerSpec>(inputs.sampleSpec?.value, "MediaSampleLayerSpec"),
|
|
96
|
-
)) }, needs: {} }) },
|
|
97
91
|
{ producer: mediaTrackProducers.createLayers, handler: () => ({ outputs: { layers: output(createMediaLayerSet()) }, needs: {} }) },
|
|
98
92
|
{ producer: mediaTrackProducers.appendPaintLayer, handler: ({ inputs }) => ({ outputs: { layers: output(appendMediaPaintLayer(
|
|
99
93
|
inline<MediaLayerSet>(inputs.layers?.value, "MediaLayerSet"),
|
|
@@ -121,7 +115,7 @@ export const mediaTrackComponent = {
|
|
|
121
115
|
{ producer: mediaTrackProducers.createSet, handler: () => ({ outputs: { set: output(createMediaTrackSet()) }, needs: {} }) },
|
|
122
116
|
{ producer: mediaTrackProducers.appendItem, handler: ({ inputs }) => {
|
|
123
117
|
const value = itemInputs(inputs);
|
|
124
|
-
return { outputs: { set: output(appendMediaItem(value.set, value.header, value.
|
|
118
|
+
return { outputs: { set: output(appendMediaItem(value.set, value.header, value.timeline, value.canvas, value.layers, value.frame, value.spec, value.sounds, value.window)) }, needs: {} };
|
|
125
119
|
} },
|
|
126
120
|
{ producer: mediaTrackProducers.bindItemClipPath, handler: ({ inputs }) => ({ outputs: { spec: output(bindMediaItemClipPath(
|
|
127
121
|
inline<MediaItemSpec>(inputs.spec?.value, "MediaItemSpec"),
|
|
@@ -135,24 +129,24 @@ export const mediaTrackComponent = {
|
|
|
135
129
|
{ producer: mediaTrackProducers.appendMember, handler: ({ inputs }) => {
|
|
136
130
|
const value = memberInputs(inputs);
|
|
137
131
|
return { outputs: { members: output(appendMediaSequenceMember(
|
|
138
|
-
value.members, value.
|
|
132
|
+
value.members, value.timeline, value.layers, value.spec, value.activation,
|
|
139
133
|
)) }, needs: {} };
|
|
140
134
|
} },
|
|
141
135
|
{ producer: mediaTrackProducers.appendSequence, handler: ({ inputs }) => {
|
|
142
136
|
const value = sequenceInputs(inputs);
|
|
143
137
|
return { outputs: { set: output(appendMediaSequence(
|
|
144
|
-
value.set, value.header, value.
|
|
138
|
+
value.set, value.header, value.timeline, value.canvas, value.members, value.frame, value.spec, value.sounds, value.terminal,
|
|
145
139
|
)) }, needs: {} };
|
|
146
140
|
} },
|
|
147
141
|
{ producer: mediaTrackProducers.finalize, handler: ({ inputs }) => ({ outputs: { program: output(finalizeMediaTrack(
|
|
148
142
|
inline<MediaTrackSet>(inputs.set?.value, "MediaTrackSet"), inline<MediaTrackHeader>(inputs.header?.value, "MediaTrackHeader"),
|
|
149
|
-
inline<
|
|
143
|
+
inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
150
144
|
)) }, needs: {} }) },
|
|
151
145
|
{ producer: mediaTrackProducers.projectVisual, handler: ({ inputs }) => ({ outputs: { track: output(projectMediaVisualTrack(
|
|
152
|
-
inline<
|
|
146
|
+
inline<Timeline>(inputs.timeline?.value, "Timeline"), inline<MediaTrackProgram>(inputs.program?.value, "MediaTrackProgram"),
|
|
153
147
|
)) }, needs: {} }) },
|
|
154
148
|
{ producer: mediaTrackProducers.projectAudio, handler: ({ inputs }) => ({ outputs: { track: output(projectMediaAudioTrack(
|
|
155
|
-
inline<
|
|
149
|
+
inline<Timeline>(inputs.timeline?.value, "Timeline"), inline<MediaTrackProgram>(inputs.program?.value, "MediaTrackProgram"),
|
|
156
150
|
)) }, needs: {} }) },
|
|
157
151
|
],
|
|
158
152
|
validators: [{
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { timelineTypes } from "@hypit/timeline";
|
|
2
|
+
|
|
2
3
|
import { artifactTypes } from "@hypit/artifact";
|
|
3
4
|
import { compositionTypes } from "@hypit/composition";
|
|
4
5
|
import { sealGraphFragment } from "@hypit/elaborator";
|
|
@@ -14,7 +15,7 @@ const operation = (id: string) => ({ kind: "fragment-operation" as const, operat
|
|
|
14
15
|
export const stillMediaTrackFragment = sealGraphFragment({
|
|
15
16
|
inputs: [
|
|
16
17
|
{ name: "header", type: mediaTrackTypes.header },
|
|
17
|
-
{ name: "
|
|
18
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
18
19
|
{ name: "canvas", type: spatialTypes.canvas },
|
|
19
20
|
{ name: "source", type: artifactTypes.blob },
|
|
20
21
|
{ name: "extent", type: spatialTypes.extent },
|
|
@@ -32,14 +33,14 @@ export const stillMediaTrackFragment = sealGraphFragment({
|
|
|
32
33
|
{ id: "set", producer: mediaTrackProducers.createSet, inputs: {}, result: { kind: "output", name: "set" } },
|
|
33
34
|
{ id: "sounds", producer: mediaTrackProducers.createSounds, inputs: {}, result: { kind: "output", name: "sounds" } },
|
|
34
35
|
{ id: "append", producer: mediaTrackProducers.appendItem, inputs: {
|
|
35
|
-
set: operation("set"), header: input("header"),
|
|
36
|
+
set: operation("set"), header: input("header"), timeline: input("timeline"), canvas: input("canvas"), layers: operation("sample"),
|
|
36
37
|
frame: input("frame"), spec: input("item-spec"), sounds: operation("sounds"), window: input("window"),
|
|
37
38
|
}, result: { kind: "output", name: "set" } },
|
|
38
39
|
{ id: "finalize", producer: mediaTrackProducers.finalize, inputs: {
|
|
39
|
-
set: operation("append"), header: input("header"),
|
|
40
|
+
set: operation("append"), header: input("header"), timeline: input("timeline"),
|
|
40
41
|
}, result: { kind: "output", name: "program" } },
|
|
41
42
|
{ id: "visual", producer: mediaTrackProducers.projectVisual, inputs: {
|
|
42
|
-
|
|
43
|
+
timeline: input("timeline"), program: operation("finalize"),
|
|
43
44
|
}, result: { kind: "output", name: "track" } },
|
|
44
45
|
],
|
|
45
46
|
exports: [
|
|
@@ -49,9 +50,9 @@ export const stillMediaTrackFragment = sealGraphFragment({
|
|
|
49
50
|
});
|
|
50
51
|
|
|
51
52
|
export const renderMediaTrackFragment = sealGraphFragment({
|
|
52
|
-
inputs: [{ name: "
|
|
53
|
+
inputs: [{ name: "timeline", type: timelineTypes.track }, { name: "program", type: mediaTrackTypes.program }],
|
|
53
54
|
operations: [
|
|
54
|
-
{ id: "visual", producer: mediaTrackProducers.projectVisual, inputs: {
|
|
55
|
+
{ id: "visual", producer: mediaTrackProducers.projectVisual, inputs: { timeline: input("timeline"), program: input("program") }, result: { kind: "output", name: "track" } },
|
|
55
56
|
],
|
|
56
57
|
exports: [{ name: "track", type: compositionTypes.visualTrack, root: operation("visual") }],
|
|
57
58
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { mediaTrackComponent } from "./component.js";
|
|
2
2
|
export {
|
|
3
3
|
decodeMediaFit,
|
|
4
|
+
decodeMediaItemSpec,
|
|
4
5
|
decodeMediaFramePaint,
|
|
5
6
|
decodeMediaMotion,
|
|
6
7
|
decodeMediaPresentation,
|
|
@@ -46,7 +47,6 @@ export {
|
|
|
46
47
|
} from "./sounds.js";
|
|
47
48
|
export { appendMediaItem, appendMediaSequence, bindMediaItemClipPath, bindMediaSequenceClipPath, assertMediaItemSpec, assertMediaTrackHeader, assertMediaTrackProgram, assertMediaTrackProgramIdentity, assertMediaTrackSet, createMediaTrackSet, finalizeMediaTrack, projectMediaAudioTrack, projectMediaVisualTrack, sealMediaItemSpec, sealMediaTrackHeader, sealMediaTrackProgram } from "./program.js";
|
|
48
49
|
export { resolveVisualSampling } from "./sampling.js";
|
|
49
|
-
export { appendMediaPerformance } from "./performance.js";
|
|
50
50
|
export { decodeMediaSamplingKeyframe, decodeMediaTrackSurface } from "./surface.js";
|
|
51
51
|
export {
|
|
52
52
|
appendMediaSequenceMember,
|
|
@@ -63,3 +63,5 @@ export {
|
|
|
63
63
|
sequenceMemberHandoffAnimation,
|
|
64
64
|
} from "./sequence.js";
|
|
65
65
|
export type * from "./types.js";
|
|
66
|
+
|
|
67
|
+
export { mediaAppearanceDefaults } from "./author.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import type {
|
|
2
3
|
VisualAnimation,
|
|
3
4
|
VisualElement,
|
|
4
5
|
VisualStyleDeclaration,
|
|
5
6
|
VisualTimedSampling,
|
|
6
7
|
} from "@hypit/composition";
|
|
7
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
8
8
|
import { fitContent } from "@hypit/spatial";
|
|
9
9
|
import type { SpatialFrame, SpatialPath } from "@hypit/spatial";
|
|
10
10
|
|
|
@@ -133,7 +133,7 @@ function sampleElements(
|
|
|
133
133
|
item: MediaItemProgram,
|
|
134
134
|
parent: string,
|
|
135
135
|
order: { value: number },
|
|
136
|
-
|
|
136
|
+
timeline: Timeline,
|
|
137
137
|
samplingOverrides: Readonly<Record<string, VisualTimedSampling>>,
|
|
138
138
|
samplingAnimationOverrides: Readonly<Record<string, VisualAnimation | null>>,
|
|
139
139
|
): VisualElement[] {
|
|
@@ -209,7 +209,7 @@ function sampleElements(
|
|
|
209
209
|
}];
|
|
210
210
|
}
|
|
211
211
|
const sampling = samplingOverrides[layer.id] ?? layer.sampling ?? resolveVisualSampling({
|
|
212
|
-
|
|
212
|
+
timeline,
|
|
213
213
|
sourceFrameRate: sourceTiming.frameRate,
|
|
214
214
|
sourceFrameCount: sourceTiming.frameCount,
|
|
215
215
|
targetFrameCount: durationFrames,
|
|
@@ -244,12 +244,12 @@ function layerElements(
|
|
|
244
244
|
item: MediaItemProgram,
|
|
245
245
|
parent: string,
|
|
246
246
|
order: { value: number },
|
|
247
|
-
|
|
247
|
+
timeline: Timeline,
|
|
248
248
|
samplingOverrides: Readonly<Record<string, VisualTimedSampling>>,
|
|
249
249
|
samplingAnimationOverrides: Readonly<Record<string, VisualAnimation | null>>,
|
|
250
250
|
): VisualElement[] {
|
|
251
251
|
if (layer.kind === "sample") {
|
|
252
|
-
return sampleElements(layer, item, parent, order,
|
|
252
|
+
return sampleElements(layer, item, parent, order, timeline, samplingOverrides, samplingAnimationOverrides);
|
|
253
253
|
}
|
|
254
254
|
return [{
|
|
255
255
|
id: layer.id,
|
|
@@ -271,7 +271,7 @@ function layerElements(
|
|
|
271
271
|
/** Lower one independent Item through the fixed wrapper stack from the Media spec. */
|
|
272
272
|
export function lowerMediaItemElements(
|
|
273
273
|
item: MediaItemProgram,
|
|
274
|
-
|
|
274
|
+
timeline: Timeline,
|
|
275
275
|
options: {
|
|
276
276
|
readonly includeHandoffWrapper?: boolean;
|
|
277
277
|
readonly handoffAnimation?: VisualAnimation;
|
|
@@ -326,7 +326,7 @@ export function lowerMediaItemElements(
|
|
|
326
326
|
item,
|
|
327
327
|
frame,
|
|
328
328
|
order,
|
|
329
|
-
|
|
329
|
+
timeline,
|
|
330
330
|
options.samplingOverrides ?? {},
|
|
331
331
|
options.samplingAnimationOverrides ?? {},
|
|
332
332
|
));
|