@scenerok/sdk 0.8.0 → 0.10.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 +63 -1
- package/dist/describe.d.ts +87 -0
- package/dist/describe.d.ts.map +1 -0
- package/dist/describe.js +210 -0
- package/dist/duration.d.ts +9 -3
- package/dist/duration.d.ts.map +1 -1
- package/dist/duration.js +22 -5
- package/dist/frame-rate.d.ts +30 -0
- package/dist/frame-rate.d.ts.map +1 -0
- package/dist/frame-rate.js +73 -0
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/ir-builder.d.ts +61 -8
- package/dist/ir-builder.d.ts.map +1 -1
- package/dist/ir-builder.js +714 -256
- package/dist/ir.d.ts +203 -2
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js +4 -2
- package/dist/media.d.ts +49 -5
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +223 -33
- package/dist/motion-tracks.d.ts +10 -0
- package/dist/motion-tracks.d.ts.map +1 -0
- package/dist/motion-tracks.js +150 -0
- package/dist/motion.d.ts +34 -0
- package/dist/motion.d.ts.map +1 -1
- package/dist/motion.js +51 -11
- package/dist/plugins/invoke.d.ts.map +1 -1
- package/dist/plugins/invoke.js +5 -2
- package/dist/timeline.d.ts +3 -0
- package/dist/timeline.d.ts.map +1 -1
- package/dist/timeline.js +101 -41
- package/dist/types.d.ts +214 -28
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -9
- package/package.json +2 -2
- package/skills/scenerok/SKILL.md +5 -2
- package/skills/scenerok/references/catalog-index.json +1 -1
- package/skills/scenerok/references/editing-actions.md +43 -1
- package/skills/scenerok/references/sdk-guide.md +149 -49
- package/skills/scenerok/references/vidscript-guide.md +49 -13
- package/skills/scenerok/references/vidscript-strict.md +1 -1
package/dist/ir.d.ts
CHANGED
|
@@ -1,16 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* IRTimeline contract —
|
|
3
|
-
* Keep
|
|
2
|
+
* IRTimeline contract — a copy of the platform's `src/types/ir.ts` so the SDK
|
|
3
|
+
* ships standalone. Keep the two in sync: Pass 2 (preview and render) consumes
|
|
4
|
+
* this shape, and `src/lib/sdk-runtime/ir-parity.unit.test.ts` fails when they
|
|
5
|
+
* drift.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Source-text correlation for timeline editing. When present, records the
|
|
9
|
+
* character-offset span of the originating `[ ... ]` timespec in the VidScript
|
|
10
|
+
* source (`start` is the offset of the `[`). Used by the editor timeline to map
|
|
11
|
+
* IR elements back to their source block for surgical start/end edits. Additive
|
|
12
|
+
* metadata only — never affects rendering.
|
|
4
13
|
*/
|
|
5
14
|
export interface IRSourceTimespec {
|
|
6
15
|
start: number;
|
|
7
16
|
end: number;
|
|
8
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* A rectangle of the picture to show, in pixels from its top-left. A clip's is
|
|
20
|
+
* in its source's pixels; a group's is in its target's. The drawn size stays
|
|
21
|
+
* `width` × `height` of the item; the crop picks which part fills it.
|
|
22
|
+
*/
|
|
23
|
+
export interface IRCrop {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
width: number;
|
|
27
|
+
height: number;
|
|
28
|
+
}
|
|
29
|
+
/** How a matte's picture scales the item below it: its alpha, its luminance, or one minus its alpha. */
|
|
30
|
+
export type IRMaskMode = 'alpha' | 'luma' | 'inverted';
|
|
9
31
|
export interface IRTimeline {
|
|
10
32
|
version: 1;
|
|
11
33
|
width: number;
|
|
12
34
|
height: number;
|
|
13
35
|
fps: number;
|
|
36
|
+
/**
|
|
37
|
+
* Exact frame duration `num / den` seconds, set only when `fps` is a
|
|
38
|
+
* non-integer NTSC rate (23.976 is `{ num: 1001, den: 24000 }`). Absent for
|
|
39
|
+
* integer fps. `fps` stays the nominal number.
|
|
40
|
+
*/
|
|
41
|
+
timeBase?: {
|
|
42
|
+
num: number;
|
|
43
|
+
den: number;
|
|
44
|
+
};
|
|
14
45
|
duration: number;
|
|
15
46
|
background: string;
|
|
16
47
|
clips: IRClip[];
|
|
@@ -19,17 +50,121 @@ export interface IRTimeline {
|
|
|
19
50
|
effects: IREffect[];
|
|
20
51
|
audio: IRAudioTrack[];
|
|
21
52
|
output: IROutput;
|
|
53
|
+
/** Closed items rendered offscreen and drawn as one clip (plan-v1/39 §6). */
|
|
54
|
+
groups?: IRGroup[];
|
|
55
|
+
/** Named instants (`marker(...)`). Timeline data only — never affects rendering. */
|
|
56
|
+
markers?: IRMarker[];
|
|
57
|
+
/** Resolved extents of `use <timeline>` statements — additive metadata for editor tooling, never affects rendering. */
|
|
22
58
|
timelineUses?: IRTimelineUse[];
|
|
23
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* A named time on the timeline (`marker("act 2")`). Markers carry editorial
|
|
62
|
+
* meaning (chapters, act breaks, sync points) and are exported as OTIO markers;
|
|
63
|
+
* no renderer reads them.
|
|
64
|
+
*/
|
|
65
|
+
export interface IRMarker {
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
/** Seconds from the timeline start. */
|
|
69
|
+
time: number;
|
|
70
|
+
duration: number;
|
|
71
|
+
metadata?: Record<string, unknown>;
|
|
72
|
+
/** Source `[ ... ]` offset span of the originating block (timeline editing). */
|
|
73
|
+
sourceTimespec?: IRSourceTimespec;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A set of items rendered into an offscreen picture, then drawn into its
|
|
77
|
+
* parent as one textured quad (plan-v1/39 §6). Children are in group-local
|
|
78
|
+
* time: 0 is `start`. Audio never lives in a group; it shifts into `ir.audio`
|
|
79
|
+
* at the placement offset.
|
|
80
|
+
*/
|
|
81
|
+
export interface IRGroup {
|
|
82
|
+
id: string;
|
|
83
|
+
start: number;
|
|
84
|
+
end: number;
|
|
85
|
+
clips: IRClip[];
|
|
86
|
+
layers: IRLayer[];
|
|
87
|
+
surfaces: IRSurface[];
|
|
88
|
+
groups?: IRGroup[];
|
|
89
|
+
/** Graded on the group's picture only, before it is drawn into the parent. */
|
|
90
|
+
effects?: IREffect[];
|
|
91
|
+
/** Picture size of the offscreen target, in output pixels. */
|
|
92
|
+
width: number;
|
|
93
|
+
height: number;
|
|
94
|
+
/**
|
|
95
|
+
* Size the picture is drawn at in the parent when it differs from the target
|
|
96
|
+
* (`width:` / `height:` on a placed value scale the picture; children stay
|
|
97
|
+
* laid out in `width` × `height`).
|
|
98
|
+
*/
|
|
99
|
+
displayWidth?: number;
|
|
100
|
+
displayHeight?: number;
|
|
101
|
+
/** Placement of the picture in the parent, same meaning as IRClip. */
|
|
102
|
+
x: number;
|
|
103
|
+
y: number;
|
|
104
|
+
opacity: number;
|
|
105
|
+
/** Blend mode over the parent's picture below (`Composite` modes). */
|
|
106
|
+
blend?: string;
|
|
107
|
+
/** Rounded-corner radius in output pixels. */
|
|
108
|
+
radius?: number;
|
|
109
|
+
/** Four corner points in the parent's output pixels, TL → TR → BR → BL. */
|
|
110
|
+
corners?: [number, number][];
|
|
111
|
+
/** Part of the target to show, in target pixels (`Crop`). */
|
|
112
|
+
crop?: IRCrop;
|
|
113
|
+
/**
|
|
114
|
+
* The matte, rendered into a target of its own and sampled over the picture
|
|
115
|
+
* (`Mask`). `group` is in this group's local time and target pixels; its own
|
|
116
|
+
* placement fields are unused.
|
|
117
|
+
*/
|
|
118
|
+
mask?: {
|
|
119
|
+
group: IRGroup;
|
|
120
|
+
mode: IRMaskMode;
|
|
121
|
+
};
|
|
122
|
+
motion?: IRMotionTrack[];
|
|
123
|
+
animations?: IRAnimation[];
|
|
124
|
+
/** Blur the group's own motion by accumulating sub-frames (`motion_blur:`). */
|
|
125
|
+
motionBlur?: IRMotionBlur;
|
|
126
|
+
/** Source `[ ... ]` offset span of the originating block (timeline editing). */
|
|
127
|
+
sourceTimespec?: IRSourceTimespec;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Sub-frame accumulation for an item's own motion. `shutter` is the exposure
|
|
131
|
+
* as an angle (360 = the whole frame interval), `samples` the sub-frames
|
|
132
|
+
* averaged; each sample is another render of the frame.
|
|
133
|
+
*/
|
|
134
|
+
export interface IRMotionBlur {
|
|
135
|
+
shutter: number;
|
|
136
|
+
samples: number;
|
|
137
|
+
}
|
|
24
138
|
export interface IRTimelineUse {
|
|
139
|
+
/** Timeline name as referenced at the use site. */
|
|
25
140
|
name: string;
|
|
141
|
+
/** Character offset of the use statement's `at` time spec in source. */
|
|
26
142
|
sourceOffset: number;
|
|
27
143
|
start: number;
|
|
28
144
|
end: number;
|
|
29
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* A clip whose `source` is a numbered-file pattern (`shot.%04d.png`) rather than
|
|
148
|
+
* one media file. Source time maps to a frame file through `clip-time.ts`.
|
|
149
|
+
*/
|
|
150
|
+
export interface IRImageSequence {
|
|
151
|
+
/** Number in the first frame's file name. */
|
|
152
|
+
first: number;
|
|
153
|
+
/** How many numbered frames exist, from `first`. */
|
|
154
|
+
count: number;
|
|
155
|
+
/** Frames per second of the sequence. Omitted: the output fps. */
|
|
156
|
+
rate?: number;
|
|
157
|
+
}
|
|
30
158
|
export interface IRClip {
|
|
31
159
|
id: string;
|
|
32
160
|
source: string;
|
|
161
|
+
/** Present when `source` is a frame-file pattern (`input frames = "shot.%04d.png"`). */
|
|
162
|
+
sequence?: IRImageSequence;
|
|
163
|
+
/**
|
|
164
|
+
* Frame rate the video source is interpreted at (`input a = "x.mp4", rate: 23.976`).
|
|
165
|
+
* Source time is conformed to that frame grid before sampling. Omitted: the file's own rate, unconformed.
|
|
166
|
+
*/
|
|
167
|
+
sourceRate?: number;
|
|
33
168
|
start: number;
|
|
34
169
|
end: number;
|
|
35
170
|
trimStart: number;
|
|
@@ -41,11 +176,38 @@ export interface IRClip {
|
|
|
41
176
|
height: number;
|
|
42
177
|
x: number;
|
|
43
178
|
y: number;
|
|
179
|
+
/** Rounded-corner radius in output pixels (`video …, radius:`). */
|
|
180
|
+
radius?: number;
|
|
181
|
+
/** Four corner points in output pixels, TL → TR → BR → BL (`video …, corners:`). */
|
|
182
|
+
corners?: [number, number][];
|
|
183
|
+
/** Part of the source to show, in source pixels (`Crop`); `width` × `height` stay the drawn size. */
|
|
184
|
+
crop?: IRCrop;
|
|
185
|
+
/** Per-clip grade (`filter …, target: a` and `input_colorspace`/`output_colorspace`). */
|
|
186
|
+
effects?: IREffect[];
|
|
187
|
+
/** Color-space conversion applied to this clip only. */
|
|
188
|
+
colorspace?: {
|
|
189
|
+
input?: string;
|
|
190
|
+
output?: string;
|
|
191
|
+
};
|
|
44
192
|
animations?: IRAnimation[];
|
|
45
193
|
motion?: IRMotionTrack[];
|
|
194
|
+
/** Blur the clip's own motion by accumulating sub-frames (`motion_blur:`). */
|
|
195
|
+
motionBlur?: IRMotionBlur;
|
|
196
|
+
/** Source `[ ... ]` offset span of the originating block (timeline editing). */
|
|
46
197
|
sourceTimespec?: IRSourceTimespec;
|
|
198
|
+
/**
|
|
199
|
+
* The source file was missing at compile time (`output ..., allow_offline: true`).
|
|
200
|
+
* `source` is kept for relinking and OTIO export, but nothing may fetch, decode, or
|
|
201
|
+
* draw it: the compiler emits a `solid` surface and a text label over the same span
|
|
202
|
+
* as the slate. Every media path skips an offline clip (`isOfflineClip`).
|
|
203
|
+
*/
|
|
204
|
+
offline?: boolean;
|
|
47
205
|
}
|
|
48
206
|
export type IRLayer = IRTextLayer | IRVideoOverlayLayer | IRCompositeLayer;
|
|
207
|
+
/**
|
|
208
|
+
* Future unified surface abstraction.
|
|
209
|
+
* For now this is aspirational — existing layers will gradually migrate toward it.
|
|
210
|
+
*/
|
|
49
211
|
export interface IRSurface {
|
|
50
212
|
id: string;
|
|
51
213
|
type: 'text' | 'video' | 'image' | 'mesh' | 'lottie' | string;
|
|
@@ -65,9 +227,13 @@ export interface IRTextLayer {
|
|
|
65
227
|
start: number;
|
|
66
228
|
end: number;
|
|
67
229
|
style: IRTextStyle;
|
|
230
|
+
/** Structured animations (preferred over the legacy `style.animation` string) */
|
|
68
231
|
animations?: IRAnimation[];
|
|
232
|
+
/** Property/keyframe motion tracks shared by preview and render engines */
|
|
69
233
|
motion?: IRMotionTrack[];
|
|
234
|
+
/** Phase 3: Effects attached to this text surface */
|
|
70
235
|
effects?: IREffect[];
|
|
236
|
+
/** Source `[ ... ]` offset span of the originating block (timeline editing). */
|
|
71
237
|
sourceTimespec?: IRSourceTimespec;
|
|
72
238
|
}
|
|
73
239
|
export interface IRTextStyle {
|
|
@@ -78,6 +244,7 @@ export interface IRTextStyle {
|
|
|
78
244
|
stroke: string;
|
|
79
245
|
strokeWidth: number;
|
|
80
246
|
position: string;
|
|
247
|
+
/** @deprecated Use `animations` instead. Kept for backward compatibility. */
|
|
81
248
|
animation?: string;
|
|
82
249
|
bold: boolean;
|
|
83
250
|
italic: boolean;
|
|
@@ -92,6 +259,8 @@ export interface IRTextStyle {
|
|
|
92
259
|
shadowBlur: number;
|
|
93
260
|
shadowOffsetX: number;
|
|
94
261
|
shadowOffsetY: number;
|
|
262
|
+
/** Per-token reveal: `text …, stagger: "word" | "char"`. */
|
|
263
|
+
stagger?: 'word' | 'char';
|
|
95
264
|
fit?: 'none' | 'wrap' | 'shrink' | 'wrap-shrink';
|
|
96
265
|
overflow?: 'contain' | 'crop' | 'allow';
|
|
97
266
|
safeArea?: number | string;
|
|
@@ -100,9 +269,15 @@ export interface IRTextStyle {
|
|
|
100
269
|
maxLines?: number;
|
|
101
270
|
anchor?: 'left' | 'center' | 'right' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
102
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Animation descriptor. Produced by animation plugins (e.g. basic-animations).
|
|
274
|
+
* The renderer (preview + final) is responsible for interpreting these.
|
|
275
|
+
*/
|
|
103
276
|
export interface IRAnimation {
|
|
104
277
|
id: string;
|
|
278
|
+
/** Animation type, e.g. "fade", "slideY", "scale", "kenBurns", or plugin-specific */
|
|
105
279
|
type: string;
|
|
280
|
+
/** Which plugin produced this animation (for debugging + future versioning) */
|
|
106
281
|
plugin?: string;
|
|
107
282
|
from: Record<string, unknown>;
|
|
108
283
|
to: Record<string, unknown>;
|
|
@@ -140,7 +315,9 @@ export interface IRVideoOverlayLayer {
|
|
|
140
315
|
x: number;
|
|
141
316
|
y: number;
|
|
142
317
|
opacity: number;
|
|
318
|
+
/** Phase 3: Effects attached to this video overlay surface */
|
|
143
319
|
effects?: IREffect[];
|
|
320
|
+
/** Source `[ ... ]` offset span of the originating block (timeline editing). */
|
|
144
321
|
sourceTimespec?: IRSourceTimespec;
|
|
145
322
|
}
|
|
146
323
|
export interface IRCompositeLayer {
|
|
@@ -154,6 +331,7 @@ export interface IRCompositeLayer {
|
|
|
154
331
|
y: number;
|
|
155
332
|
opacity: number;
|
|
156
333
|
mode: string;
|
|
334
|
+
/** Source `[ ... ]` offset span of the originating block (timeline editing). */
|
|
157
335
|
sourceTimespec?: IRSourceTimespec;
|
|
158
336
|
}
|
|
159
337
|
export type IREffect = IRBuiltinEffect | IRShaderEffect;
|
|
@@ -164,6 +342,7 @@ export interface IRBuiltinEffect {
|
|
|
164
342
|
start: number;
|
|
165
343
|
end: number;
|
|
166
344
|
params: Record<string, number | string>;
|
|
345
|
+
/** Phase 3: animations targeting specific param keys (e.g. grayscale intensity) */
|
|
167
346
|
animations?: IRAnimation[];
|
|
168
347
|
motion?: IRMotionTrack[];
|
|
169
348
|
}
|
|
@@ -174,6 +353,7 @@ export interface IRShaderEffect {
|
|
|
174
353
|
start: number;
|
|
175
354
|
end: number;
|
|
176
355
|
params: Record<string, number | string>;
|
|
356
|
+
/** Phase 3: animations targeting specific param keys */
|
|
177
357
|
animations?: IRAnimation[];
|
|
178
358
|
motion?: IRMotionTrack[];
|
|
179
359
|
}
|
|
@@ -185,10 +365,23 @@ export interface IRAudioTrack {
|
|
|
185
365
|
volume: number;
|
|
186
366
|
fadeIn: number;
|
|
187
367
|
fadeOut: number;
|
|
368
|
+
/** Source in-point in seconds (`audio …, trim_start:`). Playback starts this far into the file. */
|
|
369
|
+
sourceOffset?: number;
|
|
370
|
+
/** Stereo placement in [-1, 1] (`audio …, pan:`). Constant-power panning. */
|
|
371
|
+
pan?: number;
|
|
372
|
+
/**
|
|
373
|
+
* Source path of a track that ducks this one (`audio …, duck_under:`).
|
|
374
|
+
* While that track plays, this bed is pulled down by the shared gain curve.
|
|
375
|
+
*/
|
|
376
|
+
duckUnder?: string;
|
|
377
|
+
/** Gain automation (`audio …, animate: { type: "volume", … }`). */
|
|
378
|
+
motion?: IRMotionTrack[];
|
|
379
|
+
animations?: IRAnimation[];
|
|
188
380
|
loudnessNormalization?: 'ebu-r128';
|
|
189
381
|
targetLufs?: number;
|
|
190
382
|
truePeakDb?: number;
|
|
191
383
|
loudnessRangeLufs?: number;
|
|
384
|
+
/** Source `[ ... ]` offset span of the originating block (timeline editing). */
|
|
192
385
|
sourceTimespec?: IRSourceTimespec;
|
|
193
386
|
}
|
|
194
387
|
export interface IROutput {
|
|
@@ -198,6 +391,14 @@ export interface IROutput {
|
|
|
198
391
|
bitrate: string;
|
|
199
392
|
resolution: string;
|
|
200
393
|
fps: number;
|
|
394
|
+
/** `output ..., alpha: true`: encode the alpha channel (`mov` ProRes 4444 or `webm` VP9). */
|
|
395
|
+
alpha?: boolean;
|
|
396
|
+
/** `output ..., start_timecode: "HH:MM:SS:FF"`: timecode of the first frame (non-drop-frame). */
|
|
397
|
+
startTimecode?: string;
|
|
398
|
+
/** `output ..., burn_in: "timecode"`: draw the running timecode onto the picture. */
|
|
399
|
+
burnIn?: 'timecode';
|
|
400
|
+
/** `output ..., allow_offline: true`: an input whose file is missing at compile time becomes an offline slate instead of an error. */
|
|
401
|
+
allowOffline?: boolean;
|
|
201
402
|
}
|
|
202
403
|
export declare function defaultIROutput(): IROutput;
|
|
203
404
|
export declare function defaultIRTimeline(): IRTimeline;
|
package/dist/ir.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"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"}
|
package/dist/ir.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* IRTimeline contract —
|
|
3
|
-
* Keep
|
|
2
|
+
* IRTimeline contract — a copy of the platform's `src/types/ir.ts` so the SDK
|
|
3
|
+
* ships standalone. Keep the two in sync: Pass 2 (preview and render) consumes
|
|
4
|
+
* this shape, and `src/lib/sdk-runtime/ir-parity.unit.test.ts` fails when they
|
|
5
|
+
* drift.
|
|
4
6
|
*/
|
|
5
7
|
export function defaultIROutput() {
|
|
6
8
|
return {
|
package/dist/media.d.ts
CHANGED
|
@@ -1,15 +1,59 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { type TimeInput } from './duration.js';
|
|
2
|
+
import type { IRCrop } from './ir.js';
|
|
3
|
+
import { type AudioOptions, type AudioTrack, type ClipEdits, type FilterEffect, type GapNode, type ImageClip, type ImageOptions, type ImageSequenceOptions, type MarkerNode, type MaskOptions, type MaskSpec, type PictureNode, type ShaderEffect, type SolidNode, type SolidOptions, type TextLayer, type TextOptions, type VideoClip, type VideoOptions } from './types.js';
|
|
4
|
+
/** Length of a still or text appended with `push` and no explicit duration. */
|
|
5
|
+
export declare const DEFAULT_STILL_LENGTH = 3;
|
|
6
|
+
/**
|
|
7
|
+
* A trim on a trimmed value is relative to what the first kept:
|
|
8
|
+
* `clip.trim(10, 20).trim(2, 4)` plays source 12–14 s. Past the kept range is an error.
|
|
9
|
+
*/
|
|
10
|
+
export declare function composeTrim(previous: {
|
|
11
|
+
trimStart?: number;
|
|
12
|
+
trimEnd?: number;
|
|
13
|
+
}, start: TimeInput | undefined, end: TimeInput | undefined): {
|
|
14
|
+
trimStart: number;
|
|
15
|
+
trimEnd: number;
|
|
16
|
+
};
|
|
17
|
+
/** A crop on a cropped value is relative to the first, like `trim`. */
|
|
18
|
+
export declare function composeCrop(previous: IRCrop | undefined, x: number, y: number, width: number, height: number): IRCrop;
|
|
19
|
+
export declare function makeMask(matte: PictureNode, options?: MaskOptions): MaskSpec;
|
|
20
|
+
/** A grade scoped to one value. LUTs read a file at compile time, so they stay a VidScript statement. */
|
|
21
|
+
export declare function makeClipEffect(name: string, params?: Record<string, number | string>): {
|
|
22
|
+
type: "builtin";
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
start: number;
|
|
26
|
+
end: number;
|
|
27
|
+
params: {
|
|
28
|
+
[x: string]: string | number;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/** How long a clip plays: the source range at `|speed|`, `loop` times; 0 when unknown. */
|
|
32
|
+
export declare function playedLength(edits: ClipEdits, mediaDuration: number | undefined): number;
|
|
33
|
+
/** A video clip from a path/URL. Pass `duration` when the asset is not probed yet. */
|
|
3
34
|
export declare function video(source: string, options?: VideoOptions): VideoClip;
|
|
4
35
|
/** Probe a video duration when omitted, then create a video clip. */
|
|
5
36
|
export declare function loadVideo(source: string, options?: VideoOptions): Promise<VideoClip>;
|
|
6
|
-
/**
|
|
37
|
+
/** A still image. It fills its placement window (`image ≤ video`). */
|
|
38
|
+
export declare function image(source: string, options?: ImageOptions): ImageClip;
|
|
39
|
+
/**
|
|
40
|
+
* A numbered-frame source (`input frames = "shot.%04d.png", count: 24, rate: 12`).
|
|
41
|
+
* Plays `count / rate` seconds; `rate` defaults to the timeline fps.
|
|
42
|
+
*/
|
|
43
|
+
export declare function imageSequence(pattern: string, options: ImageSequenceOptions): VideoClip;
|
|
44
|
+
/** A text layer. */
|
|
7
45
|
export declare function text(content: string, options?: TextOptions): TextLayer;
|
|
8
|
-
/**
|
|
46
|
+
/** An audio track. */
|
|
9
47
|
export declare function audio(source: string, options?: AudioOptions): AudioTrack;
|
|
10
48
|
/** Probe an audio duration when omitted, then create an audio track. */
|
|
11
49
|
export declare function loadAudio(source: string, options?: AudioOptions): Promise<AudioTrack>;
|
|
12
|
-
/**
|
|
50
|
+
/** A flat-colour rectangle — full frame unless sized. With `radius`/`corners` it is a shape matte. */
|
|
51
|
+
export declare function solid(color: string, options?: SolidOptions): SolidNode;
|
|
52
|
+
/** A transparent gap: `t.push(gap(), 2)` advances the playhead by 2 s. */
|
|
53
|
+
export declare function gap(): GapNode;
|
|
54
|
+
/** A named instant (`t[4][4] = marker('act 2')`). Exported as an OTIO marker; never rendered. */
|
|
55
|
+
export declare function marker(name: string, metadata?: Record<string, unknown>): MarkerNode;
|
|
56
|
+
/** Builtin post-processing filter over the frame (e.g. glow, blur). */
|
|
13
57
|
export declare function filter(name: string, params?: Record<string, number | string>): FilterEffect;
|
|
14
58
|
/** Custom GLSL shader effect. */
|
|
15
59
|
export declare function shader(shaderSource: string, params?: Record<string, number | string>): ShaderEffect;
|
package/dist/media.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"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"}
|