@argo-video/cli 0.19.0 → 0.21.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 +45 -3
- package/dist/camera-move.d.ts +53 -0
- package/dist/camera-move.d.ts.map +1 -0
- package/dist/camera-move.js +107 -0
- package/dist/camera-move.js.map +1 -0
- package/dist/camera.d.ts +9 -0
- package/dist/camera.d.ts.map +1 -1
- package/dist/camera.js +38 -0
- package/dist/camera.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +45 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/export.d.ts +13 -1
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +113 -11
- package/dist/export.js.map +1 -1
- package/dist/freeze.d.ts +59 -0
- package/dist/freeze.d.ts.map +1 -0
- package/dist/freeze.js +113 -0
- package/dist/freeze.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/media.d.ts +1 -0
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +20 -0
- package/dist/media.js.map +1 -1
- package/dist/music/musicgen.d.ts +43 -0
- package/dist/music/musicgen.d.ts.map +1 -0
- package/dist/music/musicgen.js +120 -0
- package/dist/music/musicgen.js.map +1 -0
- package/dist/narration.d.ts +10 -0
- package/dist/narration.d.ts.map +1 -1
- package/dist/narration.js +33 -1
- package/dist/narration.js.map +1 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +94 -14
- package/dist/pipeline.js.map +1 -1
- package/dist/preview.d.ts +4 -0
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +641 -9
- package/dist/preview.js.map +1 -1
- package/dist/record.d.ts.map +1 -1
- package/dist/record.js +26 -1
- package/dist/record.js.map +1 -1
- package/package.json +1 -1
package/dist/export.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Placement } from './tts/align.js';
|
|
2
|
-
import type { TransitionConfig } from './config.js';
|
|
2
|
+
import type { TransitionConfig, WatermarkConfig } from './config.js';
|
|
3
3
|
import { type Segment } from './speed-ramp.js';
|
|
4
|
+
import { type CameraMove } from './camera-move.js';
|
|
5
|
+
import { type ResolvedFreeze } from './freeze.js';
|
|
4
6
|
export interface ExportOptions {
|
|
5
7
|
demoName: string;
|
|
6
8
|
argoDir: string;
|
|
@@ -33,6 +35,16 @@ export interface ExportOptions {
|
|
|
33
35
|
speedRampSegments?: Segment[];
|
|
34
36
|
/** Apply EBU R128 loudness normalization to audio. */
|
|
35
37
|
loudnorm?: boolean;
|
|
38
|
+
/** Path to a background music file to mix under narration. */
|
|
39
|
+
musicPath?: string;
|
|
40
|
+
/** Music volume level (0.0 to 1.0). Default: 0.15. Mixed at a constant level. */
|
|
41
|
+
musicVolume?: number;
|
|
42
|
+
/** Post-export camera moves (zoom/pan) recorded during Playwright session. */
|
|
43
|
+
cameraMoves?: CameraMove[];
|
|
44
|
+
/** Resolved freeze-frame holds — applied BEFORE transitions (they change the timeline). */
|
|
45
|
+
freezeSpecs?: ResolvedFreeze[];
|
|
46
|
+
/** Watermark/brand bug overlay config. */
|
|
47
|
+
watermark?: WatermarkConfig;
|
|
36
48
|
}
|
|
37
49
|
/**
|
|
38
50
|
* Check whether ffmpeg is available on the system PATH.
|
package/dist/export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAGrE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;IACxC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iDAAiD;IACjD,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,2FAA2F;IAC3F,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAMD;;;GAGG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAYrC;AAuDD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAuYzE"}
|
package/dist/export.js
CHANGED
|
@@ -4,6 +4,9 @@ import { join } from 'node:path';
|
|
|
4
4
|
import { buildTransitionFilters } from './transitions.js';
|
|
5
5
|
import { runFfmpegWithProgress } from './progress.js';
|
|
6
6
|
import { buildSpeedRampFilter } from './speed-ramp.js';
|
|
7
|
+
import { buildCameraMoveFilter } from './camera-move.js';
|
|
8
|
+
import { buildFreezeFilter } from './freeze.js';
|
|
9
|
+
import { getVideoFrameRate } from './media.js';
|
|
7
10
|
function formatSeconds(ms) {
|
|
8
11
|
return (ms / 1000).toFixed(3).replace(/\.?0+$/, '');
|
|
9
12
|
}
|
|
@@ -112,6 +115,18 @@ export async function exportVideo(options) {
|
|
|
112
115
|
thumbInputIdx = nextInput++;
|
|
113
116
|
args.push('-i', thumbnailPath);
|
|
114
117
|
}
|
|
118
|
+
// Background music input
|
|
119
|
+
const musicPath = options.musicPath;
|
|
120
|
+
const hasMusic = musicPath && existsSync(musicPath);
|
|
121
|
+
let musicInputIdx = -1;
|
|
122
|
+
if (musicPath && !existsSync(musicPath)) {
|
|
123
|
+
console.warn(`Warning: configured music path "${musicPath}" does not exist. ` +
|
|
124
|
+
`The video will be exported without background music.`);
|
|
125
|
+
}
|
|
126
|
+
if (hasMusic) {
|
|
127
|
+
musicInputIdx = nextInput++;
|
|
128
|
+
args.push('-stream_loop', '-1', '-i', musicPath);
|
|
129
|
+
}
|
|
115
130
|
// Build video filter chain
|
|
116
131
|
const filterParts = [];
|
|
117
132
|
let videoSource = '0:v';
|
|
@@ -124,6 +139,15 @@ export async function exportVideo(options) {
|
|
|
124
139
|
videoSource = speedRampFilter.outputLabels.video;
|
|
125
140
|
audioSource = speedRampFilter.outputLabels.audio;
|
|
126
141
|
}
|
|
142
|
+
// Freeze-frame holds — applied BEFORE transitions (they shift the timeline)
|
|
143
|
+
const freezeSpecs = options.freezeSpecs;
|
|
144
|
+
if (freezeSpecs && freezeSpecs.length > 0) {
|
|
145
|
+
const freezeResult = buildFreezeFilter(freezeSpecs, options.totalDurationMs ?? 0, videoSource);
|
|
146
|
+
if (freezeResult) {
|
|
147
|
+
filterParts.push(freezeResult.filter);
|
|
148
|
+
videoSource = freezeResult.outputLabel;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
127
151
|
const vFilters = [];
|
|
128
152
|
if (tailPadMs && tailPadMs > 0) {
|
|
129
153
|
vFilters.push(`tpad=stop_mode=clone:stop_duration=${formatSeconds(tailPadMs)}`);
|
|
@@ -148,15 +172,18 @@ export async function exportVideo(options) {
|
|
|
148
172
|
// Fade transitions use filter_complex with split+concat.
|
|
149
173
|
// Apply any vFilters (scale, tpad) before the transition.
|
|
150
174
|
let fc = transitionComplex.filterComplex;
|
|
151
|
-
|
|
175
|
+
// Replace default stream refs when upstream filters (speed ramp, camera moves) change the labels
|
|
176
|
+
const hasUpstreamVideo = videoSource !== '0:v';
|
|
177
|
+
const hasUpstreamAudio = audioSource !== '1:a';
|
|
178
|
+
if (hasUpstreamVideo) {
|
|
152
179
|
fc = fc.replace('[0:v]', `[${videoSource}]`);
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
180
|
+
}
|
|
181
|
+
if (hasUpstreamAudio && transitionComplex.audioOutput) {
|
|
182
|
+
fc = fc.replace('[1:a]', `[${audioSource}]`);
|
|
156
183
|
}
|
|
157
184
|
if (vFilters.length > 0) {
|
|
158
185
|
// Prepend vFilters to the video input before split
|
|
159
|
-
const inputRef =
|
|
186
|
+
const inputRef = hasUpstreamVideo ? `[${videoSource}]` : '[0:v]';
|
|
160
187
|
fc = fc.replace(inputRef + 'split=', `${inputRef}${vFilters.join(',')},split=`);
|
|
161
188
|
}
|
|
162
189
|
filterParts.push(fc);
|
|
@@ -174,9 +201,79 @@ export async function exportVideo(options) {
|
|
|
174
201
|
args.push('-vf', vFilters.join(','));
|
|
175
202
|
}
|
|
176
203
|
}
|
|
204
|
+
// Post-export camera moves (zoom/pan) — applied AFTER transitions so that
|
|
205
|
+
// the time variable `t` is continuous across the concatenated output.
|
|
206
|
+
const cameraMoves = options.cameraMoves;
|
|
207
|
+
if (cameraMoves && cameraMoves.length > 0) {
|
|
208
|
+
const frameW = (outputWidth ?? 1920) * deviceScaleFactor;
|
|
209
|
+
const frameH = (outputHeight ?? 1080) * deviceScaleFactor;
|
|
210
|
+
const sourceFps = getVideoFrameRate(videoPath);
|
|
211
|
+
const camFilter = buildCameraMoveFilter(cameraMoves, frameW, frameH, `[${videoSource}]`, sourceFps);
|
|
212
|
+
if (camFilter) {
|
|
213
|
+
filterParts.push(camFilter.filter);
|
|
214
|
+
videoSource = camFilter.outputLabel;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Watermark overlay — applied AFTER all other video filters (last in chain)
|
|
218
|
+
const watermark = options.watermark;
|
|
219
|
+
if (watermark && watermark.src) {
|
|
220
|
+
if (!existsSync(watermark.src)) {
|
|
221
|
+
console.warn(`Warning: watermark image "${watermark.src}" does not exist. ` +
|
|
222
|
+
`The video will be exported without a watermark.`);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
const wmInputIdx = nextInput++;
|
|
226
|
+
args.push('-i', watermark.src);
|
|
227
|
+
const wmPosition = watermark.position ?? 'bottom-right';
|
|
228
|
+
const wmMargin = watermark.margin ?? 20;
|
|
229
|
+
const wmOpacity = watermark.opacity ?? 0.7;
|
|
230
|
+
// Position expressions for ffmpeg overlay filter
|
|
231
|
+
const positionMap = {
|
|
232
|
+
'top-left': `x=${wmMargin}:y=${wmMargin}`,
|
|
233
|
+
'top-right': `x=W-w-${wmMargin}:y=${wmMargin}`,
|
|
234
|
+
'bottom-left': `x=${wmMargin}:y=H-h-${wmMargin}`,
|
|
235
|
+
'bottom-right': `x=W-w-${wmMargin}:y=H-h-${wmMargin}`,
|
|
236
|
+
};
|
|
237
|
+
const posExpr = positionMap[wmPosition];
|
|
238
|
+
// Build watermark filter chain
|
|
239
|
+
const wmRef = `${wmInputIdx}:v`;
|
|
240
|
+
const needsOpacity = wmOpacity < 1.0;
|
|
241
|
+
if (needsOpacity) {
|
|
242
|
+
filterParts.push(`[${wmRef}]colorchannelmixer=aa=${wmOpacity}[wm]`);
|
|
243
|
+
}
|
|
244
|
+
const wmLabel = needsOpacity ? 'wm' : wmRef;
|
|
245
|
+
filterParts.push(`[${videoSource}][${wmLabel}]overlay=${posExpr}:format=auto[outwm]`);
|
|
246
|
+
videoSource = 'outwm';
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Background music mixing — applied before loudnorm so normalization covers the mix
|
|
250
|
+
if (hasMusic) {
|
|
251
|
+
const musicVol = options.musicVolume ?? 0.15;
|
|
252
|
+
const musicRef = `${musicInputIdx}:a`;
|
|
253
|
+
if (hasAudio && audioSource) {
|
|
254
|
+
// Mix music under narration: lower music volume, combine with amix
|
|
255
|
+
// afade on the music gives a 2s fade-out at the end (duration estimated from total)
|
|
256
|
+
const fadeFilter = totalDurationMs && totalDurationMs > 2000
|
|
257
|
+
? `,afade=t=out:st=${formatSeconds(totalDurationMs - 2000)}:d=2`
|
|
258
|
+
: '';
|
|
259
|
+
filterParts.push(`[${musicRef}]volume=${musicVol}${fadeFilter}[bgm]`);
|
|
260
|
+
filterParts.push(`[${audioSource}][bgm]amix=inputs=2:duration=first:dropout_transition=2[amixed]`);
|
|
261
|
+
audioSource = 'amixed';
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// No narration — use music as sole audio track
|
|
265
|
+
const fadeFilter = totalDurationMs && totalDurationMs > 2000
|
|
266
|
+
? `,afade=t=out:st=${formatSeconds(totalDurationMs - 2000)}:d=2`
|
|
267
|
+
: '';
|
|
268
|
+
filterParts.push(`[${musicRef}]volume=${musicVol}${fadeFilter}[bgm]`);
|
|
269
|
+
audioSource = 'bgm';
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Track whether we have any audio output (narration, music, or both)
|
|
273
|
+
const hasAnyAudio = hasAudio || hasMusic;
|
|
177
274
|
// Audio loudnorm — must be added before filter_complex is finalized
|
|
178
275
|
let useLoudnormSimple = false;
|
|
179
|
-
if (
|
|
276
|
+
if (hasAnyAudio && audioSource && options.loudnorm) {
|
|
180
277
|
if (filterParts.length > 0) {
|
|
181
278
|
// Append loudnorm inside the filter_complex audio chain
|
|
182
279
|
filterParts.push(`[${audioSource}]loudnorm=I=-16:TP=-1.5:LRA=11[anorm]`);
|
|
@@ -190,7 +287,7 @@ export async function exportVideo(options) {
|
|
|
190
287
|
args.push('-filter_complex', filterParts.join(';\n'));
|
|
191
288
|
}
|
|
192
289
|
args.push('-c:v', 'libx264', '-preset', preset, '-crf', String(crf));
|
|
193
|
-
if (
|
|
290
|
+
if (hasAnyAudio) {
|
|
194
291
|
if (useLoudnormSimple) {
|
|
195
292
|
args.push('-af', 'loudnorm=I=-16:TP=-1.5:LRA=11');
|
|
196
293
|
}
|
|
@@ -206,13 +303,13 @@ export async function exportVideo(options) {
|
|
|
206
303
|
const mapRef = (label) => (label.includes(':') ? label : `[${label}]`);
|
|
207
304
|
if (usesExplicitMaps) {
|
|
208
305
|
args.push('-map', mapRef(videoSource));
|
|
209
|
-
if (
|
|
306
|
+
if (hasAnyAudio && audioSource)
|
|
210
307
|
args.push('-map', mapRef(audioSource));
|
|
211
308
|
}
|
|
212
309
|
if (hasThumbnail) {
|
|
213
310
|
if (!usesExplicitMaps) {
|
|
214
311
|
args.push('-map', '0:v');
|
|
215
|
-
if (
|
|
312
|
+
if (hasAnyAudio)
|
|
216
313
|
args.push('-map', '1:a');
|
|
217
314
|
}
|
|
218
315
|
args.push('-map', `${thumbInputIdx}:v`);
|
|
@@ -220,8 +317,13 @@ export async function exportVideo(options) {
|
|
|
220
317
|
args.push('-c:v:1', 'png', '-disposition:v:1', 'attached_pic');
|
|
221
318
|
// Skip -shortest: the PNG has 0 duration and would truncate the whole output.
|
|
222
319
|
}
|
|
223
|
-
else if (
|
|
224
|
-
|
|
320
|
+
else if (hasAnyAudio) {
|
|
321
|
+
// Skip -shortest when freeze-frame holds extend the video beyond the audio.
|
|
322
|
+
// Freezes intentionally make video longer; -shortest would truncate back.
|
|
323
|
+
const hasFreezes = freezeSpecs && freezeSpecs.length > 0;
|
|
324
|
+
if (!hasFreezes) {
|
|
325
|
+
args.push('-shortest');
|
|
326
|
+
}
|
|
225
327
|
}
|
|
226
328
|
args.push('-y', outputPath);
|
|
227
329
|
// Use progress bar when we know the total duration
|
package/dist/export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAgB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAmB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA8C/C,SAAS,aAAa,CAAC,EAAU;IAC/B,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,6CAA6C;YAC3C,kCAAkC;YAClC,iCAAiC;YACjC,iCAAiC,CACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CACtB,OAAe,EACf,OAAe,EACf,GAAG,GAAG,EAAE,EACR,KAAK,GAAG,GAAG;IAEX,8EAA8E;IAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO,GAAG,UAAU,KAAK,8CAA8C;QAC9E,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACnF,uBAAuB;QACvB,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO,GAAG,UAAU,KAAK,mBAAmB;YACnD,IAAI,EAAE,OAAO;SACd,CAAC;QACF,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO,GAAG,UAAU,KAAK,oEAAoE;QACvG,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAClE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC7C,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAsB;IACtD,MAAM,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,GAAG,MAAM,EACf,GAAG,GAAG,EAAE,EACR,GAAG,EACH,SAAS,EACT,WAAW,EACX,YAAY,EACZ,iBAAiB,GAAG,CAAC,EACrB,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,GAClB,GAAG,OAAO,CAAC;IAEZ,WAAW,EAAE,CAAC;IAEd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;IAEtD,IAAI,aAAa,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CACV,sCAAsC,aAAa,oBAAoB;YACvE,iDAAiD,CAClD,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,qEAAqE;IACrE,IAAI,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAG,iBAAiB;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,6CAA6C;IAC3E,CAAC;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,mBAAmB,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC3E,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC;IACzB,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,GAAG,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,aAAa,GAAG,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,QAAQ,GAAG,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CACV,mCAAmC,SAAS,oBAAoB;YAChE,sDAAsD,CACvD,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,GAAG,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/C,MAAM,eAAe,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC;QACvE,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAChG,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,eAAe,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAChD,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC;QACjD,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC;IACnD,CAAC;IAED,4EAA4E;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CACpC,WAAW,EACX,OAAO,CAAC,eAAe,IAAI,CAAC,EAC5B,WAAW,CACZ,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,sCAAsC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,iBAAiB,GAAG,CAAC,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,SAAS,WAAW,IAAI,YAAY,gBAAgB,CAAC,CAAC;IACtE,CAAC;IAED,oBAAoB;IACpB,IAAI,iBAAiB,GAAsF,IAAI,CAAC;IAChH,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,4BAA4B;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;YAC1C,gEAAgE;YAChE,iBAAiB,GAAG,gBAAgB,CAAC;QACvC,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,yDAAyD;QACzD,0DAA0D;QAC1D,IAAI,EAAE,GAAG,iBAAiB,CAAC,aAAa,CAAC;QACzC,iGAAiG;QACjG,MAAM,gBAAgB,GAAG,WAAW,KAAK,KAAK,CAAC;QAC/C,MAAM,gBAAgB,GAAG,WAAW,KAAK,KAAK,CAAC;QAC/C,IAAI,gBAAgB,EAAE,CAAC;YACrB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,gBAAgB,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;YACtD,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,mDAAmD;YACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YACjE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClF,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,QAAQ,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;YAC9C,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,IAAI,eAAe,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACrE,WAAW,GAAG,WAAW,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,iBAAiB,CAAC;QACzD,MAAM,MAAM,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,iBAAiB,CAAC;QAC1D,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,WAAW,GAAG,EAAE,SAAS,CAAC,CAAC;QACpG,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACnC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACtC,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,6BAA6B,SAAS,CAAC,GAAG,oBAAoB;gBAC9D,iDAAiD,CAClD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YAE/B,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,IAAI,cAAc,CAAC;YACxD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,IAAI,GAAG,CAAC;YAE3C,iDAAiD;YACjD,MAAM,WAAW,GAA2B;gBAC1C,UAAU,EAAE,KAAK,QAAQ,MAAM,QAAQ,EAAE;gBACzC,WAAW,EAAE,SAAS,QAAQ,MAAM,QAAQ,EAAE;gBAC9C,aAAa,EAAE,KAAK,QAAQ,UAAU,QAAQ,EAAE;gBAChD,cAAc,EAAE,SAAS,QAAQ,UAAU,QAAQ,EAAE;aACtD,CAAC;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;YAExC,+BAA+B;YAC/B,MAAM,KAAK,GAAG,GAAG,UAAU,IAAI,CAAC;YAChC,MAAM,YAAY,GAAG,SAAS,GAAG,GAAG,CAAC;YAErC,IAAI,YAAY,EAAE,CAAC;gBACjB,WAAW,CAAC,IAAI,CAAC,IAAI,KAAK,yBAAyB,SAAS,MAAM,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAC5C,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,KAAK,OAAO,YAAY,OAAO,qBAAqB,CAAC,CAAC;YACtF,WAAW,GAAG,OAAO,CAAC;QACxB,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,aAAa,IAAI,CAAC;QAEtC,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;YAC5B,mEAAmE;YACnE,oFAAoF;YACpF,MAAM,UAAU,GAAG,eAAe,IAAI,eAAe,GAAG,IAAI;gBAC1D,CAAC,CAAC,mBAAmB,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;gBAChE,CAAC,CAAC,EAAE,CAAC;YACP,WAAW,CAAC,IAAI,CACd,IAAI,QAAQ,WAAW,QAAQ,GAAG,UAAU,OAAO,CACpD,CAAC;YACF,WAAW,CAAC,IAAI,CACd,IAAI,WAAW,iEAAiE,CACjF,CAAC;YACF,WAAW,GAAG,QAAQ,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,MAAM,UAAU,GAAG,eAAe,IAAI,eAAe,GAAG,IAAI;gBAC1D,CAAC,CAAC,mBAAmB,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;gBAChE,CAAC,CAAC,EAAE,CAAC;YACP,WAAW,CAAC,IAAI,CACd,IAAI,QAAQ,WAAW,QAAQ,GAAG,UAAU,OAAO,CACpD,CAAC;YACF,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC;IAEzC,oEAAoE;IACpE,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,WAAW,IAAI,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,wDAAwD;YACxD,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,uCAAuC,CAAC,CAAC;YACzE,WAAW,GAAG,OAAO,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,IAAI,CACP,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CACpB,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IAE/E,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACvC,IAAI,WAAW,IAAI,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACzB,IAAI,WAAW;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,IAAI,CAAC,CAAC;QACxC,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAC/D,8EAA8E;IAChF,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,4EAA4E;QAC5E,0EAA0E;QAC1E,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE5B,mDAAmD;IACnD,IAAI,eAAe,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC;YAC7D,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,MAAM,MAAM,CAAC,CAAC;QAElE,2CAA2C;QAC3C,MAAM,IAAI,GAAG,YAAY,IAAI,IAAI,CAAC;QAClC,IAAI,OAAe,EAAE,OAAe,CAAC;QAErC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO;YACP,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,+CAA+C;QAC/C,OAAO,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QAEpD,iEAAiE;QACjE,yEAAyE;QACzE,MAAM,UAAU,GAAG;YACjB,eAAe;YACf,aAAa,OAAO,IAAI,OAAO,8CAA8C,OAAO,IAAI,OAAO,wBAAwB;YACvH,aAAa,OAAO,IAAI,OAAO,+CAA+C;YAC9E,0CAA0C;SAC3C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEZ,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,kBAAkB,UAAU,EAAE,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,UAAU;YAChB,iBAAiB,EAAE,UAAU;YAC7B,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;YACnB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,6BAA6B,MAAM,cAAc,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/freeze.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Placement } from './tts/align.js';
|
|
2
|
+
/**
|
|
3
|
+
* Specification for a freeze-frame hold at a particular point in the timeline.
|
|
4
|
+
*/
|
|
5
|
+
export interface FreezeSpec {
|
|
6
|
+
/** Scene name this freeze belongs to. */
|
|
7
|
+
scene: string;
|
|
8
|
+
/** Offset in ms from the scene start where the frame should be frozen. */
|
|
9
|
+
atMs: number;
|
|
10
|
+
/** Duration in ms to hold the frozen frame. */
|
|
11
|
+
durationMs: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A freeze resolved to an absolute position on the (post-trim, pre-export) timeline.
|
|
15
|
+
*/
|
|
16
|
+
export interface ResolvedFreeze {
|
|
17
|
+
/** Absolute time in ms where the freeze occurs. */
|
|
18
|
+
absoluteMs: number;
|
|
19
|
+
/** Duration in ms to hold the frozen frame. */
|
|
20
|
+
durationMs: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolve scene-relative freeze specs to absolute timeline positions using placements.
|
|
24
|
+
*
|
|
25
|
+
* Freezes whose scene is not found in placements are silently dropped.
|
|
26
|
+
* The returned array is sorted chronologically.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveFreezes(freezes: FreezeSpec[], placements: Placement[]): ResolvedFreeze[];
|
|
29
|
+
/**
|
|
30
|
+
* Build an ffmpeg filter_complex expression that freezes specific frames.
|
|
31
|
+
*
|
|
32
|
+
* Strategy: split the video at each freeze point using trim, apply tpad to clone
|
|
33
|
+
* the last frame for the freeze duration, then concatenate all segments.
|
|
34
|
+
*
|
|
35
|
+
* Freezes are processed in chronological order. Each freeze adds `durationMs`
|
|
36
|
+
* to the total video length.
|
|
37
|
+
*
|
|
38
|
+
* @param freezes - Resolved freezes sorted chronologically.
|
|
39
|
+
* @param totalDurationMs - Total video duration before freezes (used for the final trim).
|
|
40
|
+
* @param inputLabel - The ffmpeg stream label for the video input (e.g. '0:v').
|
|
41
|
+
* @returns The filter expression, output label, and total added duration — or null if no freezes.
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildFreezeFilter(freezes: ResolvedFreeze[], totalDurationMs: number, inputLabel: string): {
|
|
44
|
+
filter: string;
|
|
45
|
+
outputLabel: string;
|
|
46
|
+
addedDurationMs: number;
|
|
47
|
+
} | null;
|
|
48
|
+
/**
|
|
49
|
+
* Shift placements, chapters, and subtitles forward to account for freeze-inserted duration.
|
|
50
|
+
*
|
|
51
|
+
* Each freeze at `absoluteMs` pushes everything after that point by `durationMs`.
|
|
52
|
+
* Freezes must be sorted chronologically.
|
|
53
|
+
*/
|
|
54
|
+
export declare function adjustPlacementsForFreezes(placements: Placement[], freezes: ResolvedFreeze[]): Placement[];
|
|
55
|
+
/**
|
|
56
|
+
* Compute the total duration added by all freezes.
|
|
57
|
+
*/
|
|
58
|
+
export declare function totalFreezeDurationMs(freezes: ResolvedFreeze[]): number;
|
|
59
|
+
//# sourceMappingURL=freeze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../src/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,EAAE,SAAS,EAAE,GACtB,cAAc,EAAE,CAkBlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EAAE,EACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAsDzE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,EAAE,cAAc,EAAE,GACxB,SAAS,EAAE,CAoBb;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAEvE"}
|
package/dist/freeze.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve scene-relative freeze specs to absolute timeline positions using placements.
|
|
3
|
+
*
|
|
4
|
+
* Freezes whose scene is not found in placements are silently dropped.
|
|
5
|
+
* The returned array is sorted chronologically.
|
|
6
|
+
*/
|
|
7
|
+
export function resolveFreezes(freezes, placements) {
|
|
8
|
+
const placementMap = new Map();
|
|
9
|
+
for (const p of placements) {
|
|
10
|
+
placementMap.set(p.scene, p);
|
|
11
|
+
}
|
|
12
|
+
const resolved = [];
|
|
13
|
+
for (const f of freezes) {
|
|
14
|
+
const placement = placementMap.get(f.scene);
|
|
15
|
+
if (!placement)
|
|
16
|
+
continue;
|
|
17
|
+
resolved.push({
|
|
18
|
+
absoluteMs: placement.startMs + f.atMs,
|
|
19
|
+
durationMs: f.durationMs,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
resolved.sort((a, b) => a.absoluteMs - b.absoluteMs);
|
|
23
|
+
return resolved;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Build an ffmpeg filter_complex expression that freezes specific frames.
|
|
27
|
+
*
|
|
28
|
+
* Strategy: split the video at each freeze point using trim, apply tpad to clone
|
|
29
|
+
* the last frame for the freeze duration, then concatenate all segments.
|
|
30
|
+
*
|
|
31
|
+
* Freezes are processed in chronological order. Each freeze adds `durationMs`
|
|
32
|
+
* to the total video length.
|
|
33
|
+
*
|
|
34
|
+
* @param freezes - Resolved freezes sorted chronologically.
|
|
35
|
+
* @param totalDurationMs - Total video duration before freezes (used for the final trim).
|
|
36
|
+
* @param inputLabel - The ffmpeg stream label for the video input (e.g. '0:v').
|
|
37
|
+
* @returns The filter expression, output label, and total added duration — or null if no freezes.
|
|
38
|
+
*/
|
|
39
|
+
export function buildFreezeFilter(freezes, totalDurationMs, inputLabel) {
|
|
40
|
+
if (freezes.length === 0)
|
|
41
|
+
return null;
|
|
42
|
+
const parts = [];
|
|
43
|
+
const concatLabels = [];
|
|
44
|
+
let segIndex = 0;
|
|
45
|
+
let cursor = 0; // current position in the source timeline (ms)
|
|
46
|
+
let addedDurationMs = 0;
|
|
47
|
+
for (const freeze of freezes) {
|
|
48
|
+
const freezeTimeSec = (freeze.absoluteMs / 1000).toFixed(3);
|
|
49
|
+
const freezeDurSec = (freeze.durationMs / 1000).toFixed(3);
|
|
50
|
+
// Segment before the freeze point (may be zero-length if two freezes are at the same point)
|
|
51
|
+
if (freeze.absoluteMs > cursor) {
|
|
52
|
+
const startSec = (cursor / 1000).toFixed(3);
|
|
53
|
+
const label = `frzseg${segIndex}`;
|
|
54
|
+
parts.push(`[${inputLabel}]trim=start=${startSec}:end=${freezeTimeSec},setpts=PTS-STARTPTS[${label}]`);
|
|
55
|
+
concatLabels.push(`[${label}]`);
|
|
56
|
+
segIndex++;
|
|
57
|
+
}
|
|
58
|
+
// The frozen frame: trim a tiny slice at the freeze point, then tpad to clone it
|
|
59
|
+
const frozenLabel = `frzhold${segIndex}`;
|
|
60
|
+
// Trim a 1-frame slice (use a very short duration; tpad clones the last frame)
|
|
61
|
+
const sliceEndSec = ((freeze.absoluteMs + 1) / 1000).toFixed(3);
|
|
62
|
+
parts.push(`[${inputLabel}]trim=start=${freezeTimeSec}:end=${sliceEndSec},setpts=PTS-STARTPTS,tpad=stop_mode=clone:stop_duration=${freezeDurSec}[${frozenLabel}]`);
|
|
63
|
+
concatLabels.push(`[${frozenLabel}]`);
|
|
64
|
+
segIndex++;
|
|
65
|
+
addedDurationMs += freeze.durationMs;
|
|
66
|
+
cursor = freeze.absoluteMs;
|
|
67
|
+
}
|
|
68
|
+
// Remaining segment after the last freeze
|
|
69
|
+
if (cursor < totalDurationMs) {
|
|
70
|
+
const startSec = (cursor / 1000).toFixed(3);
|
|
71
|
+
const endSec = (totalDurationMs / 1000).toFixed(3);
|
|
72
|
+
const label = `frzseg${segIndex}`;
|
|
73
|
+
parts.push(`[${inputLabel}]trim=start=${startSec}:end=${endSec},setpts=PTS-STARTPTS[${label}]`);
|
|
74
|
+
concatLabels.push(`[${label}]`);
|
|
75
|
+
}
|
|
76
|
+
const outputLabel = 'frzout';
|
|
77
|
+
parts.push(`${concatLabels.join('')}concat=n=${concatLabels.length}:v=1:a=0[${outputLabel}]`);
|
|
78
|
+
return { filter: parts.join(';\n'), outputLabel, addedDurationMs };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Shift placements, chapters, and subtitles forward to account for freeze-inserted duration.
|
|
82
|
+
*
|
|
83
|
+
* Each freeze at `absoluteMs` pushes everything after that point by `durationMs`.
|
|
84
|
+
* Freezes must be sorted chronologically.
|
|
85
|
+
*/
|
|
86
|
+
export function adjustPlacementsForFreezes(placements, freezes) {
|
|
87
|
+
if (freezes.length === 0)
|
|
88
|
+
return placements;
|
|
89
|
+
return placements.map((p) => {
|
|
90
|
+
let startShift = 0;
|
|
91
|
+
let endShift = 0;
|
|
92
|
+
for (const f of freezes) {
|
|
93
|
+
if (f.absoluteMs <= p.startMs) {
|
|
94
|
+
startShift += f.durationMs;
|
|
95
|
+
}
|
|
96
|
+
if (f.absoluteMs <= p.endMs) {
|
|
97
|
+
endShift += f.durationMs;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
scene: p.scene,
|
|
102
|
+
startMs: p.startMs + startShift,
|
|
103
|
+
endMs: p.endMs + endShift,
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Compute the total duration added by all freezes.
|
|
109
|
+
*/
|
|
110
|
+
export function totalFreezeDurationMs(freezes) {
|
|
111
|
+
return freezes.reduce((sum, f) => sum + f.durationMs, 0);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=freeze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../src/freeze.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { defineConfig, loadConfig, demosProject, type ArgoConfig, type UserConfig, type TTSConfig, type TTSEngine, type VideoConfig, type ExportConfig, type TransitionType, type TransitionConfig, type SpeedRampConfig, type VariantConfig, type AudioConfig, } from './config.js';
|
|
1
|
+
export { defineConfig, loadConfig, demosProject, type ArgoConfig, type UserConfig, type TTSConfig, type TTSEngine, type VideoConfig, type ExportConfig, type TransitionType, type TransitionConfig, type SpeedRampConfig, type VariantConfig, type AudioConfig, type WatermarkConfig, } from './config.js';
|
|
2
2
|
export { test, expect, demoType } from './fixtures.js';
|
|
3
3
|
export { NarrationTimeline, type SceneDurationOptions } from './narration.js';
|
|
4
4
|
export { showCaption, hideCaption, withCaption } from './captions.js';
|
|
@@ -16,9 +16,12 @@ export { runDoctor, formatDoctorResults } from './doctor.js';
|
|
|
16
16
|
export { runPipeline, runBatchPipeline, discoverDemos, type PipelineOptions } from './pipeline.js';
|
|
17
17
|
export { buildTransitionFilters } from './transitions.js';
|
|
18
18
|
export { computeSegments, applySpeedRamp } from './speed-ramp.js';
|
|
19
|
+
export { buildFreezeFilter, resolveFreezes, adjustPlacementsForFreezes, totalFreezeDurationMs, type FreezeSpec, type ResolvedFreeze, } from './freeze.js';
|
|
20
|
+
export { buildCameraMoveFilter, shiftCameraMoves, scaleCameraMoves, type CameraMove } from './camera-move.js';
|
|
19
21
|
export { runFfmpegWithProgress } from './progress.js';
|
|
20
22
|
export { startDashboardServer } from './dashboard.js';
|
|
21
23
|
export { extractClip, type ClipOptions } from './clip.js';
|
|
22
24
|
export { releasePrep, type ReleasePrepOptions } from './release-prep.js';
|
|
23
25
|
export { init } from './init.js';
|
|
26
|
+
export { generateMusic, generateMusicCached, type MusicGenOptions } from './music/musicgen.js';
|
|
24
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,WAAW,EACX,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGpF,OAAO,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGxF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,10 @@ export { runPipeline, runBatchPipeline, discoverDemos } from './pipeline.js';
|
|
|
32
32
|
export { buildTransitionFilters } from './transitions.js';
|
|
33
33
|
// Speed Ramp
|
|
34
34
|
export { computeSegments, applySpeedRamp } from './speed-ramp.js';
|
|
35
|
+
// Freeze
|
|
36
|
+
export { buildFreezeFilter, resolveFreezes, adjustPlacementsForFreezes, totalFreezeDurationMs, } from './freeze.js';
|
|
37
|
+
// Camera Moves
|
|
38
|
+
export { buildCameraMoveFilter, shiftCameraMoves, scaleCameraMoves } from './camera-move.js';
|
|
35
39
|
// Progress
|
|
36
40
|
export { runFfmpegWithProgress } from './progress.js';
|
|
37
41
|
// Dashboard
|
|
@@ -42,4 +46,6 @@ export { extractClip } from './clip.js';
|
|
|
42
46
|
export { releasePrep } from './release-prep.js';
|
|
43
47
|
// Init
|
|
44
48
|
export { init } from './init.js';
|
|
49
|
+
// Music Generation
|
|
50
|
+
export { generateMusic, generateMusicCached } from './music/musicgen.js';
|
|
45
51
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,SAAS;AACT,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,SAAS;AACT,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,GAab,MAAM,aAAa,CAAC;AAErB,WAAW;AACX,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEvD,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAA6B,MAAM,gBAAgB,CAAC;AAE9E,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEtE,WAAW;AACX,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,GAMZ,MAAM,qBAAqB,CAAC;AAE7B,UAAU;AACV,OAAO,EAAE,YAAY,EAAwB,MAAM,cAAc,CAAC;AAElE,SAAS;AACT,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,EACN,WAAW,GAKZ,MAAM,aAAa,CAAC;AAErB,SAAS;AACT,OAAO,EACL,eAAe,EACf,WAAW,GAEZ,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1D,WAAW;AACX,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,SAAS;AACT,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAoB,MAAM,aAAa,CAAC;AAEpF,WAAW;AACX,OAAO,EAAE,YAAY,EAA6C,MAAM,eAAe,CAAC;AAExF,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7D,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAwB,MAAM,eAAe,CAAC;AAEnG,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElE,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,GAGtB,MAAM,aAAa,CAAC;AAErB,eAAe;AACf,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AAE9G,WAAW;AACX,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO;AACP,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAE1D,eAAe;AACf,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAC;AAEzE,OAAO;AACP,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAwB,MAAM,qBAAqB,CAAC"}
|
package/dist/media.d.ts
CHANGED
package/dist/media.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwB5D"}
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwB5D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B3D"}
|
package/dist/media.js
CHANGED
|
@@ -15,4 +15,24 @@ export function getVideoDurationMs(videoPath) {
|
|
|
15
15
|
}
|
|
16
16
|
return durationMs;
|
|
17
17
|
}
|
|
18
|
+
export function getVideoFrameRate(videoPath) {
|
|
19
|
+
let raw;
|
|
20
|
+
try {
|
|
21
|
+
raw = execFileSync('ffprobe', ['-v', 'error', '-select_streams', 'v:0', '-show_entries', 'stream=avg_frame_rate', '-of', 'csv=p=0', videoPath], { encoding: 'utf-8' }).trim();
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
throw new Error(`Failed to get video frame rate from ${videoPath}. ` +
|
|
25
|
+
`Ensure ffprobe is installed (it usually comes with ffmpeg). ` +
|
|
26
|
+
`Original error: ${err.message}`);
|
|
27
|
+
}
|
|
28
|
+
if (!raw || raw === '0/0') {
|
|
29
|
+
throw new Error(`ffprobe returned invalid frame rate "${raw}" for ${videoPath}.`);
|
|
30
|
+
}
|
|
31
|
+
const match = raw.match(/^(\d+(?:\.\d+)?)\/(\d+(?:\.\d+)?)$/);
|
|
32
|
+
const fps = match ? Number(match[1]) / Number(match[2]) : Number(raw);
|
|
33
|
+
if (!Number.isFinite(fps) || fps <= 0) {
|
|
34
|
+
throw new Error(`ffprobe returned invalid frame rate "${raw}" for ${videoPath}.`);
|
|
35
|
+
}
|
|
36
|
+
return fps;
|
|
37
|
+
}
|
|
18
38
|
//# sourceMappingURL=media.js.map
|
package/dist/media.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAChB,SAAS,EACT,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAChF,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qCAAqC,SAAS,IAAI;YAClD,8DAA8D;YAC9D,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,SAAS,SAAS,kCAAkC,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAChB,SAAS,EACT,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAChF,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qCAAqC,SAAS,IAAI;YAClD,8DAA8D;YAC9D,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,SAAS,SAAS,kCAAkC,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAChB,SAAS,EACT,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAChH,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,IAAI;YACpD,8DAA8D;YAC9D,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAC5C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,SAAS,SAAS,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,SAAS,SAAS,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-generated background music via MusicGen (Transformers.js).
|
|
3
|
+
* Uses Xenova/musicgen-small (~1.8GB ONNX model, downloaded on first run).
|
|
4
|
+
*/
|
|
5
|
+
export interface MusicGenOptions {
|
|
6
|
+
/** Text prompt describing the desired music (e.g., "lofi chill ambient with soft piano"). */
|
|
7
|
+
prompt: string;
|
|
8
|
+
/** Duration in seconds for generated music. Default: 30. */
|
|
9
|
+
durationSec?: number;
|
|
10
|
+
/** Classifier-free guidance scale. Higher = more prompt-adherent. Default: 3. */
|
|
11
|
+
guidanceScale?: number;
|
|
12
|
+
/** Sampling temperature. Default: 1.0. */
|
|
13
|
+
temperature?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Compute a content-addressed cache key from all generation parameters.
|
|
17
|
+
*/
|
|
18
|
+
export declare function computeCacheKey(options: MusicGenOptions): string;
|
|
19
|
+
/**
|
|
20
|
+
* Returns the cache file path for a given demo + options.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCachePath(argoDir: string, options: MusicGenOptions): string;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a cached music file exists for the given options.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isCached(argoDir: string, options: MusicGenOptions): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Generate background music from a text prompt using MusicGen.
|
|
29
|
+
*
|
|
30
|
+
* The model (~1.8GB) is downloaded on first run. Generation takes ~30-60s
|
|
31
|
+
* depending on duration and hardware.
|
|
32
|
+
*
|
|
33
|
+
* Returns a WAV buffer (Float32, mono, 32kHz — ffmpeg handles resampling during export).
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateMusic(options: MusicGenOptions): Promise<Buffer>;
|
|
36
|
+
/**
|
|
37
|
+
* Generate music with caching. Returns the path to the WAV file.
|
|
38
|
+
*
|
|
39
|
+
* If a cached file exists for the same prompt + parameters, skips generation.
|
|
40
|
+
* On model load or generation failure, warns and returns null (best-effort).
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateMusicCached(argoDir: string, options: MusicGenOptions): Promise<string | null>;
|
|
43
|
+
//# sourceMappingURL=musicgen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"musicgen.d.ts","sourceRoot":"","sources":["../../src/music/musicgen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAahE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAG9E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAE3E;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAwD7E;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxB"}
|