@vosjs/studio-core 0.42.5 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -16
- package/dist/index.d.ts +368 -6
- package/dist/index.js +396 -62
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -29,11 +29,13 @@ RecordingArtifact ──projectFromArtifact──▶ ProjectDoc ──lowerStudi
|
|
|
29
29
|
|
|
30
30
|
`StudioDoc = ProjectDoc | ProgramAnchorDoc`, discriminated on `source`. A `ProjectDoc` is a recording: footage, `segments` (the kept source spans), `zoom`, `speed`, `tilt`, `camMotion`, the frame and cursor styles, plus the shared layers. A `ProgramAnchorDoc` is a vos program that gained the same shared layers (text, image and video overlays, 3D objects, audio clips, speed spans, a tween-retime overlay) without those being written into its config. `anchorKindOf`, `isRecordingDoc` and `isProgramDoc` read the discriminator; `lowerProgramDoc` lowers the program kind. Hosted documents carry `docSchemaVersion` (`DOC_SCHEMA_VERSION`, currently 2) and are upgraded on read with `migrateHostedDoc`.
|
|
31
31
|
|
|
32
|
-
The shared layers lower as one engine `stack` entry, `STUDIO_ENTRY_ID` (`'vosso.studio'`), with its own data (`studioLayerData`), so either document kind hosts them and the engine's `SET_DATA { target }` updates them alone. `studioAudioPlan` turns the entry's audio clips and duck curve into the plan `@vosjs/core/audio` mixes.
|
|
32
|
+
The shared layers lower as one engine `stack` entry, `STUDIO_ENTRY_ID` (`'vosso.studio'`), with its own data (`studioLayerData`), so either document kind hosts them and the engine's `SET_DATA { target }` updates them alone. `studioAudioPlan` turns the entry's audio clips and duck curve into the plan `@vosjs/core/audio` mixes. An audio clip's `gain` is 0..1; a clip may carry a loudness target instead, `normalize` (integrated LUFS, -30..-6), beside the file's measured `loudness` (`{ lufs, peakDb, at, src }`, written by tooling): `clipGain` derives the gain it plays at, `10^((normalize - lufs) / 20) × gain`, which may exceed 1 and is capped so the sample peak stays under -1 dBFS (and never lifts more than +24 dB). The target applies only while `loudness.src` is the clip's `key`; a clip without one lowers byte for byte as before.
|
|
33
|
+
|
|
34
|
+
**What a renderer must understand.** `DOC_FEATURES` lists the document fields a host's lowering must read, each with the release that first renders it and a predicate that finds it (`docFeatures(doc)`, `featuresNewerThan(doc, version)`), so a tool that hands a document to a host on an older release can say so before it is sent. `bakeDocFeatures(doc, version)` returns a copy with each newer feature it can bake said in what that release reads: an anchored caption at the start it plays at in this cut, `{elapsed}` filled, a loudness target as its gain (up to 1), with notes for what changed.
|
|
33
35
|
|
|
34
36
|
## Time and space conventions
|
|
35
37
|
|
|
36
|
-
- **Seconds everywhere.** Zoom, speed, tilt and cam-motion spans and the cursor samples are anchored in source time, so they follow footage through trims. Overlays, audio clips and click effects are anchored in output time, so a title keeps its perceived length through a speed change. `ratedSegments`, `effectiveSegments`, `docOutputDuration` and `outputRangeToSource` are the remaps.
|
|
38
|
+
- **Seconds everywhere.** Zoom, speed, tilt and cam-motion spans and the cursor samples are anchored in source time, so they follow footage through trims. Overlays, audio clips and click effects are anchored in output time, so a title keeps its perceived length through a speed change. An overlay may instead name a recorder step as its time (`anchor: { step, media?, at?, offset? }`): the lowering starts it where that step plays in the cut (`resolveOverlayAnchors`, `resolveAnchor`, `sourceMomentToOutput`), its `start` the fallback, and fills a text layer's `{elapsed}` from the step's recorded off-camera wait (`formatElapsed`). `ratedSegments`, `effectiveSegments`, `docOutputDuration` and `outputRangeToSource` are the remaps.
|
|
37
39
|
- **Normalized coordinates.** A zoom's `cx`/`cy` and an overlay's `transform.x`/`y` are fractions of the frame in `[0, 1]`, never pixels, so a document survives an aspect-ratio switch. `focusBounds` and `clampFocus` keep a focus inside the card at a given `level`.
|
|
38
40
|
- **Camera styles.** `ZOOM_STYLES` names six camera personalities (`glide`, the default, then `focus`, `cinema`, `snappy`, `cut`, `none`); a style parametrizes the planner, the camera motion and the tilt track's tempo, and `doc.zoomParams` layers per-document overrides. `keynote` and `drift` are retired names (`RETIRED_ZOOM_STYLES`) that resolve to `glide` + medium tilt and `cinema` + subtle tilt, and `migrateHostedDoc` rewrites them on read. Every style's chain gap sits above its pump-free floor (`pumpFreeChainGap`), and the lowering fits a ramp longer than its span to the room it has, never below `RAMP_FLOOR`.
|
|
39
41
|
- **The stage.** `CARD_FOV`, `CARD_Z`, `OVERLAY_Z`, `BACKGROUND_Z` and `planeSizeAtDepth` define the frustum-filling planes the program draws (background, the tiltable card, the overlay); `cardVisibleExtent` and `cardOverscanFor` are how far a posed card is seen past the frame, which is what the card layer's canvas and plane grow by (so a lean over zoomed footage never shows the texture's edge); `computeCardLayout` and `docCardLayout` are the host-side mirror of the program's card math, pinned to it by tests.
|
|
@@ -49,20 +51,20 @@ The shared layers lower as one engine `stack` entry, `STUDIO_ENTRY_ID` (`'vosso.
|
|
|
49
51
|
|
|
50
52
|
## Exports by area
|
|
51
53
|
|
|
52
|
-
| Area | Exports
|
|
53
|
-
| -------------- |
|
|
54
|
-
| Ingest | `projectFromArtifact`, `normalizeCaptureSpace`, `deriveViewportCrop`, `docToCropSpace`, `docToFullSpace`, `CAPTURE_COVERAGE_MIN`, `WINDOW_FOCUS_MIN`
|
|
55
|
-
| Document | `StudioDoc`, `ProjectDoc`, `ProgramAnchorDoc`, `anchorKindOf`, `isRecordingDoc`, `isProgramDoc`, `DOC_SCHEMA_VERSION`, `migrateHostedDoc`, `DEFAULT_FRAME_STYLE`, `BASE_FRAME_STYLE`, the constants (`ZOOM_LEVELS`, `TILT_DEG_MAX`, …)
|
|
56
|
-
| Planners | `planAutoZoom`, `planAutoSpeed`, `planAutoTilt`, `smoothCursor`, `idleGaps`, `scrollRuns`, `rejectSpan`, `isRejected`, `withoutRejected`
|
|
57
|
-
| Camera styles | `ZOOM_STYLES`, `ZOOM_STYLE_OPTIONS`, `DEFAULT_ZOOM_STYLE`, `resolveZoomStyle`, `RETIRED_ZOOM_STYLES`, `pumpFreeChainGap`
|
|
58
|
-
| Lowering | `lowerStudioDoc`, `lowerProgramDoc`, `lowerToComposition`, `zoomTrackFromDoc`, `tiltTrackFromDoc`, `camTrackFromDoc`, `motionTrack`, `followFocusEvents`, `extractClicks`, `cursorIdleFade`, `ratedSegments`, `STUDIO_ENTRY_ID`, `studioEntry`, `studioLayerData` |
|
|
59
|
-
| Layout | `computeCardLayout`, `docCardLayout`, `focusBounds`, `clampFocus`, `camBubbleRectAt`, `overlayRect`, `overlayHit`, `CARD_FOV`, `CARD_Z`, `planeSizeAtDepth`, `recommendedExportResolution`
|
|
60
|
-
| Text | `TEXT_PRESETS`, `OVERLAY_FONT_FACES`, `resolveOverlayStyle`, `resolveOverlayBox`, `resolveText3dAsset`
|
|
61
|
-
| Audio | `studioAudioPlan`, `clipEnvelope`, `duckCurve`, `computePeaks`, `computeMicRms`, `voiceKey`, `musicBedClip`, `refillAudioBeds`
|
|
62
|
-
| Backdrops | `withBackdrop`, `backdropMedia`
|
|
63
|
-
| Digest | `momentsFromDoc`, `planForDigest`, `buildDigest`, `sceneChanges`, `zoomCoversRect`, `zoomWindow`, `cropBox`, `frameGeometry`, `STYLE_FIELDS`, `copyStyle`, `pickStyle`, `DIGEST_VERSION`
|
|
64
|
-
| Destinations | `DESTINATIONS`, `destinationById`, `destinationsForChannel`, `exportSizeFor`, `resolveExportSize`, `ASPECT_RATIOS`
|
|
65
|
-
| Timeline lanes | `videoLane`, `micLane`, `camLane`, `zoomLane`, `tiltLane`, `camMoveLane`, `speedLane`, `overlaysLane`, `objectsLane`, `audioLane`; range actions `outputRangeToSource`, `removeSourceRange`, `setSpeedInRange`, `zoomSpanForRange`
|
|
54
|
+
| Area | Exports |
|
|
55
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
56
|
+
| Ingest | `projectFromArtifact`, `normalizeCaptureSpace`, `deriveViewportCrop`, `docToCropSpace`, `docToFullSpace`, `CAPTURE_COVERAGE_MIN`, `WINDOW_FOCUS_MIN` |
|
|
57
|
+
| Document | `StudioDoc`, `ProjectDoc`, `ProgramAnchorDoc`, `anchorKindOf`, `isRecordingDoc`, `isProgramDoc`, `DOC_SCHEMA_VERSION`, `migrateHostedDoc`, `DEFAULT_FRAME_STYLE`, `BASE_FRAME_STYLE`, the constants (`ZOOM_LEVELS`, `TILT_DEG_MAX`, …) |
|
|
58
|
+
| Planners | `planAutoZoom`, `planAutoSpeed`, `planAutoTilt`, `smoothCursor`, `idleGaps`, `scrollRuns`, `rejectSpan`, `isRejected`, `withoutRejected` |
|
|
59
|
+
| Camera styles | `ZOOM_STYLES`, `ZOOM_STYLE_OPTIONS`, `DEFAULT_ZOOM_STYLE`, `resolveZoomStyle`, `RETIRED_ZOOM_STYLES`, `pumpFreeChainGap` |
|
|
60
|
+
| Lowering | `lowerStudioDoc`, `lowerProgramDoc`, `lowerToComposition`, `zoomTrackFromDoc`, `tiltTrackFromDoc`, `camTrackFromDoc`, `motionTrack`, `followFocusEvents`, `extractClicks`, `cursorIdleFade`, `ratedSegments`, `resolveOverlayAnchors`, `STUDIO_ENTRY_ID`, `studioEntry`, `studioLayerData` |
|
|
61
|
+
| Layout | `computeCardLayout`, `docCardLayout`, `focusBounds`, `clampFocus`, `camBubbleRectAt`, `overlayRect`, `overlayHit`, `CARD_FOV`, `CARD_Z`, `planeSizeAtDepth`, `recommendedExportResolution` |
|
|
62
|
+
| Text | `TEXT_PRESETS`, `OVERLAY_FONT_FACES`, `resolveOverlayStyle`, `resolveOverlayBox`, `resolveText3dAsset` |
|
|
63
|
+
| Audio | `studioAudioPlan`, `clipEnvelope`, `duckCurve`, `computePeaks`, `computeMicRms`, `voiceKey`, `musicBedClip`, `refillAudioBeds` |
|
|
64
|
+
| Backdrops | `withBackdrop`, `backdropMedia` |
|
|
65
|
+
| Digest | `momentsFromDoc`, `planForDigest`, `buildDigest`, `sceneChanges`, `zoomCoversRect`, `zoomWindow`, `cropBox`, `frameGeometry`, `STYLE_FIELDS`, `copyStyle`, `pickStyle`, `DIGEST_VERSION` |
|
|
66
|
+
| Destinations | `DESTINATIONS`, `destinationById`, `destinationsForChannel`, `exportSizeFor`, `resolveExportSize`, `ASPECT_RATIOS` |
|
|
67
|
+
| Timeline lanes | `videoLane`, `micLane`, `camLane`, `zoomLane`, `tiltLane`, `camMoveLane`, `speedLane`, `overlaysLane`, `objectsLane`, `audioLane`; range actions `outputRangeToSource`, `removeSourceRange`, `setSpeedInRange`, `zoomSpanForRange` |
|
|
66
68
|
|
|
67
69
|
The full document shape is in [`src/types.ts`](src/types.ts); the JSON Schema that ships to users is [`doc.schema.json`](../cli/schema/doc.schema.json) in `@vosjs/cli`.
|
|
68
70
|
|
package/dist/index.d.ts
CHANGED
|
@@ -495,6 +495,13 @@ interface RecordingMeta {
|
|
|
495
495
|
};
|
|
496
496
|
seen: number;
|
|
497
497
|
}[];
|
|
498
|
+
/**
|
|
499
|
+
* INFORMATION the recorder noticed in the frame, never a failure: the
|
|
500
|
+
* signed-in account's own name (every place it showed, never the name
|
|
501
|
+
* itself) and a list of the account's recent items. Listed once, at the
|
|
502
|
+
* first step it was seen; `seen` counts the scans that saw it.
|
|
503
|
+
*/
|
|
504
|
+
notices?: RecordingNotice[];
|
|
498
505
|
/**
|
|
499
506
|
* What the script asked the recorder to hide before the camera rolled, and
|
|
500
507
|
* how many elements each selector reached. `hits: 0` is a mask that hid
|
|
@@ -505,6 +512,68 @@ interface RecordingMeta {
|
|
|
505
512
|
as: 'blur' | 'text';
|
|
506
513
|
hits: number;
|
|
507
514
|
}[];
|
|
515
|
+
/** The cuts `await` steps made, in order (CLI takes only). */
|
|
516
|
+
skips?: RecordingSkip[];
|
|
517
|
+
/** The files `download` steps kept (CLI takes only). */
|
|
518
|
+
outputs?: RecordingOutput[];
|
|
519
|
+
/**
|
|
520
|
+
* Sound the page played during the take: every `<video>` or `<audio>`
|
|
521
|
+
* (the page's own and its same-origin frames') that played audibly,
|
|
522
|
+
* with the footage stretches it was heard (CLI takes only).
|
|
523
|
+
*/
|
|
524
|
+
media?: RecordingPageMedia[];
|
|
525
|
+
}
|
|
526
|
+
/** Something the recorder noticed in the frame (`meta.notices`): information, never a failure. */
|
|
527
|
+
interface RecordingNotice {
|
|
528
|
+
/** the first step it was seen at; -1 = as the page opened */
|
|
529
|
+
step: number;
|
|
530
|
+
kind: 'account-name' | 'personal-list';
|
|
531
|
+
/** account-name: every place in the frame the name was seen (viewport CSS px); never the name */
|
|
532
|
+
places?: {
|
|
533
|
+
selector: string;
|
|
534
|
+
rect: Rect;
|
|
535
|
+
}[];
|
|
536
|
+
/** account-name: read from a line that says whose account it is; false = it may be the name */
|
|
537
|
+
sure?: boolean;
|
|
538
|
+
/** personal-list: the page's own heading over it (`Recents`, `History`) */
|
|
539
|
+
heading?: string;
|
|
540
|
+
/** personal-list: the list, as a selector a mask can take */
|
|
541
|
+
selector?: string;
|
|
542
|
+
rect?: Rect;
|
|
543
|
+
/** personal-list: how many items it showed */
|
|
544
|
+
items?: number;
|
|
545
|
+
seen: number;
|
|
546
|
+
}
|
|
547
|
+
/** A media element the page played during the take (`meta.media`). */
|
|
548
|
+
interface RecordingPageMedia {
|
|
549
|
+
/** the step during which it first played audibly */
|
|
550
|
+
step?: number;
|
|
551
|
+
/** what it played: its `currentSrc`, query and hash kept off */
|
|
552
|
+
src: string;
|
|
553
|
+
/** `video` or `audio` */
|
|
554
|
+
tag?: 'video' | 'audio';
|
|
555
|
+
/** the element's own length, seconds, when it knew one */
|
|
556
|
+
duration?: number;
|
|
557
|
+
/** its volume while heard, 0..1 */
|
|
558
|
+
volume?: number;
|
|
559
|
+
/**
|
|
560
|
+
* The stretches it was heard: footage seconds `at` while it played media
|
|
561
|
+
* seconds `from`..`to`. An off-camera wait splits a stretch.
|
|
562
|
+
*/
|
|
563
|
+
intervals: {
|
|
564
|
+
at: number;
|
|
565
|
+
from: number;
|
|
566
|
+
to: number;
|
|
567
|
+
}[];
|
|
568
|
+
/** it played, but never with sound: nothing to place */
|
|
569
|
+
muted?: boolean;
|
|
570
|
+
/**
|
|
571
|
+
* Where the fetched source landed, take-relative (`page-sound/voice.mp3`):
|
|
572
|
+
* what the plan's clips are keyed to. Absent when nothing was fetched
|
|
573
|
+
* (a hosted take, or a fetch that failed: `fetchError` says why).
|
|
574
|
+
*/
|
|
575
|
+
file?: string;
|
|
576
|
+
fetchError?: string;
|
|
508
577
|
}
|
|
509
578
|
/**
|
|
510
579
|
* A span's tie to an actions.json step: metadata for `vos plan
|
|
@@ -580,6 +649,62 @@ interface StepSpan {
|
|
|
580
649
|
* payload, which a layer quotes instead of replaying the flow.
|
|
581
650
|
*/
|
|
582
651
|
text?: string;
|
|
652
|
+
/**
|
|
653
|
+
* The step carries a guard (`"spend"`): `confirmed` says the recording
|
|
654
|
+
* pressed it because the command named it; a rehearsal only hovers one
|
|
655
|
+
* and leaves `confirmed` absent.
|
|
656
|
+
*/
|
|
657
|
+
guard?: 'spend';
|
|
658
|
+
confirmed?: boolean;
|
|
659
|
+
/**
|
|
660
|
+
* An `await` step: the wall-clock ms it waited OFF CAMERA. The footage
|
|
661
|
+
* clock stood still meanwhile, so `tStart`..`tEnd` hold only the
|
|
662
|
+
* moments around the cut, which is at `tStart` (`meta.skips[]`).
|
|
663
|
+
*/
|
|
664
|
+
offCameraMs?: number;
|
|
665
|
+
/** An `await` that gave up and let the take go on (`onTimeout: "continue"`). */
|
|
666
|
+
timedOut?: boolean;
|
|
667
|
+
/** A failed `expect`, a download that never came: why the step was skipped. */
|
|
668
|
+
reason?: string;
|
|
669
|
+
/**
|
|
670
|
+
* A rehearsal did not wait on this `expect` or `await`: it follows the
|
|
671
|
+
* guarded step at this index, which a rehearsal never presses, so what it
|
|
672
|
+
* waits for cannot come.
|
|
673
|
+
*/
|
|
674
|
+
followsGuard?: number;
|
|
675
|
+
/**
|
|
676
|
+
* A paced gesture (a drag's travel, a drawn path, typing, a key
|
|
677
|
+
* sequence) ran this many ms past what the script planned, more than a
|
|
678
|
+
* fifth over: the page could not keep up with what it was sent.
|
|
679
|
+
*/
|
|
680
|
+
overrunMs?: number;
|
|
681
|
+
/**
|
|
682
|
+
* The step waited on the app after its gesture (`settle`): the ms until
|
|
683
|
+
* the page made no DOM change and painted no new frame for a beat.
|
|
684
|
+
*/
|
|
685
|
+
settleMs?: number;
|
|
686
|
+
}
|
|
687
|
+
/**
|
|
688
|
+
* A cut the recorder made: an `await` step waited off camera, so the
|
|
689
|
+
* footage runs straight from the moment before the wait to the moment
|
|
690
|
+
* after. `at` is the SOURCE second of the cut, `ms` the wall time that
|
|
691
|
+
* did not reach the footage. A fresh plan starts a segment there.
|
|
692
|
+
*/
|
|
693
|
+
interface RecordingSkip {
|
|
694
|
+
step: number;
|
|
695
|
+
id?: string;
|
|
696
|
+
at: number;
|
|
697
|
+
ms: number;
|
|
698
|
+
timedOut?: boolean;
|
|
699
|
+
}
|
|
700
|
+
/** A file a `download` step kept, in the take's `outputs/`. */
|
|
701
|
+
interface RecordingOutput {
|
|
702
|
+
step: number;
|
|
703
|
+
id?: string;
|
|
704
|
+
/** the file name inside `outputs/` */
|
|
705
|
+
name: string;
|
|
706
|
+
bytes: number;
|
|
707
|
+
contentType?: string;
|
|
583
708
|
}
|
|
584
709
|
/** Everything the capture extension hands off to the studio. */
|
|
585
710
|
interface RecordingArtifact {
|
|
@@ -1018,8 +1143,21 @@ interface AudioClip {
|
|
|
1018
1143
|
out: number;
|
|
1019
1144
|
/** full source-file length, seconds — the trim ceiling (set on add). */
|
|
1020
1145
|
duration: number;
|
|
1021
|
-
/** linear gain 0..1. */
|
|
1146
|
+
/** linear gain 0..1 (a trim on top of `normalize`, when that applies). */
|
|
1022
1147
|
gain: number;
|
|
1148
|
+
/**
|
|
1149
|
+
* The clip's loudness as a TARGET: integrated loudness in LUFS (-30..-6,
|
|
1150
|
+
* e.g. -16). Applies only while `loudness` was measured for this `key`:
|
|
1151
|
+
* the lowering plays the clip at 10^((normalize - lufs) / 20) × gain,
|
|
1152
|
+
* which may exceed 1, capped so the sample peak stays under -1 dBFS.
|
|
1153
|
+
* Absent = `gain` alone, as always.
|
|
1154
|
+
*/
|
|
1155
|
+
normalize?: number;
|
|
1156
|
+
/**
|
|
1157
|
+
* What the file measures, written by tooling (`vos audio measure`), never
|
|
1158
|
+
* by hand: the fact `normalize` is computed from.
|
|
1159
|
+
*/
|
|
1160
|
+
loudness?: AudioLoudness;
|
|
1023
1161
|
/** fade durations, seconds. */
|
|
1024
1162
|
fadeIn: number;
|
|
1025
1163
|
fadeOut: number;
|
|
@@ -1031,6 +1169,28 @@ interface AudioClip {
|
|
|
1031
1169
|
duck?: boolean;
|
|
1032
1170
|
/** The template that placed this clip (see the overlay clip's `from`). */
|
|
1033
1171
|
from?: string;
|
|
1172
|
+
/**
|
|
1173
|
+
* `page`: sound the recorded page itself played (a `<video>` or `<audio>`
|
|
1174
|
+
* heard during the take, `meta.media`), placed by the plan. A re-plan
|
|
1175
|
+
* replaces only these; absent = a clip someone added.
|
|
1176
|
+
*/
|
|
1177
|
+
source?: 'page';
|
|
1178
|
+
}
|
|
1179
|
+
/**
|
|
1180
|
+
* A file's measured loudness (BS.1770, K-weighted, gated), stored next to
|
|
1181
|
+
* the clip that plays it. `src` is the key it was measured for: a clip whose
|
|
1182
|
+
* key moved to another file no longer matches, and its `normalize` is
|
|
1183
|
+
* ignored until it is measured again.
|
|
1184
|
+
*/
|
|
1185
|
+
interface AudioLoudness {
|
|
1186
|
+
/** Integrated loudness, LUFS. */
|
|
1187
|
+
lufs: number;
|
|
1188
|
+
/** Sample peak, dBFS (not oversampled); null for digital silence. */
|
|
1189
|
+
peakDb: number | null;
|
|
1190
|
+
/** When it was measured (ISO date). */
|
|
1191
|
+
at: string;
|
|
1192
|
+
/** The key it was measured for. */
|
|
1193
|
+
src: string;
|
|
1034
1194
|
}
|
|
1035
1195
|
/** Effective placed length of a clip on the output timeline, seconds. */
|
|
1036
1196
|
declare function clipLength(clip: Pick<AudioClip, 'in' | 'out' | 'loop' | 'loopLen'>): number;
|
|
@@ -1355,8 +1515,8 @@ type PinMark = 'none' | 'ring' | 'underline';
|
|
|
1355
1515
|
* a hairline between them (a connector) and a standing mark on the subject.
|
|
1356
1516
|
* One of `step`, `press` or `rect` names it. Resolved at lowering into the
|
|
1357
1517
|
* clip's motion track through the frame's camera; `transform.x/y` stay the
|
|
1358
|
-
* author's fallback for a pin that cannot resolve.
|
|
1359
|
-
* `anchor` (
|
|
1518
|
+
* author's fallback for a pin that cannot resolve. A pin is PLACE; a
|
|
1519
|
+
* layer's `anchor` (OverlayAnchor) is its TIME.
|
|
1360
1520
|
*/
|
|
1361
1521
|
interface OverlayPin {
|
|
1362
1522
|
/** A recorder step (`meta.steps[].id`, else its index) whose element
|
|
@@ -1381,6 +1541,28 @@ interface OverlayPin {
|
|
|
1381
1541
|
* dark rim, legible on any ground). */
|
|
1382
1542
|
color?: string;
|
|
1383
1543
|
}
|
|
1544
|
+
/**
|
|
1545
|
+
* A layer's TIME tie to a recorder step: the layer starts where that step
|
|
1546
|
+
* plays in the cut. Unlike a span's `StepAnchor` (re-record metadata the
|
|
1547
|
+
* lowering never reads), this one IS read at lowering: the step's moment
|
|
1548
|
+
* on its media (`meta.steps`, SOURCE seconds) is mapped through the
|
|
1549
|
+
* segments, speed spans and freezes exactly as a source-anchored span is,
|
|
1550
|
+
* and `offset` OUTPUT seconds are added. So a trim, a speed change or a
|
|
1551
|
+
* re-record moves the caption with its step, and nobody recomputes a
|
|
1552
|
+
* `start`. `start` stays the clip's fallback when the step cannot be
|
|
1553
|
+
* found or the cut leaves it out (validate says which); `duration` is the
|
|
1554
|
+
* clip's own either way.
|
|
1555
|
+
*/
|
|
1556
|
+
interface OverlayAnchor {
|
|
1557
|
+
/** The step: its `id` (`meta.steps[].id`) when it has one, else its index. */
|
|
1558
|
+
step: string | number;
|
|
1559
|
+
/** Whose steps: a `media[].id`; absent = the primary's. */
|
|
1560
|
+
media?: string;
|
|
1561
|
+
/** Which edge of the step is its moment. Default 'start'. */
|
|
1562
|
+
at?: 'start' | 'end';
|
|
1563
|
+
/** OUTPUT seconds after the step's moment (negative = before). Default 0. */
|
|
1564
|
+
offset?: number;
|
|
1565
|
+
}
|
|
1384
1566
|
interface OverlayClipBase {
|
|
1385
1567
|
/** Stable identity for selection/editing in the timeline UI. */
|
|
1386
1568
|
id: string;
|
|
@@ -1394,6 +1576,12 @@ interface OverlayClipBase {
|
|
|
1394
1576
|
* opacity, and their x/y are ignored.
|
|
1395
1577
|
*/
|
|
1396
1578
|
pin?: OverlayPin;
|
|
1579
|
+
/**
|
|
1580
|
+
* When the layer starts, as a recorder step (see OverlayAnchor): read at
|
|
1581
|
+
* lowering, `start` the fallback. A text layer's `{elapsed}` fills with
|
|
1582
|
+
* the anchored step's off-camera wait, when the recorder kept one.
|
|
1583
|
+
*/
|
|
1584
|
+
anchor?: OverlayAnchor;
|
|
1397
1585
|
/**
|
|
1398
1586
|
* How the clip enters and leaves (see Anim). Absent = the house motion:
|
|
1399
1587
|
* a rise in, a fade out.
|
|
@@ -4315,10 +4503,10 @@ declare function htmlStarterClip(starter: HtmlStarter, id: string, start: number
|
|
|
4315
4503
|
interface EnvelopePoint {
|
|
4316
4504
|
/** output-timeline seconds. */
|
|
4317
4505
|
t: number;
|
|
4318
|
-
/** linear gain 0..1. */
|
|
4506
|
+
/** linear gain (0..1, above 1 only for a clip lifted to its `normalize`). */
|
|
4319
4507
|
g: number;
|
|
4320
4508
|
}
|
|
4321
|
-
declare function clipEnvelope(clip: Pick<AudioClip, 'start' | 'in' | 'out' | 'gain' | 'fadeIn' | 'fadeOut' | 'loop' | 'loopLen'>): EnvelopePoint[];
|
|
4509
|
+
declare function clipEnvelope(clip: Pick<AudioClip, 'start' | 'in' | 'out' | 'gain' | 'fadeIn' | 'fadeOut' | 'loop' | 'loopLen'> & Partial<Pick<AudioClip, 'key' | 'normalize' | 'loudness'>>): EnvelopePoint[];
|
|
4322
4510
|
/** Envelope value at output time `t` (linear interpolation; 0 outside the clip). */
|
|
4323
4511
|
declare function envelopeValueAt(env: EnvelopePoint[], t: number): number;
|
|
4324
4512
|
|
|
@@ -4702,6 +4890,84 @@ interface SegmentExtent {
|
|
|
4702
4890
|
*/
|
|
4703
4891
|
declare function segmentOutputExtents(doc: StudioDoc): SegmentExtent[];
|
|
4704
4892
|
|
|
4893
|
+
/** The placeholder a text layer's words may carry. */
|
|
4894
|
+
declare const ELAPSED_PLACEHOLDER = "{elapsed}";
|
|
4895
|
+
/**
|
|
4896
|
+
* Where a SOURCE moment of one media plays in the cut: the output second of
|
|
4897
|
+
* the first rated piece of that media that holds it, null when the cut
|
|
4898
|
+
* leaves it out. A moment on a piece's closing edge counts as held there
|
|
4899
|
+
* (the last frame of a clip is still that clip).
|
|
4900
|
+
*/
|
|
4901
|
+
declare function sourceMomentToOutput(rated: readonly (Segment & {
|
|
4902
|
+
media?: string;
|
|
4903
|
+
})[], t: number, media?: string): number | null;
|
|
4904
|
+
/** Why an anchor did not resolve. */
|
|
4905
|
+
type AnchorMiss = 'media' | 'step' | 'skipped' | 'cut';
|
|
4906
|
+
interface AnchorResolution {
|
|
4907
|
+
/** OUTPUT seconds the layer starts at; null when the anchor did not resolve. */
|
|
4908
|
+
start: number | null;
|
|
4909
|
+
/** The step it names, when found. */
|
|
4910
|
+
step?: StepSpan;
|
|
4911
|
+
/** Why it did not resolve. */
|
|
4912
|
+
miss?: AnchorMiss;
|
|
4913
|
+
/**
|
|
4914
|
+
* The off-camera wait `{elapsed}` fills with, in ms: the step's own, else
|
|
4915
|
+
* the nearest earlier step's on the same media (see `elapsedFrom`).
|
|
4916
|
+
*/
|
|
4917
|
+
elapsedMs?: number;
|
|
4918
|
+
/**
|
|
4919
|
+
* Set when the wait is an EARLIER step's: the step after an await is the
|
|
4920
|
+
* natural place for "12 minutes later", and that step waited for nothing.
|
|
4921
|
+
*/
|
|
4922
|
+
elapsedFrom?: StepSpan;
|
|
4923
|
+
}
|
|
4924
|
+
/**
|
|
4925
|
+
* The off-camera wait the recorder kept for a step: the entry of
|
|
4926
|
+
* `meta.skips` that names the step (by its id or its index) with an `ms`,
|
|
4927
|
+
* else `offCameraMs` on the step itself. A step's own `ms` is never read:
|
|
4928
|
+
* in a script it is a reading time, not a wait. Read defensively: an older
|
|
4929
|
+
* take carries neither.
|
|
4930
|
+
*/
|
|
4931
|
+
declare function stepElapsedMs(meta: Pick<RecordingMeta, 'steps'> & {
|
|
4932
|
+
skips?: unknown;
|
|
4933
|
+
}, step: StepSpan): number | null;
|
|
4934
|
+
/**
|
|
4935
|
+
* The wait `{elapsed}` speaks of for a step: its own, else the nearest
|
|
4936
|
+
* earlier step's (by script order) on the same media, so a caption on the
|
|
4937
|
+
* beat that lands after an await reads that await. Null with none at all.
|
|
4938
|
+
*/
|
|
4939
|
+
declare function elapsedFor(meta: Pick<RecordingMeta, 'steps'> & {
|
|
4940
|
+
skips?: unknown;
|
|
4941
|
+
}, step: StepSpan): {
|
|
4942
|
+
ms: number;
|
|
4943
|
+
from?: StepSpan;
|
|
4944
|
+
} | null;
|
|
4945
|
+
/** Resolve one anchor against the document and its rated pieces. */
|
|
4946
|
+
declare function resolveAnchor(doc: Pick<ProjectDoc, 'source' | 'media'>, anchor: OverlayAnchor, rated: readonly (Segment & {
|
|
4947
|
+
media?: string;
|
|
4948
|
+
})[]): AnchorResolution;
|
|
4949
|
+
/**
|
|
4950
|
+
* A wait as a person says it: "40 seconds", "12 minutes", "2 hours",
|
|
4951
|
+
* "3 days". Rounded to the unit that reads: whole seconds under ten,
|
|
4952
|
+
* fives under a minute, whole minutes under an hour, whole hours under two
|
|
4953
|
+
* days.
|
|
4954
|
+
*/
|
|
4955
|
+
declare function formatElapsed(ms: number): string;
|
|
4956
|
+
/** Does a layer's text carry the `{elapsed}` placeholder? */
|
|
4957
|
+
declare function hasElapsed(text: RichText | undefined): boolean;
|
|
4958
|
+
/** One anchored layer as it plays: its start resolved, its `{elapsed}` filled. */
|
|
4959
|
+
declare function anchoredClip<C extends OverlayClip>(clip: C, doc: Pick<ProjectDoc, 'source' | 'media'>, rated: readonly (Segment & {
|
|
4960
|
+
media?: string;
|
|
4961
|
+
})[]): C;
|
|
4962
|
+
/**
|
|
4963
|
+
* The document with every anchored layer resolved (its `start` where its
|
|
4964
|
+
* step plays, its `{elapsed}` filled). A document with no anchored layer is
|
|
4965
|
+
* returned as it is, the same object, so its lowering is byte-identical.
|
|
4966
|
+
*/
|
|
4967
|
+
declare function resolveOverlayAnchors<D extends Pick<ProjectDoc, 'source' | 'media' | 'overlays'>>(doc: D, rated: readonly (Segment & {
|
|
4968
|
+
media?: string;
|
|
4969
|
+
})[]): D;
|
|
4970
|
+
|
|
4705
4971
|
/**
|
|
4706
4972
|
* Many media in one take, one rule: a recording is media plus the FACTS
|
|
4707
4973
|
* only a capture has, and `doc.source` is the PRIMARY media (the subject:
|
|
@@ -5272,6 +5538,102 @@ declare function computeMicRms(channels: Float32Array[], sampleRate: number, win
|
|
|
5272
5538
|
*/
|
|
5273
5539
|
declare function duckCurve(rms: MicRms, segments: Segment[], durationSec: number, opts?: DuckOptions): EnvelopePoint[];
|
|
5274
5540
|
|
|
5541
|
+
/**
|
|
5542
|
+
* A clip's loudness as a target. `normalize` says how loud the clip should
|
|
5543
|
+
* play (integrated LUFS); `loudness` is what its file measured, a fact the
|
|
5544
|
+
* tooling stores next to it. The gain the clip plays at is derived here, at
|
|
5545
|
+
* lowering, so the document stays declarative: swap the file and measure
|
|
5546
|
+
* again, and the same target holds.
|
|
5547
|
+
*
|
|
5548
|
+
* gain = 10^((normalize - lufs) / 20) × (clip.gain ?? 1)
|
|
5549
|
+
*
|
|
5550
|
+
* The gain may exceed 1 (a quiet file is lifted), and is CAPPED, never
|
|
5551
|
+
* limited: no gain may put the file's sample peak above -1 dBFS, and none is
|
|
5552
|
+
* above +24 dB. A cap lowers the whole clip; nothing reshapes its waveform.
|
|
5553
|
+
*
|
|
5554
|
+
* `normalize` applies only while `loudness` was measured for the clip's own
|
|
5555
|
+
* key (`loudness.src === key`). Without that the clip plays at `gain` alone,
|
|
5556
|
+
* exactly as a clip with no target, so a document lowers byte-identically
|
|
5557
|
+
* until it is measured.
|
|
5558
|
+
*/
|
|
5559
|
+
|
|
5560
|
+
/** The targets a clip may ask for, LUFS. */
|
|
5561
|
+
declare const NORMALIZE_MIN_LUFS = -30;
|
|
5562
|
+
declare const NORMALIZE_MAX_LUFS = -6;
|
|
5563
|
+
/** The ceiling a normalized clip's sample peak is held under, dBFS. */
|
|
5564
|
+
declare const NORMALIZE_PEAK_CEILING_DB = -1;
|
|
5565
|
+
/** The most a target may lift a clip, dB. */
|
|
5566
|
+
declare const NORMALIZE_MAX_LIFT_DB = 24;
|
|
5567
|
+
type ClipGainBasis =
|
|
5568
|
+
/** No target: `gain`, clamped to 0..1, as always. */
|
|
5569
|
+
'gain'
|
|
5570
|
+
/** The target applied. */
|
|
5571
|
+
| 'normalize'
|
|
5572
|
+
/** A target with no measurement for this key: ignored. */
|
|
5573
|
+
| 'unmeasured'
|
|
5574
|
+
/** A target measured for another key: ignored. */
|
|
5575
|
+
| 'stale';
|
|
5576
|
+
interface ClipGain {
|
|
5577
|
+
/** The linear gain the clip plays at. */
|
|
5578
|
+
gain: number;
|
|
5579
|
+
basis: ClipGainBasis;
|
|
5580
|
+
/** The gain the target asked for, before the caps (when it applied). */
|
|
5581
|
+
asked?: number;
|
|
5582
|
+
/** Which cap held it, when one did. */
|
|
5583
|
+
capped?: 'peak' | 'lift';
|
|
5584
|
+
}
|
|
5585
|
+
/** Is the clip's measurement one its target may be computed from? */
|
|
5586
|
+
declare function loudnessMatches(clip: Partial<Pick<AudioClip, 'key' | 'loudness'>>): boolean;
|
|
5587
|
+
/** The gain a clip plays at, and why. */
|
|
5588
|
+
declare function clipGain(clip: Pick<AudioClip, 'gain'> & Partial<Pick<AudioClip, 'key' | 'normalize' | 'loudness'>>): ClipGain;
|
|
5589
|
+
|
|
5590
|
+
interface DocFeature {
|
|
5591
|
+
/** A stable name for the feature. */
|
|
5592
|
+
id: string;
|
|
5593
|
+
/** The release of `@vosjs/studio-core` that first renders it. */
|
|
5594
|
+
since: string;
|
|
5595
|
+
/** What it is, in words, as a list of things: `caption anchors`. */
|
|
5596
|
+
name: string;
|
|
5597
|
+
/** What a renderer before `since` does with them, in words. */
|
|
5598
|
+
before: string;
|
|
5599
|
+
/** How many places in the document use it (0 = not used). */
|
|
5600
|
+
uses: (doc: StudioDoc) => number;
|
|
5601
|
+
/**
|
|
5602
|
+
* The document with the feature said in what a renderer before `since`
|
|
5603
|
+
* reads, and anything that changed how it plays. Absent: it cannot be.
|
|
5604
|
+
*/
|
|
5605
|
+
bake?: (doc: StudioDoc) => {
|
|
5606
|
+
doc: StudioDoc;
|
|
5607
|
+
notes: string[];
|
|
5608
|
+
};
|
|
5609
|
+
}
|
|
5610
|
+
declare const DOC_FEATURES: readonly DocFeature[];
|
|
5611
|
+
/** `a` against `b` as releases (`x.y.z`; a pre-release tag is ignored): -1, 0 or 1. */
|
|
5612
|
+
declare function compareVersions(a: string, b: string): number;
|
|
5613
|
+
/** A feature a document uses, and how many places use it. */
|
|
5614
|
+
interface UsedFeature {
|
|
5615
|
+
feature: DocFeature;
|
|
5616
|
+
count: number;
|
|
5617
|
+
}
|
|
5618
|
+
/** The features the document uses, in table order. */
|
|
5619
|
+
declare function docFeatures(doc: StudioDoc): UsedFeature[];
|
|
5620
|
+
/** The features the document uses that a renderer at `version` does not read. */
|
|
5621
|
+
declare function featuresNewerThan(doc: StudioDoc, version: string): UsedFeature[];
|
|
5622
|
+
interface BakeResult {
|
|
5623
|
+
doc: StudioDoc;
|
|
5624
|
+
/** The features baked. */
|
|
5625
|
+
baked: DocFeature[];
|
|
5626
|
+
/** The features newer than the renderer that cannot be baked. */
|
|
5627
|
+
unbakeable: DocFeature[];
|
|
5628
|
+
/** What changed in how the document plays, in words. */
|
|
5629
|
+
notes: string[];
|
|
5630
|
+
}
|
|
5631
|
+
/**
|
|
5632
|
+
* The document as a renderer at `version` reads it: every newer feature it
|
|
5633
|
+
* uses baked into the fields it stood for. A copy; the input is untouched.
|
|
5634
|
+
*/
|
|
5635
|
+
declare function bakeDocFeatures(doc: StudioDoc, version: string): BakeResult;
|
|
5636
|
+
|
|
5275
5637
|
/** Rate-aware OUTPUT duration of a doc (what the viewer experiences). */
|
|
5276
5638
|
/**
|
|
5277
5639
|
* The OUTPUT length of either document: a recording's kept footage
|
|
@@ -5391,4 +5753,4 @@ declare function rejectSpan(rejected: RejectedSpan[] | undefined, lane: Rejected
|
|
|
5391
5753
|
anchor?: StepAnchor;
|
|
5392
5754
|
}, note?: string): RejectedSpan;
|
|
5393
5755
|
|
|
5394
|
-
export { ASPECT_RATIOS, AUDIO_PLAN_STEP, type AnchorKind, type Anim, type AnimKind, type AnimSide, type AnimStep, type AppliedTemplate, type ApplyTemplateOptions, type AspectRatioOption, type AudioClip, type AudioPlanPoint, type AudioPlanTrack, BACKGROUND_Z, BASE_FRAME_STYLE, type Backdrop, type BackgroundMedia, type BakedText3dAsset, type BakedText3dMaterial, type BrowserBarStyle, type BuildDigestInput, CALLOUT_DEFAULT_BODY_PX, CALLOUT_SHAPES, CALLOUT_TYPE_RATIO, CAMERA_CENTRE_RAMP, CAMERA_COVER_MIN, CAMERA_FAR, CAMERA_NEAR, CAM_CHAIN_GAP, CAM_EASE, CAM_PAN, CAM_PAN_EASE, CAM_RAMP_IN, CAM_RAMP_OUT, CAM_SIZE_MAX, CAM_SIZE_MIN, CAM_SPAN_MIN, CAPTURE_COVERAGE_MIN, CARD_EDGE_OVERDRAW, CARD_ENTER_KINDS, CARD_EXIT_KINDS, CARD_FADE_SECONDS, CARD_FOV, CARD_Z, CHANGE_FLOOR, CHANGE_GRID, CHANGE_LEAD, CHANGE_OFFSETS, CHANNEL_SPECS_HASH, CHANNEL_SPECS_VERIFIED, CLICK_FX_INTENSITY, CLICK_FX_PRE, CLICK_HIGHLIGHT_FADE, CLICK_HOLD_MS, CLICK_PAIR_MAX, CLICK_PULSE_DUR, CLICK_RECT_MAX_FRAC, CLICK_RIPPLE_DUR, CLICK_SYNTH_RELEASE, CLUSTER_FILL, CROP_MAX_PX, CROP_MIN_FRAC, CROP_MIN_PX, CROP_PAD, CURSOR_IDLE_EPS_FRAC, CURSOR_IDLE_FADE_IN, CURSOR_IDLE_FADE_OUT, CURSOR_IDLE_HOLD, type CalloutBox, type CalloutClipOptions, type CalloutLook, type CalloutRegister, type CalloutShape, type CalloutWords, type CamBubbleRect, type CamPoseSpan, type CamStyle, type CameraModel, type CaptureNormalization, type CardLayout, type ChangeSample, type ChangeWitness, type ChangedRegion, type ClickFxStyle, type CopiedLayout, type CopyLayoutOptions, type CopyStyleOptions, type CursorEvent, type CursorFadeKey, type CursorIdleOptions, type CursorStyle, type CursorTrack, DARK_GROUND, DEFAULT_BROWSER_BAR, DEFAULT_CAM_POSE, DEFAULT_CAM_STYLE, DEFAULT_CLICK_FX, DEFAULT_CURSOR_STYLE, DEFAULT_DUCK, DEFAULT_FRAME_STYLE, DEFAULT_SPEED_PARAMS, DEFAULT_TILT_POSE, DEFAULT_ZOOM_LEVEL, DEFAULT_ZOOM_STYLE, DESIGN_FRAME_WIDTH, DESTINATIONS, DIGEST_CROP_MAX, DIGEST_FULL_MAX, DIGEST_VERSION, DOC_SCHEMA_VERSION, DRAG_FIT_LEVEL, DRAG_MIN_S, DRAG_MIN_TRAVEL_FRAC, type Destination, type Digest, type DigestImageRef, type DigestPlan, type DigestTakeFacts, type DocSegment, type Drag, type DuckOptions, END_CARD_FROM, END_CARD_RECEDE, END_CARD_SECONDS, ENTRANCE_SECONDS, EXPORT_RESOLUTION_OPTIONS, EXPORT_SHORT_EDGE, type EndCard, type EnvelopePoint, type ExportResolution, type ExtractClickOptions, FOLLOW_RECENTER, FOLLOW_SAFE_RATIO, FOOTAGE_FRAME_STYLE, FRAME_BORDER_COLOR_DEFAULT, FRAME_BORDER_DEFAULT, FRAME_BORDER_WIDTH_DEFAULT, FREEZE_DEFAULT_SECONDS, FREEZE_SECONDS_MAX, FREEZE_SECONDS_MIN, type FocusBounds, type FollowEvent, type FollowOptions, type FrameEntrance, type FrameGeometry, type FrameStyle, type FreezeExtent, type FreezeSpan, HOLD_DRIFT_MAX, HOUSE_GRADIENT, HOUSE_REGISTER, HTML_LAYER_FOREIGN_FIELDS, HTML_LAYER_MAX_BYTES, HTML_LAYER_SVG_CODE, HTML_LAYER_WARN_BYTES, HTML_STARTERS, type HtmlLayerFace, type HtmlLayerInlineFace, type HtmlLayerPayload, type HtmlLayerProblem, type HtmlLayerProblemCode, type HtmlLayerSource, type HtmlOverlayClip, type HtmlOverlayFont, type HtmlStarter, IDLE_KINDS, type IdleKind, type IngestOptions, LAYER_CARD_SHADOW, LAYOUT_FRAME_FIELDS, LOOK_KINDS, type LayerCard, type LayoutParts, type Look, type LookBrand, type LookKind, type LookPlacement, type LowerProgramOptions, type LoweredAudioClip, type LoweredClick, type LoweredComposition, type LoweredZoomSpan, type LumaGrid, MEDIA_ENTER_KINDS, MEDIA_EXIT_KINDS, MEDIA_FRAME_KEYS, MEDIA_KEY_PREFIX, MINIMAL_BAR_THEMES, MOTION_DELTA, MOTION_EASE, type Media, type MediaFrame, type MediaFrameKey, type MediaOverlayClip, type MediaSegment, type MicRms, type MinimalBarTheme, type Moment, type MomentKind, type MomentsOptions, type MotionKey, type MotionPose, type MotionPose3D, type MusicBedInput, type NormRect, OBJECT_DEFAULT_SCALE, OVERLAY_FONT_FACES, OVERLAY_LINE_HEIGHT, OVERLAY_MEDIA_DEFAULT_RADIUS, OVERLAY_MEDIA_DEFAULT_WIDTH, OVERLAY_MIN_DURATION, OVERLAY_SCALE_MAX, OVERLAY_SIZE_MAX, OVERLAY_SIZE_MIN, OVERLAY_TRANSITION_DUR, OVERLAY_Z, type ObjectAnimation, type ObjectAsset, type ObjectClip, type ObjectPrimitiveShape, type OverlayClip, type OverlayFontFace, type OverlayKind, type OverlayPin, type OverlayPresetStyle, type OverlayRect, type OverlayTransform, type OverlayTransition, PIN_GAP, PIN_MARGIN, PLATE_GROUND, PLAYBACK_ACTIVITY, PRIMARY_MEDIA, PROGRAM_RETIME, PUMP_REST, type PinCandidate, type PinCarry, type PinMark, type PinPlacement, type PinPlacementInput, type PinReferent, type PinSide, type PinSideResolved, type PlanOptions, type PlanTiltOptions, type PlaneSize, type ProgramAnchorDoc, type ProgramTweenEdit, type ProjectDoc, type PxRect, REJECT_OVERLAP, REST_TILT_ID, RETIRED_ZOOM_STYLES, type RecordingArtifact, type RecordingMeta, type Rect, type RejectedLane, type RejectedSpan, type ResolvedOverlayBox, type ResolvedOverlayStyle, type Rgb, SCENE_MOTION, SCENE_QUIET, SEGMENT_ENTER_KINDS, SEGMENT_EXIT_KINDS, SPEED_RATE_MAX, SPEED_RATE_MIN, SPEED_SPAN_MIN, STAGE_CLIP_PREFIX, STILL_DEFAULT, STUDIO_ENTRY_ID, STYLE_FIELDS, type SegmentExtent, type SmoothOptions, type SmoothPoint, type SpeedParams, type SpeedSpan, type StepAnchor, type StepSpan, type StudioAudioPlan, type StudioDoc, type StudioEntry, type StyleField, type StyledText, TEXT3D_DEPTH_DEFAULT, TEXT3D_DEPTH_MAX, TEXT3D_DEPTH_MIN, TEXT_ENTER_KINDS, TEXT_EXIT_KINDS, TEXT_PRESETS, TILT_AUTO_DEAD_ZONE, TILT_AUTO_MIN, TILT_CHAIN_GAP, TILT_DEG_MAX, TILT_EASE, TILT_INTENSITY_MAX, TILT_PAN, TILT_PAN_EASE, TILT_RAMP_IN, TILT_RAMP_OUT, TILT_SPAN_MIN, TILT_UI_DEG_MAX, TRANSITION_SECONDS, TRANSITION_SECONDS_MAX, TRANSITION_SECONDS_MIN, TRANSITION_SPEED_MULT, type TemplateAnchor, type Text3dMaterial, type TextFxDirection, type TextFxKind, type TextFxSpec, type TextFxUnit, type TextOverlayBox, type TextOverlayClip, type TextOverlayPreset, type TextOverlayStroke, type TiltPersonality, type TiltSpan, type TiltStyleName, type TraceFileKind, type TraceOptions, type TraceResult, type TranscriptSegment, type Transition, type TransitionKind, type TransitionMove, type TransitionOut, type TransitionSpeed, WINDOW_FOCUS_MIN, ZOOM_CHAIN_GAP, ZOOM_EASE, ZOOM_LEVELS, ZOOM_LEVEL_MAX, ZOOM_LEVEL_MIN, ZOOM_PAN, ZOOM_PAN_EASE, ZOOM_RAMP_IN, ZOOM_RAMP_IN_OVERLAP, ZOOM_RAMP_OUT, ZOOM_SPAN_MIN, ZOOM_STYLES, ZOOM_STYLE_OPTIONS, type ZipEntry, type ZoomScreen, type ZoomSpan, type ZoomStyleName, type ZoomStyleParams, type ZoomView, type ZoomWindow, ambientDrift, anchorKindOf, anchorSourceDuration, animStep, applyLook, applyTemplate, aspectRatioValue, audioLane, backdropMedia, boldWeightFor, buildDigest, calloutBox, calloutClip, calloutGroundOf, calloutLook, calloutSource, camBubbleRect, camBubbleRectAt, camLane, camMoveLane, camRectFromPose, camRestPose, camTrackFromDoc, cameraCentring, cameraModel, cardEnter, cardExit, cardFields, cardInset, cardPointToScreen, cardPoseTrack, changedRegion, clampCamFrac, clampCamSize, clampFocus, clampFreezeSeconds, clampSpeedRate, clampTiltDeg, clampZoomLevel, clipEnvelope, clipLength, clipsFrom, computeCardLayout, computeMicRms, computePeaks, copyLayout, copyStyle, cropBox, cssFamilies, cssWeights, cursorFromCsv, cursorFromPlaywrightTrace, cursorFromRecords, cursorFromTrace, cursorIdleFade, deltaE, deriveViewportCrop, destinationById, destinationsForChannel, docCardLayout, docFreezes, docMediaList, docOutputDuration, docRestTime, docStillTime, docToCropSpace, docToFullSpace, docTransitions, docZoomTrack, dragsFromTrack, dropTemplate, duckCurve, effectiveSegments, endCardClips, enterKey, enterOf, entranceAt, entranceEnd, entranceSeconds, envelopeAt, envelopeValueAt, exitKey, exitOf, exitSeconds, expandEndCard, expectedFrameSize, exportSizeFor, extractClicks, findStep, focusBounds, focusForViewportCentre, followFocusEvents, frameGeometry, freezeLane, freezeOutputExtents, hexToRgb, hexToRgbTriplet, houseLook, htmlLayerBleed, htmlLayerBleedFor, htmlLayerFaces, htmlLayerKey, htmlLayerLabel, htmlLayerPayload, htmlLayerPictureBox, htmlLayerProblems, htmlLayerSvg, htmlLayerText, htmlLayerUnhostedFamilies, htmlLayerWidth, htmlStarterClip, idleGaps, idleKey, isKeyedOverlay, isLookKind, isLoweredRecording, isMusicBed, isPlayback, isProgramDoc, isRecordingDoc, isRejected, isStageClip, isUnitStep, lastLayerEnd, layerMedia, layoutOf, levelForFocusFraction, liveZoomStyleName, lookFromBrand, lookKindForGround, lowerProgramDoc, lowerStudioDoc, lowerToComposition, marksEmphasis, mediaAtOutput, mediaDuration, mediaFrame, mediaKey, mediaRef, mediaRefId, mediaSource, micLane, migrateHostedDoc, migrateMotion, migrateText, migrateTextClip, migrateZoomStyle, momentsFromDoc, motionTrack, musicBedClip, nextMediaId, normalizeCaptureSpace, objectMotionBase, objectMotionPoseAt, objectsLane, outputDurationOf, outputEnd, outputRangeToSource, overlapFraction, overlayFaceFor, overlayFontFaces, overlayFontString, overlayFxSpec, overlayHit, overlayLines, overlayMotionBase, overlayMotionPoseAt, overlayPinPoseAt, overlayPlainText, overlayRect, overlaysLane, ownFreezes, pageDisplayUrl, parseCssColour, parsePoseId, pickChange, pickStyle, pinBox, pinCandidates, pinPlacement, pinRectOnScreen, pinReferent, pinReferentAt, placeFreezes, planAutoSpeed, planAutoTilt, planAutoZoom, planForDigest, planeSizeAtDepth, platformBarKind, playwrightTraceEntry, programDuration, programStillTime, projectFromArtifact, pumpFreeChainGap, ratedSegments, recommendedExportResolution, refillAudioBeds, rejectSpan, relativeLuminance, removeSourceRange, removeSpeedInRange, resolveExportSize, resolveOverlayBox, resolveOverlayStyle, resolvePins, resolveText3dAsset, resolveZoomStyle, restLeanOf, restSpansThroughTransitions, rgbToHex, sameMedia, sceneChanges, scrollRuns, segmentOutputExtents, outputLen as segmentOutputLen, segmentStarts, setSpeedInRange, slideSide, smoothCursor, snapRunWeight, spanOutputExtent, speedLane, studioAudioPlan, studioEntry, studioLayerData, styledTextOf, textRunsOf, tiltLane, tiltTrackFromDoc, traceKindOf, transitionMult, transitionSeconds, unionFitLevel, unionRect, videoLane, voiceKey, wellFormedXml, withBackdrop, withFreezes, withHolds, withoutRejected, wrapProgramLength, zipEntries, zipEntryBytes, zoomCoversRect, zoomLane, zoomSpanForRange, zoomTrackFromDoc, zoomView, zoomViewport, zoomWindow };
|
|
5756
|
+
export { ASPECT_RATIOS, AUDIO_PLAN_STEP, type AnchorKind, type AnchorMiss, type AnchorResolution, type Anim, type AnimKind, type AnimSide, type AnimStep, type AppliedTemplate, type ApplyTemplateOptions, type AspectRatioOption, type AudioClip, type AudioLoudness, type AudioPlanPoint, type AudioPlanTrack, BACKGROUND_Z, BASE_FRAME_STYLE, type Backdrop, type BackgroundMedia, type BakeResult, type BakedText3dAsset, type BakedText3dMaterial, type BrowserBarStyle, type BuildDigestInput, CALLOUT_DEFAULT_BODY_PX, CALLOUT_SHAPES, CALLOUT_TYPE_RATIO, CAMERA_CENTRE_RAMP, CAMERA_COVER_MIN, CAMERA_FAR, CAMERA_NEAR, CAM_CHAIN_GAP, CAM_EASE, CAM_PAN, CAM_PAN_EASE, CAM_RAMP_IN, CAM_RAMP_OUT, CAM_SIZE_MAX, CAM_SIZE_MIN, CAM_SPAN_MIN, CAPTURE_COVERAGE_MIN, CARD_EDGE_OVERDRAW, CARD_ENTER_KINDS, CARD_EXIT_KINDS, CARD_FADE_SECONDS, CARD_FOV, CARD_Z, CHANGE_FLOOR, CHANGE_GRID, CHANGE_LEAD, CHANGE_OFFSETS, CHANNEL_SPECS_HASH, CHANNEL_SPECS_VERIFIED, CLICK_FX_INTENSITY, CLICK_FX_PRE, CLICK_HIGHLIGHT_FADE, CLICK_HOLD_MS, CLICK_PAIR_MAX, CLICK_PULSE_DUR, CLICK_RECT_MAX_FRAC, CLICK_RIPPLE_DUR, CLICK_SYNTH_RELEASE, CLUSTER_FILL, CROP_MAX_PX, CROP_MIN_FRAC, CROP_MIN_PX, CROP_PAD, CURSOR_IDLE_EPS_FRAC, CURSOR_IDLE_FADE_IN, CURSOR_IDLE_FADE_OUT, CURSOR_IDLE_HOLD, type CalloutBox, type CalloutClipOptions, type CalloutLook, type CalloutRegister, type CalloutShape, type CalloutWords, type CamBubbleRect, type CamPoseSpan, type CamStyle, type CameraModel, type CaptureNormalization, type CardLayout, type ChangeSample, type ChangeWitness, type ChangedRegion, type ClickFxStyle, type ClipGain, type ClipGainBasis, type CopiedLayout, type CopyLayoutOptions, type CopyStyleOptions, type CursorEvent, type CursorFadeKey, type CursorIdleOptions, type CursorStyle, type CursorTrack, DARK_GROUND, DEFAULT_BROWSER_BAR, DEFAULT_CAM_POSE, DEFAULT_CAM_STYLE, DEFAULT_CLICK_FX, DEFAULT_CURSOR_STYLE, DEFAULT_DUCK, DEFAULT_FRAME_STYLE, DEFAULT_SPEED_PARAMS, DEFAULT_TILT_POSE, DEFAULT_ZOOM_LEVEL, DEFAULT_ZOOM_STYLE, DESIGN_FRAME_WIDTH, DESTINATIONS, DIGEST_CROP_MAX, DIGEST_FULL_MAX, DIGEST_VERSION, DOC_FEATURES, DOC_SCHEMA_VERSION, DRAG_FIT_LEVEL, DRAG_MIN_S, DRAG_MIN_TRAVEL_FRAC, type Destination, type Digest, type DigestImageRef, type DigestPlan, type DigestTakeFacts, type DocFeature, type DocSegment, type Drag, type DuckOptions, ELAPSED_PLACEHOLDER, END_CARD_FROM, END_CARD_RECEDE, END_CARD_SECONDS, ENTRANCE_SECONDS, EXPORT_RESOLUTION_OPTIONS, EXPORT_SHORT_EDGE, type EndCard, type EnvelopePoint, type ExportResolution, type ExtractClickOptions, FOLLOW_RECENTER, FOLLOW_SAFE_RATIO, FOOTAGE_FRAME_STYLE, FRAME_BORDER_COLOR_DEFAULT, FRAME_BORDER_DEFAULT, FRAME_BORDER_WIDTH_DEFAULT, FREEZE_DEFAULT_SECONDS, FREEZE_SECONDS_MAX, FREEZE_SECONDS_MIN, type FocusBounds, type FollowEvent, type FollowOptions, type FrameEntrance, type FrameGeometry, type FrameStyle, type FreezeExtent, type FreezeSpan, HOLD_DRIFT_MAX, HOUSE_GRADIENT, HOUSE_REGISTER, HTML_LAYER_FOREIGN_FIELDS, HTML_LAYER_MAX_BYTES, HTML_LAYER_SVG_CODE, HTML_LAYER_WARN_BYTES, HTML_STARTERS, type HtmlLayerFace, type HtmlLayerInlineFace, type HtmlLayerPayload, type HtmlLayerProblem, type HtmlLayerProblemCode, type HtmlLayerSource, type HtmlOverlayClip, type HtmlOverlayFont, type HtmlStarter, IDLE_KINDS, type IdleKind, type IngestOptions, LAYER_CARD_SHADOW, LAYOUT_FRAME_FIELDS, LOOK_KINDS, type LayerCard, type LayoutParts, type Look, type LookBrand, type LookKind, type LookPlacement, type LowerProgramOptions, type LoweredAudioClip, type LoweredClick, type LoweredComposition, type LoweredZoomSpan, type LumaGrid, MEDIA_ENTER_KINDS, MEDIA_EXIT_KINDS, MEDIA_FRAME_KEYS, MEDIA_KEY_PREFIX, MINIMAL_BAR_THEMES, MOTION_DELTA, MOTION_EASE, type Media, type MediaFrame, type MediaFrameKey, type MediaOverlayClip, type MediaSegment, type MicRms, type MinimalBarTheme, type Moment, type MomentKind, type MomentsOptions, type MotionKey, type MotionPose, type MotionPose3D, type MusicBedInput, NORMALIZE_MAX_LIFT_DB, NORMALIZE_MAX_LUFS, NORMALIZE_MIN_LUFS, NORMALIZE_PEAK_CEILING_DB, type NormRect, OBJECT_DEFAULT_SCALE, OVERLAY_FONT_FACES, OVERLAY_LINE_HEIGHT, OVERLAY_MEDIA_DEFAULT_RADIUS, OVERLAY_MEDIA_DEFAULT_WIDTH, OVERLAY_MIN_DURATION, OVERLAY_SCALE_MAX, OVERLAY_SIZE_MAX, OVERLAY_SIZE_MIN, OVERLAY_TRANSITION_DUR, OVERLAY_Z, type ObjectAnimation, type ObjectAsset, type ObjectClip, type ObjectPrimitiveShape, type OverlayAnchor, type OverlayClip, type OverlayFontFace, type OverlayKind, type OverlayPin, type OverlayPresetStyle, type OverlayRect, type OverlayTransform, type OverlayTransition, PIN_GAP, PIN_MARGIN, PLATE_GROUND, PLAYBACK_ACTIVITY, PRIMARY_MEDIA, PROGRAM_RETIME, PUMP_REST, type PinCandidate, type PinCarry, type PinMark, type PinPlacement, type PinPlacementInput, type PinReferent, type PinSide, type PinSideResolved, type PlanOptions, type PlanTiltOptions, type PlaneSize, type ProgramAnchorDoc, type ProgramTweenEdit, type ProjectDoc, type PxRect, REJECT_OVERLAP, REST_TILT_ID, RETIRED_ZOOM_STYLES, type RecordingArtifact, type RecordingMeta, type RecordingNotice, type RecordingOutput, type RecordingPageMedia, type RecordingSkip, type Rect, type RejectedLane, type RejectedSpan, type ResolvedOverlayBox, type ResolvedOverlayStyle, type Rgb, SCENE_MOTION, SCENE_QUIET, SEGMENT_ENTER_KINDS, SEGMENT_EXIT_KINDS, SPEED_RATE_MAX, SPEED_RATE_MIN, SPEED_SPAN_MIN, STAGE_CLIP_PREFIX, STILL_DEFAULT, STUDIO_ENTRY_ID, STYLE_FIELDS, type SegmentExtent, type SmoothOptions, type SmoothPoint, type SpeedParams, type SpeedSpan, type StepAnchor, type StepSpan, type StudioAudioPlan, type StudioDoc, type StudioEntry, type StyleField, type StyledText, TEXT3D_DEPTH_DEFAULT, TEXT3D_DEPTH_MAX, TEXT3D_DEPTH_MIN, TEXT_ENTER_KINDS, TEXT_EXIT_KINDS, TEXT_PRESETS, TILT_AUTO_DEAD_ZONE, TILT_AUTO_MIN, TILT_CHAIN_GAP, TILT_DEG_MAX, TILT_EASE, TILT_INTENSITY_MAX, TILT_PAN, TILT_PAN_EASE, TILT_RAMP_IN, TILT_RAMP_OUT, TILT_SPAN_MIN, TILT_UI_DEG_MAX, TRANSITION_SECONDS, TRANSITION_SECONDS_MAX, TRANSITION_SECONDS_MIN, TRANSITION_SPEED_MULT, type TemplateAnchor, type Text3dMaterial, type TextFxDirection, type TextFxKind, type TextFxSpec, type TextFxUnit, type TextOverlayBox, type TextOverlayClip, type TextOverlayPreset, type TextOverlayStroke, type TiltPersonality, type TiltSpan, type TiltStyleName, type TraceFileKind, type TraceOptions, type TraceResult, type TranscriptSegment, type Transition, type TransitionKind, type TransitionMove, type TransitionOut, type TransitionSpeed, type UsedFeature, WINDOW_FOCUS_MIN, ZOOM_CHAIN_GAP, ZOOM_EASE, ZOOM_LEVELS, ZOOM_LEVEL_MAX, ZOOM_LEVEL_MIN, ZOOM_PAN, ZOOM_PAN_EASE, ZOOM_RAMP_IN, ZOOM_RAMP_IN_OVERLAP, ZOOM_RAMP_OUT, ZOOM_SPAN_MIN, ZOOM_STYLES, ZOOM_STYLE_OPTIONS, type ZipEntry, type ZoomScreen, type ZoomSpan, type ZoomStyleName, type ZoomStyleParams, type ZoomView, type ZoomWindow, ambientDrift, anchorKindOf, anchorSourceDuration, anchoredClip, animStep, applyLook, applyTemplate, aspectRatioValue, audioLane, backdropMedia, bakeDocFeatures, boldWeightFor, buildDigest, calloutBox, calloutClip, calloutGroundOf, calloutLook, calloutSource, camBubbleRect, camBubbleRectAt, camLane, camMoveLane, camRectFromPose, camRestPose, camTrackFromDoc, cameraCentring, cameraModel, cardEnter, cardExit, cardFields, cardInset, cardPointToScreen, cardPoseTrack, changedRegion, clampCamFrac, clampCamSize, clampFocus, clampFreezeSeconds, clampSpeedRate, clampTiltDeg, clampZoomLevel, clipEnvelope, clipGain, clipLength, clipsFrom, compareVersions, computeCardLayout, computeMicRms, computePeaks, copyLayout, copyStyle, cropBox, cssFamilies, cssWeights, cursorFromCsv, cursorFromPlaywrightTrace, cursorFromRecords, cursorFromTrace, cursorIdleFade, deltaE, deriveViewportCrop, destinationById, destinationsForChannel, docCardLayout, docFeatures, docFreezes, docMediaList, docOutputDuration, docRestTime, docStillTime, docToCropSpace, docToFullSpace, docTransitions, docZoomTrack, dragsFromTrack, dropTemplate, duckCurve, effectiveSegments, elapsedFor, endCardClips, enterKey, enterOf, entranceAt, entranceEnd, entranceSeconds, envelopeAt, envelopeValueAt, exitKey, exitOf, exitSeconds, expandEndCard, expectedFrameSize, exportSizeFor, extractClicks, featuresNewerThan, findStep, focusBounds, focusForViewportCentre, followFocusEvents, formatElapsed, frameGeometry, freezeLane, freezeOutputExtents, hasElapsed, hexToRgb, hexToRgbTriplet, houseLook, htmlLayerBleed, htmlLayerBleedFor, htmlLayerFaces, htmlLayerKey, htmlLayerLabel, htmlLayerPayload, htmlLayerPictureBox, htmlLayerProblems, htmlLayerSvg, htmlLayerText, htmlLayerUnhostedFamilies, htmlLayerWidth, htmlStarterClip, idleGaps, idleKey, isKeyedOverlay, isLookKind, isLoweredRecording, isMusicBed, isPlayback, isProgramDoc, isRecordingDoc, isRejected, isStageClip, isUnitStep, lastLayerEnd, layerMedia, layoutOf, levelForFocusFraction, liveZoomStyleName, lookFromBrand, lookKindForGround, loudnessMatches, lowerProgramDoc, lowerStudioDoc, lowerToComposition, marksEmphasis, mediaAtOutput, mediaDuration, mediaFrame, mediaKey, mediaRef, mediaRefId, mediaSource, micLane, migrateHostedDoc, migrateMotion, migrateText, migrateTextClip, migrateZoomStyle, momentsFromDoc, motionTrack, musicBedClip, nextMediaId, normalizeCaptureSpace, objectMotionBase, objectMotionPoseAt, objectsLane, outputDurationOf, outputEnd, outputRangeToSource, overlapFraction, overlayFaceFor, overlayFontFaces, overlayFontString, overlayFxSpec, overlayHit, overlayLines, overlayMotionBase, overlayMotionPoseAt, overlayPinPoseAt, overlayPlainText, overlayRect, overlaysLane, ownFreezes, pageDisplayUrl, parseCssColour, parsePoseId, pickChange, pickStyle, pinBox, pinCandidates, pinPlacement, pinRectOnScreen, pinReferent, pinReferentAt, placeFreezes, planAutoSpeed, planAutoTilt, planAutoZoom, planForDigest, planeSizeAtDepth, platformBarKind, playwrightTraceEntry, programDuration, programStillTime, projectFromArtifact, pumpFreeChainGap, ratedSegments, recommendedExportResolution, refillAudioBeds, rejectSpan, relativeLuminance, removeSourceRange, removeSpeedInRange, resolveAnchor, resolveExportSize, resolveOverlayAnchors, resolveOverlayBox, resolveOverlayStyle, resolvePins, resolveText3dAsset, resolveZoomStyle, restLeanOf, restSpansThroughTransitions, rgbToHex, sameMedia, sceneChanges, scrollRuns, segmentOutputExtents, outputLen as segmentOutputLen, segmentStarts, setSpeedInRange, slideSide, smoothCursor, snapRunWeight, sourceMomentToOutput, spanOutputExtent, speedLane, stepElapsedMs, studioAudioPlan, studioEntry, studioLayerData, styledTextOf, textRunsOf, tiltLane, tiltTrackFromDoc, traceKindOf, transitionMult, transitionSeconds, unionFitLevel, unionRect, videoLane, voiceKey, wellFormedXml, withBackdrop, withFreezes, withHolds, withoutRejected, wrapProgramLength, zipEntries, zipEntryBytes, zoomCoversRect, zoomLane, zoomSpanForRange, zoomTrackFromDoc, zoomView, zoomViewport, zoomWindow };
|