hyperframes 0.8.188 → 0.8.189
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/dist/{add-UORF6235.js → add-TIKUM2YX.js} +10 -10
- package/dist/{animatedGifPrep-23MLSEXF.js → animatedGifPrep-25X4G5IE.js} +3 -3
- package/dist/api.js +11 -11
- package/dist/{asset-DOKDVHCW.js → asset-TPKLIP4R.js} +2 -2
- package/dist/{assetCataloger-CD27MHEY.js → assetCataloger-PQAIV3FI.js} +3 -3
- package/dist/{audio-3NMZHNNU.js → audio-6RLPKB5X.js} +9 -9
- package/dist/{auth-AWKTSKGC.js → auth-O7QSTP6Y.js} +1 -1
- package/dist/{autoUpdate-VBOI4CNU.js → autoUpdate-TIEJODP7.js} +2 -2
- package/dist/{backgroundChecks-S4R454YU.js → backgroundChecks-K2AXYDYG.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-EGPYNDHK.js → batchRender-ORVWYJAH.js} +2 -2
- package/dist/{beats-YENEQUOA.js → beats-2VTB2ATR.js} +4 -4
- package/dist/{benchmark-THSJIQG7.js → benchmark-NLNBL6YR.js} +7 -7
- package/dist/{browser-BDMVQ6WJ.js → browser-M5UV6VJB.js} +3 -3
- package/dist/{bundleWithLocalizedFonts-3QG722YD.js → bundleWithLocalizedFonts-EDD2XDS2.js} +1 -1
- package/dist/{capture-Z6BGCTK3.js → capture-JSYVNFKO.js} +6 -6
- package/dist/{capture-WM4XDMFX.js → capture-WHWEE5FE.js} +2 -2
- package/dist/{captureCompositionFrame-EMHSAIBZ.js → captureCompositionFrame-JANGQCIA.js} +9 -9
- package/dist/{catalog-7TV6UNCG.js → catalog-MPOOKNSZ.js} +10 -10
- package/dist/{catch-up-63IUDZRW.js → catch-up-6KZV3UMZ.js} +4 -4
- package/dist/{check-7RHZL4DV.js → check-G273NWK7.js} +32 -31
- package/dist/{checkBrowser-PF56CT5X.js → checkBrowser-G53E2ZQI.js} +27 -28
- package/dist/{chunk-5DPV7LU3.js → chunk-2CYM34M7.js} +1 -1
- package/dist/{chunk-FSTLXRIN.js → chunk-37EPEFXM.js} +1 -1
- package/dist/{chunk-NMOTNNP2.js → chunk-3OLOVRWS.js} +1 -1
- package/dist/{chunk-ZIRIDSDB.js → chunk-3X6LH25W.js} +1 -1
- package/dist/{chunk-BU4HRISA.js → chunk-44TJOEH5.js} +90 -23
- package/dist/{chunk-YZ73IPW2.js → chunk-4DZ3HBKF.js} +2 -2
- package/dist/{chunk-W2KGJHUL.js → chunk-4QFKGRTB.js} +2 -2
- package/dist/{chunk-IA2IDJAG.js → chunk-5544QB3U.js} +1 -1
- package/dist/{chunk-MTPPEEYZ.js → chunk-565X6Q4X.js} +3 -3
- package/dist/{chunk-HPQSUPR7.js → chunk-5HJJEHGE.js} +1 -1
- package/dist/{chunk-6OWNUXTU.js → chunk-6RA4TWGV.js} +1 -1
- package/dist/{chunk-I7C5GUEQ.js → chunk-74Y43RJZ.js} +3 -3
- package/dist/{chunk-57XL23DE.js → chunk-ANYBRVPF.js} +1 -1
- package/dist/{chunk-LWY3PFJ7.js → chunk-AQ3L7DVB.js} +1 -1
- package/dist/{chunk-6HYPEIH7.js → chunk-ASZ4IQB4.js} +2 -2
- package/dist/{chunk-MJKUCR3C.js → chunk-AYBKDHYD.js} +2 -2
- package/dist/{chunk-T3OXKSRG.js → chunk-B52BJM5K.js} +2 -2
- package/dist/{chunk-JWRT2IXO.js → chunk-B634ZCY2.js} +1 -1
- package/dist/{chunk-LWYZN7HS.js → chunk-BZQLTNMB.js} +219 -79
- package/dist/{chunk-XPVN4R66.js → chunk-CSYSEPWL.js} +31 -7
- package/dist/{chunk-V6NM4KL3.js → chunk-CTF7BYCV.js} +2 -2
- package/dist/{chunk-JYC53CW4.js → chunk-E676Y7AY.js} +81 -28
- package/dist/{chunk-5OZI55AC.js → chunk-E7TI5PAQ.js} +1 -1
- package/dist/{chunk-BWEZDN6U.js → chunk-F45HHA3M.js} +1 -1
- package/dist/{chunk-DA4TQFSF.js → chunk-FJF5JBYU.js} +1 -1
- package/dist/{chunk-NFHRGHCJ.js → chunk-GBT7P3OQ.js} +3 -3
- package/dist/{chunk-UF6RCYA5.js → chunk-GWYMAII7.js} +1 -1
- package/dist/{chunk-MXXX6WVC.js → chunk-HNMDLKA4.js} +1 -1
- package/dist/{chunk-GYBPAKBM.js → chunk-HQIFMCQN.js} +16 -10
- package/dist/{chunk-B2P4JRUJ.js → chunk-HUG47UEE.js} +1 -1
- package/dist/{chunk-YCW345M4.js → chunk-HXM2ISEK.js} +119 -8
- package/dist/{chunk-OJOZXWLC.js → chunk-IFXOMIBP.js} +3 -3
- package/dist/{chunk-6Q5CFUAP.js → chunk-IPEP346Y.js} +1 -1
- package/dist/{chunk-FOLMMQF3.js → chunk-JIPUWKLA.js} +12 -12
- package/dist/{chunk-44QWRPGE.js → chunk-JZDVIDFH.js} +2 -2
- package/dist/{chunk-L243NE72.js → chunk-KLWUB37U.js} +7 -7
- package/dist/{chunk-IJYR4TTA.js → chunk-KS4HMJJD.js} +1 -1
- package/dist/{chunk-FWVILDOZ.js → chunk-M6FHSQZ3.js} +3 -3
- package/dist/{chunk-PQLFJYGP.js → chunk-NDBWI7OA.js} +5 -5
- package/dist/{chunk-46VJ2UAV.js → chunk-NSJ5HD6A.js} +5 -5
- package/dist/{chunk-KWSEIVR6.js → chunk-OHXHBMF4.js} +1 -1
- package/dist/{chunk-X556BGL7.js → chunk-QMFI4N7J.js} +1 -1
- package/dist/{chunk-OKSYDQHY.js → chunk-QYQ2EYOI.js} +3 -3
- package/dist/{chunk-KY7375C4.js → chunk-R5FS7GFU.js} +1 -1
- package/dist/{chunk-FH7WODJH.js → chunk-SGFMCNLY.js} +8 -0
- package/dist/{chunk-PMXR3IUH.js → chunk-T37XXYRK.js} +1 -1
- package/dist/{chunk-NFLZNSUZ.js → chunk-TFUAKV6O.js} +1 -1
- package/dist/{chunk-U6RXZNZE.js → chunk-TMBUBLZB.js} +55 -23
- package/dist/{chunk-2DHCCBCN.js → chunk-TPTQHOXU.js} +8 -8
- package/dist/{chunk-KDBPZOXK.js → chunk-TREMHDWT.js} +11 -11
- package/dist/{chunk-DLFAVRF3.js → chunk-VRQU564T.js} +1 -1
- package/dist/{chunk-HKUZCSNZ.js → chunk-WMJJCHVQ.js} +2 -2
- package/dist/{chunk-YV4WT7CJ.js → chunk-WYCFMNU3.js} +11 -0
- package/dist/{chunk-2WUDFZCR.js → chunk-XJVXROOL.js} +2 -2
- package/dist/{chunk-DG4ME554.js → chunk-Z2BW2WJS.js} +1 -1
- package/dist/{chunk-6HZ7TSJJ.js → chunk-ZPMF6GAQ.js} +8 -8
- package/dist/{clean-43O47OTN.js → clean-PS4VYGQ6.js} +12 -12
- package/dist/cli.js +53 -53
- package/dist/{cloud-ZFWKFFSU.js → cloud-E47CE5VQ.js} +4 -4
- package/dist/{cloudrun-XBBESKEU.js → cloudrun-3J4SQBXE.js} +3 -3
- package/dist/{compare-OW4ELTFZ.js → compare-EAKHXBDO.js} +23 -23
- package/dist/{component-SDV7LWH6.js → component-QBOXYJJS.js} +3 -3
- package/dist/{compositions-DI5QZCEK.js → compositions-QC3EO3MJ.js} +7 -7
- package/dist/{delete-QY2NSQ2G.js → delete-TXEOLPC6.js} +2 -2
- package/dist/{deploy-MJVC4EFY.js → deploy-3B3WJ6PM.js} +1 -1
- package/dist/{dist-RFTGYT26.js → dist-F4UJFK4S.js} +3 -1
- package/dist/{doctor-7ZOECPHR.js → doctor-2CRFH4B3.js} +7 -7
- package/dist/{events-WIX4JM2K.js → events-GUIOSBIB.js} +3 -3
- package/dist/{events-XVQQGECC.js → events-KVTX3QFV.js} +2 -2
- package/dist/{feedback-GBYBR6UO.js → feedback-VQIOSTIB.js} +5 -5
- package/dist/{ffmpeg-QGQBYMO3.js → ffmpeg-BPCZGXFW.js} +3 -3
- package/dist/{figma-2CMKUGJQ.js → figma-QIOKCH26.js} +3 -3
- package/dist/fontLocalizeCli.js +5 -5
- package/dist/{get-RWCNUOHU.js → get-TU45SNXF.js} +2 -2
- package/dist/{gpuPolicy-UGWSN32D.js → gpuPolicy-AWAJBGYY.js} +3 -3
- package/dist/{grade-compare-J2MX7HZL.js → grade-compare-LDNUXX3Q.js} +24 -24
- package/dist/{help-SH3ID7MV.js → help-YUCHJKKL.js} +1 -1
- package/dist/{history-C7V5QH7J.js → history-MMHFUMIG.js} +7 -7
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/{info-ZN3JJ3IN.js → info-HBHOFSC2.js} +6 -6
- package/dist/{init-KRNGSRNH.js → init-3E4GUXIZ.js} +23 -23
- package/dist/{inspect-AYDZXTX7.js → inspect-YNUPJVIH.js} +25 -25
- package/dist/{installer-N6AIK6XQ.js → installer-WLCRP33K.js} +3 -3
- package/dist/{keyframes-2RFUCEDK.js → keyframes-Z47GHCGO.js} +6 -6
- package/dist/{lambda-VW3CF6EE.js → lambda-CA4PEUO2.js} +5 -5
- package/dist/{layout-OE64APE7.js → layout-YPV6PIKF.js} +25 -25
- package/dist/{lint-UXJTX5WS.js → lint-3AVVQ74A.js} +6 -6
- package/dist/{list-KOL6JPZJ.js → list-JH52Y735.js} +2 -2
- package/dist/{login-MAQXOPDG.js → login-G7NPJUAW.js} +4 -4
- package/dist/{manager-3LZKRK7P.js → manager-2LSMMZY4.js} +4 -4
- package/dist/{media-treatment-COLSXXQJ.js → media-treatment-BVMMD5EN.js} +9 -9
- package/dist/{models-XXWMGOD7.js → models-P3TNRVRV.js} +7 -7
- package/dist/{motionShot-RECBNTBZ.js → motionShot-LK62QHNE.js} +13 -13
- package/dist/{normalize-audio-LKVGHZWR.js → normalize-audio-Y7BAQ7AR.js} +4 -4
- package/dist/{open-UEQVSRKH.js → open-CCFFLAT7.js} +10 -10
- package/dist/{parakeetRunner-QVPCZ36U.js → parakeetRunner-N2BWSOSD.js} +8 -8
- package/dist/{pipeline-5VSMQBKW.js → pipeline-3VT2DQGU.js} +4 -4
- package/dist/{play-MNEABYN4.js → play-G4I5IFHO.js} +15 -15
- package/dist/{preflight-ONJ74DWQ.js → preflight-2KU2QLCZ.js} +4 -4
- package/dist/{present-GQ24GTYX.js → present-EJ7XHGQO.js} +11 -11
- package/dist/{preview-ALL7O4RG.js → preview-O23BYFAY.js} +14 -14
- package/dist/{producer-43L2UDF6.js → producer-UJQVLKLP.js} +1 -1
- package/dist/{projectConfig-VJXUXK7U.js → projectConfig-QFVIBT37.js} +5 -5
- package/dist/{publication-L6E5NTFV.js → publication-4UYGFB2X.js} +1 -1
- package/dist/{publish-LCLBJEPR.js → publish-MHLVJLCR.js} +6 -6
- package/dist/{remove-background-PDL4KPR4.js → remove-background-N7AHTZWP.js} +5 -5
- package/dist/{render-7HVKJ7T4.js → render-6HQV4LZJ.js} +4 -4
- package/dist/{render-OPCRLZVL.js → render-CDATEVDJ.js} +10 -10
- package/dist/{render-J33ZHR6I.js → render-EI2ODKOP.js} +25 -25
- package/dist/{render-batch-ZHHIGXU3.js → render-batch-F7HMC7XH.js} +4 -4
- package/dist/{resolver-KNNIMMBM.js → resolver-63DB5JCY.js} +3 -3
- package/dist/{sherpa-GI62H3H5.js → sherpa-AK3MTPL3.js} +7 -7
- package/dist/{skills-IUTD6VQO.js → skills-EVIDL7PV.js} +5 -5
- package/dist/{skillsUpdateCheck-XZE7MJG6.js → skillsUpdateCheck-YCNJYDJO.js} +3 -3
- package/dist/{snapshot-XEXTHLZP.js → snapshot-WSYZKR3C.js} +29 -29
- package/dist/{src-6STRGCDC.js → src-KTD6WTEV.js} +4 -4
- package/dist/{src-ZPIV4PGX.js → src-YNXBU4ZQ.js} +4 -2
- package/dist/{staticProjectServer-HJLT7MHE.js → staticProjectServer-D2D3BKBP.js} +13 -11
- package/dist/studio/assets/{hyperframes-player-DwWIKKZG.js → hyperframes-player-CkK8Zijf.js} +1 -1
- package/dist/studio/assets/{index-Cjwz7_13.js → index-ATnRoBug.js} +1 -1
- package/dist/studio/assets/{index-M8lEpS0Q.js → index-B2JcCaRF.js} +4 -4
- package/dist/studio/index.html +1 -1
- package/dist/{studio-api-OBHEB5ND.js → studio-api-3ZGQPE5J.js} +5 -5
- package/dist/{studioServer-KRIZFYML.js → studioServer-VWM4J7ZP.js} +41 -41
- package/dist/{telemetry-N5OOVBCP.js → telemetry-BEVI64BB.js} +3 -3
- package/dist/{timeline-YUFH65OG.js → timeline-P57FUXJQ.js} +13 -13
- package/dist/{tokens-K4VYLSWJ.js → tokens-OUQY6LPD.js} +2 -2
- package/dist/{transcribe-GMQXKDYN.js → transcribe-CK66VIU4.js} +6 -6
- package/dist/{transcribe-CY4CVO54.js → transcribe-QUPX67KC.js} +12 -12
- package/dist/{updateCheck-2625RXK4.js → updateCheck-XZ43CH3L.js} +2 -2
- package/dist/{upgrade-6ZY5MSBQ.js → upgrade-7QQNGI7I.js} +2 -2
- package/dist/{urlDownloader-PVJWG7V3.js → urlDownloader-ESAEL6YX.js} +2 -2
- package/dist/{validate-XSRHEE7E.js → validate-5GZ6KFRU.js} +19 -19
- package/dist/{video-MBFHC54F.js → video-AQNVR6PE.js} +3 -3
- package/dist/warmCheck.js +32 -33
- package/package.json +1 -1
- package/dist/chunk-KANNRHY7.js +0 -53
|
@@ -4,22 +4,22 @@ import { dirname as __hf_dirname } from "node:path";
|
|
|
4
4
|
var require = __hf_createRequire(import.meta.url);
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
import {
|
|
8
|
+
ambiguousIssue,
|
|
9
|
+
loadBrowserScript
|
|
10
|
+
} from "./chunk-TPTQHOXU.js";
|
|
7
11
|
import {
|
|
8
12
|
auditClipDurations,
|
|
9
13
|
shouldIgnoreHttpError,
|
|
10
14
|
shouldIgnoreRequestFailure
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import {
|
|
13
|
-
checkSnapshotDirectory,
|
|
14
|
-
rectToBbox
|
|
15
|
-
} from "./chunk-KANNRHY7.js";
|
|
16
|
-
import {
|
|
17
|
-
ambiguousIssue,
|
|
18
|
-
loadBrowserScript
|
|
19
|
-
} from "./chunk-2DHCCBCN.js";
|
|
15
|
+
} from "./chunk-JIPUWKLA.js";
|
|
20
16
|
import {
|
|
21
17
|
serveStaticProjectHtml
|
|
22
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-CSYSEPWL.js";
|
|
19
|
+
import {
|
|
20
|
+
artifactDirectory,
|
|
21
|
+
finishSnapshotRun
|
|
22
|
+
} from "./chunk-TMBUBLZB.js";
|
|
23
23
|
import {
|
|
24
24
|
FfmpegUnavailableError,
|
|
25
25
|
decideMediaProxyEligibility,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
proxyVariantFor,
|
|
28
28
|
resolveProxies,
|
|
29
29
|
scanProjectMediaCodecMap
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-BZQLTNMB.js";
|
|
31
31
|
import {
|
|
32
32
|
AUDIT_SEEK_OPTIONS,
|
|
33
33
|
DEFAULT_ZOOM_PADDING_PX,
|
|
@@ -41,14 +41,17 @@ import {
|
|
|
41
41
|
seekCompositionTimeline,
|
|
42
42
|
seekInPage,
|
|
43
43
|
waitForPreferredSeekTarget
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-TREMHDWT.js";
|
|
45
45
|
import {
|
|
46
46
|
BrowserCleanupError,
|
|
47
47
|
closeManagedBrowser
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-HNMDLKA4.js";
|
|
49
|
+
import {
|
|
50
|
+
findStageProxyBox
|
|
51
|
+
} from "./chunk-SGFMCNLY.js";
|
|
49
52
|
import {
|
|
50
53
|
resolveAutoProxy
|
|
51
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-Z2BW2WJS.js";
|
|
52
55
|
import {
|
|
53
56
|
normalizeErrorMessage
|
|
54
57
|
} from "./chunk-KNU5COPB.js";
|
|
@@ -132,10 +135,41 @@ function dropMotionBlurConsoleEcho(drafts, found) {
|
|
|
132
135
|
);
|
|
133
136
|
}
|
|
134
137
|
|
|
138
|
+
// src/utils/checkSnapshotDirectory.ts
|
|
139
|
+
import { resolve } from "path";
|
|
140
|
+
var runDirectories = /* @__PURE__ */ new Map();
|
|
141
|
+
var activeChecks = /* @__PURE__ */ new Map();
|
|
142
|
+
function beginCheckSnapshots(projectDir) {
|
|
143
|
+
const project = resolve(projectDir);
|
|
144
|
+
activeChecks.set(project, (activeChecks.get(project) ?? 0) + 1);
|
|
145
|
+
}
|
|
146
|
+
function checkSnapshotDirectory(projectDir) {
|
|
147
|
+
const project = resolve(projectDir);
|
|
148
|
+
let directory = runDirectories.get(project);
|
|
149
|
+
if (!directory) {
|
|
150
|
+
directory = artifactDirectory(project, "snapshots");
|
|
151
|
+
runDirectories.set(project, directory);
|
|
152
|
+
}
|
|
153
|
+
return directory;
|
|
154
|
+
}
|
|
155
|
+
async function finishCheckSnapshots(projectDir) {
|
|
156
|
+
const project = resolve(projectDir);
|
|
157
|
+
const remaining = Math.max(0, (activeChecks.get(project) ?? 1) - 1);
|
|
158
|
+
if (remaining > 0) {
|
|
159
|
+
activeChecks.set(project, remaining);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
activeChecks.delete(project);
|
|
163
|
+
const path = runDirectories.get(project);
|
|
164
|
+
if (!path) return;
|
|
165
|
+
runDirectories.delete(project);
|
|
166
|
+
await finishSnapshotRun(project, path);
|
|
167
|
+
}
|
|
168
|
+
|
|
135
169
|
// src/utils/checkBrowser.ts
|
|
136
170
|
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
137
171
|
import os from "os";
|
|
138
|
-
import { join, resolve } from "path";
|
|
172
|
+
import { join, resolve as resolve2 } from "path";
|
|
139
173
|
|
|
140
174
|
// src/utils/gsapTweenTails.ts
|
|
141
175
|
var TWEEN_TAIL_WINDOW = 0.25;
|
|
@@ -247,9 +281,14 @@ function collectTweenRecords() {
|
|
|
247
281
|
);
|
|
248
282
|
}
|
|
249
283
|
|
|
284
|
+
// src/utils/checkTypes.ts
|
|
285
|
+
function rectToBbox(rect) {
|
|
286
|
+
return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };
|
|
287
|
+
}
|
|
288
|
+
|
|
250
289
|
// src/utils/checkBrowser.ts
|
|
251
290
|
async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride) {
|
|
252
|
-
const none = { findings: [], failedPaths: /* @__PURE__ */ new Set() };
|
|
291
|
+
const none = { findings: [], failedPaths: /* @__PURE__ */ new Set(), files: [] };
|
|
253
292
|
if (!resolveAutoProxy(projectDir, autoProxyOverride)) return none;
|
|
254
293
|
let codecMap;
|
|
255
294
|
try {
|
|
@@ -265,17 +304,20 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
|
|
|
265
304
|
);
|
|
266
305
|
if (hostileEntries.length === 0) return none;
|
|
267
306
|
const startedAt = Date.now();
|
|
307
|
+
const stageBox = findStageProxyBox(html);
|
|
268
308
|
const sources = hostileEntries.map(([pathname, facts]) => {
|
|
269
309
|
const file = pathname.replace(/^\/+/, "");
|
|
270
310
|
return {
|
|
271
311
|
pathname,
|
|
272
312
|
file,
|
|
273
|
-
sourcePath:
|
|
274
|
-
variant: proxyVariantFor(facts)
|
|
313
|
+
sourcePath: resolve2(projectDir, file),
|
|
314
|
+
variant: proxyVariantFor(facts),
|
|
315
|
+
box: stageBox
|
|
275
316
|
};
|
|
276
317
|
});
|
|
277
318
|
const total = hostileEntries.length;
|
|
278
|
-
const
|
|
319
|
+
const cached = sources.map((source) => proxyCached(projectDir, source));
|
|
320
|
+
const toMake = cached.filter((isCached) => !isCached).length;
|
|
279
321
|
if (toMake > 0) {
|
|
280
322
|
console.error(
|
|
281
323
|
`[hyperframes] Making browser-playable copies of ${toMake} video${toMake === 1 ? "" : "s"} Chrome cannot decode. Only the first check of these files waits for this; later checks reuse the copies.`
|
|
@@ -306,11 +348,18 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
|
|
|
306
348
|
)
|
|
307
349
|
);
|
|
308
350
|
}
|
|
309
|
-
|
|
351
|
+
const files = sources.map(({ file }, index) => {
|
|
352
|
+
const result = results[index];
|
|
353
|
+
if (result.status === "rejected") {
|
|
354
|
+
return { file, state: "failed", reason: normalizeErrorMessage(result.reason) };
|
|
355
|
+
}
|
|
356
|
+
return { file, state: cached[index] ? "cached" : "ready" };
|
|
357
|
+
});
|
|
358
|
+
return { findings, failedPaths: new Set(failures.map(({ pathname }) => pathname)), files };
|
|
310
359
|
}
|
|
311
360
|
function proxyCached(projectDir, source) {
|
|
312
361
|
try {
|
|
313
|
-
return existsSync(getProxyCachePath(projectDir, source.sourcePath, source.variant));
|
|
362
|
+
return existsSync(getProxyCachePath(projectDir, source.sourcePath, source.variant, source.box));
|
|
314
363
|
} catch {
|
|
315
364
|
return false;
|
|
316
365
|
}
|
|
@@ -319,7 +368,7 @@ function proxyFailedDraft(message) {
|
|
|
319
368
|
return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
|
|
320
369
|
}
|
|
321
370
|
async function runBrowserCheck(project, options, motion, runGrid, deadline, prelaunched) {
|
|
322
|
-
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-
|
|
371
|
+
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-EDD2XDS2.js");
|
|
323
372
|
const html = await bundleWithLocalizedFonts(project.dir);
|
|
324
373
|
deadline?.enter("copies");
|
|
325
374
|
const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
|
|
@@ -366,7 +415,7 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
|
|
|
366
415
|
await waitForPreferredSeekTarget(page);
|
|
367
416
|
const rootAnchor = await resolveRootAnchor(page);
|
|
368
417
|
const launchSettleMs = Date.now() - launchSettleStart;
|
|
369
|
-
const { analyzeClipMediaFit } = await import("./src-
|
|
418
|
+
const { analyzeClipMediaFit } = await import("./src-YNXBU4ZQ.js");
|
|
370
419
|
for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
|
|
371
420
|
drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
|
|
372
421
|
}
|
|
@@ -475,7 +524,7 @@ function mergeHelperDrafts(primary, helper) {
|
|
|
475
524
|
}
|
|
476
525
|
async function captureFindingCrops(project, options, requests, deadline) {
|
|
477
526
|
if (requests.length === 0) return [];
|
|
478
|
-
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-
|
|
527
|
+
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-EDD2XDS2.js");
|
|
479
528
|
const html = await bundleWithLocalizedFonts(project.dir);
|
|
480
529
|
const server = await serveStaticProjectHtml(
|
|
481
530
|
project.dir,
|
|
@@ -651,11 +700,11 @@ async function abortedImagesStillBroken(page, drafts) {
|
|
|
651
700
|
if (urls.length === 0) return /* @__PURE__ */ new Set();
|
|
652
701
|
const broken = await page.evaluate(
|
|
653
702
|
async (candidates, capMs) => {
|
|
654
|
-
const fails = (img) => new Promise((
|
|
655
|
-
const cap = setTimeout(() =>
|
|
703
|
+
const fails = (img) => new Promise((resolve3) => {
|
|
704
|
+
const cap = setTimeout(() => resolve3(false), capMs);
|
|
656
705
|
img.decode().then(
|
|
657
|
-
() =>
|
|
658
|
-
() =>
|
|
706
|
+
() => resolve3(false),
|
|
707
|
+
() => resolve3(true)
|
|
659
708
|
).finally(() => clearTimeout(cap));
|
|
660
709
|
});
|
|
661
710
|
const stillBroken = await Promise.all(
|
|
@@ -1680,6 +1729,10 @@ function matchComponentFindings({
|
|
|
1680
1729
|
}
|
|
1681
1730
|
|
|
1682
1731
|
export {
|
|
1732
|
+
beginCheckSnapshots,
|
|
1733
|
+
checkSnapshotDirectory,
|
|
1734
|
+
finishCheckSnapshots,
|
|
1735
|
+
rectToBbox,
|
|
1683
1736
|
preResolveHostileMediaProxies,
|
|
1684
1737
|
runBrowserCheck,
|
|
1685
1738
|
samplingBrowserCount,
|
|
@@ -1278,7 +1278,7 @@ async function withFigmaErrors(command, fn) {
|
|
|
1278
1278
|
} catch (err) {
|
|
1279
1279
|
if (err instanceof Error) {
|
|
1280
1280
|
try {
|
|
1281
|
-
const { trackCommandFailure } = await import("./events-
|
|
1281
|
+
const { trackCommandFailure } = await import("./events-GUIOSBIB.js");
|
|
1282
1282
|
trackCommandFailure(
|
|
1283
1283
|
command,
|
|
1284
1284
|
err,
|
|
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
shouldTrack
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-T37XXYRK.js";
|
|
10
10
|
|
|
11
11
|
// src/telemetry/renderObservability.ts
|
|
12
12
|
function renderObservabilityTelemetryPayload(observability) {
|
|
@@ -14,17 +14,17 @@ import {
|
|
|
14
14
|
} from "./chunk-6JR2XUEE.js";
|
|
15
15
|
import {
|
|
16
16
|
readCompositionFps
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-HUG47UEE.js";
|
|
18
18
|
import {
|
|
19
19
|
HF_AUDIO_GROUP_ATTR,
|
|
20
20
|
extractAudioMetadata,
|
|
21
21
|
extractMediaMetadata
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-HXM2ISEK.js";
|
|
23
23
|
import {
|
|
24
24
|
byStart,
|
|
25
25
|
fpsToNumber,
|
|
26
26
|
parseFpsWithDefault
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-WYCFMNU3.js";
|
|
28
28
|
import {
|
|
29
29
|
HF_AUDIO_AUTOMATION_ATTR,
|
|
30
30
|
HF_AUDIO_FX_ATTR,
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
EncoderInterruptedError,
|
|
9
9
|
encoderFailureError,
|
|
10
10
|
prepareAnimatedGifInputs
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XJVXROOL.js";
|
|
12
12
|
import {
|
|
13
13
|
GENERIC_FAMILIES,
|
|
14
14
|
collectFontFamilyCustomProperties,
|
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
analyzeCompositionHdr,
|
|
42
42
|
analyzeKeyframeIntervals,
|
|
43
43
|
appendRenderProvenanceArgs,
|
|
44
|
+
appendSoftwareEncoderThreadsArg,
|
|
44
45
|
applyConcreteGpuScreenshotClamp,
|
|
45
46
|
applyDomLayerMask,
|
|
46
47
|
applyFaststart,
|
|
@@ -155,7 +156,7 @@ import {
|
|
|
155
156
|
validateEngineConfigSnapshot,
|
|
156
157
|
verifyDiskDrawElementSamples,
|
|
157
158
|
writeCapturedFrame
|
|
158
|
-
} from "./chunk-
|
|
159
|
+
} from "./chunk-HXM2ISEK.js";
|
|
159
160
|
import {
|
|
160
161
|
DISTRIBUTED_FPS,
|
|
161
162
|
HF_VFX_ATTR,
|
|
@@ -170,7 +171,7 @@ import {
|
|
|
170
171
|
parseVfxChain,
|
|
171
172
|
resolveAuthoredTimingWindow,
|
|
172
173
|
toFps
|
|
173
|
-
} from "./chunk-
|
|
174
|
+
} from "./chunk-WYCFMNU3.js";
|
|
174
175
|
import {
|
|
175
176
|
assignBundledRuntimeCompositionIds,
|
|
176
177
|
buildVariablesByCompScript,
|
|
@@ -15499,7 +15500,7 @@ async function compilePlanComposition(projectDir, config, planDir, options) {
|
|
|
15499
15500
|
if (probeResult.fileServer) closeFileServerSafely(probeResult.fileServer, "plan", log);
|
|
15500
15501
|
if (probeResult.probeSession) {
|
|
15501
15502
|
try {
|
|
15502
|
-
const { closeCaptureSession: closeCaptureSession2 } = await import("./src-
|
|
15503
|
+
const { closeCaptureSession: closeCaptureSession2 } = await import("./src-YNXBU4ZQ.js");
|
|
15503
15504
|
await closeCaptureSession2(probeResult.probeSession);
|
|
15504
15505
|
} catch (err) {
|
|
15505
15506
|
log.warn("[plan] probe session close failed", {
|
|
@@ -17148,7 +17149,7 @@ function startServer(options = {}) {
|
|
|
17148
17149
|
});
|
|
17149
17150
|
async function shutdown(signal) {
|
|
17150
17151
|
log.info(`Received ${signal}, shutting down`);
|
|
17151
|
-
const { drainBrowserPool } = await import("./src-
|
|
17152
|
+
const { drainBrowserPool } = await import("./src-YNXBU4ZQ.js");
|
|
17152
17153
|
await drainBrowserPool().catch(() => {
|
|
17153
17154
|
});
|
|
17154
17155
|
const handle = await Promise.race([
|
|
@@ -18193,10 +18194,9 @@ function readAssemblePlan(planDir, chunkPaths) {
|
|
|
18193
18194
|
function videoInputArgs(ctx, videoSources) {
|
|
18194
18195
|
return videoSources.length === 1 ? ["-i", videoSources[0]] : concatDemuxerInput(videoSources, ctx.workDir, ctx.fpsArg);
|
|
18195
18196
|
}
|
|
18196
|
-
|
|
18197
|
-
const
|
|
18198
|
-
|
|
18199
|
-
...videoInputArgs(ctx, chunkPaths),
|
|
18197
|
+
function cfrEncodeArgs(inputArgs, encoder, fpsArg) {
|
|
18198
|
+
const args = [
|
|
18199
|
+
...inputArgs,
|
|
18200
18200
|
"-c:v",
|
|
18201
18201
|
"libx264",
|
|
18202
18202
|
...cfrRateControlArgs(encoder),
|
|
@@ -18205,8 +18205,14 @@ async function reencodeCfr(ctx, chunkPaths, encoder) {
|
|
|
18205
18205
|
"-fps_mode",
|
|
18206
18206
|
"cfr",
|
|
18207
18207
|
"-r",
|
|
18208
|
-
|
|
18208
|
+
fpsArg
|
|
18209
18209
|
];
|
|
18210
|
+
appendSoftwareEncoderThreadsArg(args);
|
|
18211
|
+
return args;
|
|
18212
|
+
}
|
|
18213
|
+
async function reencodeCfr(ctx, chunkPaths, encoder) {
|
|
18214
|
+
const cfrOutputPath = join39(ctx.workDir, `cfr.${ctx.format}`);
|
|
18215
|
+
const cfrArgs = cfrEncodeArgs(videoInputArgs(ctx, chunkPaths), encoder, ctx.fpsArg);
|
|
18210
18216
|
appendRenderProvenanceArgs(cfrArgs, cfrOutputPath);
|
|
18211
18217
|
cfrArgs.push("-y", cfrOutputPath);
|
|
18212
18218
|
await ctx.timed(
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
renderFrameIdForRenderId,
|
|
27
27
|
resolveAuthoredTimingWindow,
|
|
28
28
|
toFps
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-WYCFMNU3.js";
|
|
30
30
|
import {
|
|
31
31
|
AUDIO_GROUP_RENDER_ID_ATTR,
|
|
32
32
|
COLOR_GRADING_SOURCE_HIDDEN_ATTR,
|
|
@@ -8993,6 +8993,12 @@ async function analyzeKeyframeIntervalsUncached(filePath, videoStreamStartSecond
|
|
|
8993
8993
|
};
|
|
8994
8994
|
}
|
|
8995
8995
|
|
|
8996
|
+
// ../engine/src/services/softwareEncoderThreads.ts
|
|
8997
|
+
import { availableParallelism } from "os";
|
|
8998
|
+
function appendSoftwareEncoderThreadsArg(args, parallelism = availableParallelism()) {
|
|
8999
|
+
args.push("-threads", String(Math.max(1, Math.floor(parallelism))));
|
|
9000
|
+
}
|
|
9001
|
+
|
|
8996
9002
|
// ../engine/src/utils/renderProvenance.ts
|
|
8997
9003
|
import { readFileSync as readFileSync2 } from "fs";
|
|
8998
9004
|
import { dirname, join as join5 } from "path";
|
|
@@ -9217,6 +9223,7 @@ function buildEncoderArgs(options, inputArgs, outputPath, gpuEncoder = null) {
|
|
|
9217
9223
|
} else {
|
|
9218
9224
|
const encoderName = codec === "h264" ? "libx264" : "libx265";
|
|
9219
9225
|
args.push("-c:v", encoderName, "-preset", preset);
|
|
9226
|
+
appendSoftwareEncoderThreadsArg(args);
|
|
9220
9227
|
if (bitrate) args.push("-b:v", bitrate);
|
|
9221
9228
|
else args.push("-crf", String(quality));
|
|
9222
9229
|
const gop = resolveLockedGopSize(options);
|
|
@@ -9921,6 +9928,7 @@ function buildStreamingArgs(options, outputPath, gpuEncoder = null) {
|
|
|
9921
9928
|
} else {
|
|
9922
9929
|
const encoderName = codec === "h264" ? "libx264" : "libx265";
|
|
9923
9930
|
args.push("-c:v", encoderName, "-preset", preset);
|
|
9931
|
+
appendSoftwareEncoderThreadsArg(args);
|
|
9924
9932
|
if (bitrate) args.push("-b:v", bitrate);
|
|
9925
9933
|
else args.push("-crf", String(quality));
|
|
9926
9934
|
const lockedGop = resolveLockedGopSize(options);
|
|
@@ -12472,6 +12480,7 @@ function resolveVideoExtractionDuration(video, metadata, timelineEnd) {
|
|
|
12472
12480
|
return resolveVideoExtractionWindow(video, metadata, timelineEnd).durationSeconds;
|
|
12473
12481
|
}
|
|
12474
12482
|
var ALPHA_CAPABLE_CODECS = /* @__PURE__ */ new Set(["vp9", "vp8", "prores"]);
|
|
12483
|
+
var SIDECAR_ALPHA_CODECS = /* @__PURE__ */ new Set(["vp9", "vp8"]);
|
|
12475
12484
|
function codecMayHaveAlpha(codec) {
|
|
12476
12485
|
return ALPHA_CAPABLE_CODECS.has((codec ?? "").toLowerCase());
|
|
12477
12486
|
}
|
|
@@ -12479,7 +12488,8 @@ function decoderForCodec(codec) {
|
|
|
12479
12488
|
return alphaDecoderFor(codec) ?? (codec ?? "").toLowerCase();
|
|
12480
12489
|
}
|
|
12481
12490
|
function resolveFrameFormat(metadata, requested) {
|
|
12482
|
-
if (metadata.hasAlpha ||
|
|
12491
|
+
if (metadata.hasAlpha || SIDECAR_ALPHA_CODECS.has((metadata.videoCodec ?? "").toLowerCase()))
|
|
12492
|
+
return "png";
|
|
12483
12493
|
if (requested === "png" || requested === "jpg") return requested;
|
|
12484
12494
|
return "jpg";
|
|
12485
12495
|
}
|
|
@@ -15239,7 +15249,8 @@ function boundedDetail(message, maxLength = 2e3) {
|
|
|
15239
15249
|
/(^|[\s"'(])\/.+?(?=:\s[A-Z]|\s(?:ENOENT|EACCES|EPERM)\b|\r?$)/gm,
|
|
15240
15250
|
"$1<redacted-path>"
|
|
15241
15251
|
);
|
|
15242
|
-
|
|
15252
|
+
const head = Math.floor(maxLength / 4);
|
|
15253
|
+
return redacted.length <= maxLength ? redacted : `${redacted.slice(0, head)}\u2026${redacted.slice(-(maxLength - head - 1))}`;
|
|
15243
15254
|
}
|
|
15244
15255
|
function probeFailure(message, elementId) {
|
|
15245
15256
|
const unavailable = /(?:not found|ENOENT|spawn)/i.test(message);
|
|
@@ -15303,7 +15314,7 @@ function ffmpegFailure(stage, result, timeoutMs, elementId) {
|
|
|
15303
15314
|
elementId,
|
|
15304
15315
|
subprocess: audioSubprocessEvidence(result),
|
|
15305
15316
|
detail: boundedDetail(
|
|
15306
|
-
result.error?.message ? `${describeFfmpegFailure(result, timeoutMs)}: ${result.error.message}` : describeFfmpegFailure(result, timeoutMs)
|
|
15317
|
+
`(ran ${result.durationMs} ms, limit ${timeoutMs} ms) ` + (result.error?.message ? `${describeFfmpegFailure(result, timeoutMs)}: ${result.error.message}` : describeFfmpegFailure(result, timeoutMs))
|
|
15307
15318
|
)
|
|
15308
15319
|
};
|
|
15309
15320
|
}
|
|
@@ -15500,8 +15511,13 @@ async function generateSilence(outputPath, duration, signal, config) {
|
|
|
15500
15511
|
failure
|
|
15501
15512
|
};
|
|
15502
15513
|
}
|
|
15503
|
-
|
|
15504
|
-
|
|
15514
|
+
var MIX_TIMEOUT_MS_PER_FILM_SECOND = 100;
|
|
15515
|
+
function mixProcessTimeout(config, totalDuration) {
|
|
15516
|
+
const configured = config?.ffmpegProcessTimeout ?? DEFAULT_CONFIG.ffmpegProcessTimeout;
|
|
15517
|
+
return Math.max(configured, Math.ceil(totalDuration * MIX_TIMEOUT_MS_PER_FILM_SECOND));
|
|
15518
|
+
}
|
|
15519
|
+
async function mixAudioTracksFlat(tracks, outputPath, totalDuration, signal, config) {
|
|
15520
|
+
const ffmpegProcessTimeout = mixProcessTimeout(config, totalDuration);
|
|
15505
15521
|
const masterOutputGain = config?.audioGain ?? DEFAULT_CONFIG.audioGain;
|
|
15506
15522
|
if (tracks.length === 0) {
|
|
15507
15523
|
const result2 = await generateSilence(outputPath, totalDuration, signal, config);
|
|
@@ -15621,8 +15637,8 @@ async function mixAudioTracks(tracks, outputPath, totalDuration, signal, config)
|
|
|
15621
15637
|
function groupNormalizeOptionUnsupported(stderr) {
|
|
15622
15638
|
return /normalize/i.test(stderr) && /(?:unrecognized option|option (?:was )?not found|no option name)/i.test(stderr);
|
|
15623
15639
|
}
|
|
15624
|
-
async function
|
|
15625
|
-
const ffmpegProcessTimeout = config
|
|
15640
|
+
async function mixGroupMembersFlat(memberTracks, outputPath, totalDuration, signal, config) {
|
|
15641
|
+
const ffmpegProcessTimeout = mixProcessTimeout(config, totalDuration);
|
|
15626
15642
|
const outputDir = dirname7(outputPath);
|
|
15627
15643
|
if (!existsSync11(outputDir)) mkdirSync7(outputDir, { recursive: true });
|
|
15628
15644
|
const buildInputFilters = (ignoreKeyframes, padMembers) => memberTracks.map((track, i) => {
|
|
@@ -15707,6 +15723,100 @@ async function mixGroupMembers(memberTracks, outputPath, totalDuration, signal,
|
|
|
15707
15723
|
}
|
|
15708
15724
|
return { success: true, degradedAutomation };
|
|
15709
15725
|
}
|
|
15726
|
+
var MAX_MIX_INPUTS = 96;
|
|
15727
|
+
async function sumInSlices(tracks, scratchDir, totalDuration, signal, config) {
|
|
15728
|
+
const wavTrack = (id, srcPath) => ({
|
|
15729
|
+
id,
|
|
15730
|
+
srcPath,
|
|
15731
|
+
start: 0,
|
|
15732
|
+
end: totalDuration,
|
|
15733
|
+
mediaStart: 0,
|
|
15734
|
+
duration: totalDuration,
|
|
15735
|
+
volume: 1
|
|
15736
|
+
});
|
|
15737
|
+
let running = null;
|
|
15738
|
+
let degradedAutomation = false;
|
|
15739
|
+
for (let at = 0; at < tracks.length; at += MAX_MIX_INPUTS) {
|
|
15740
|
+
const id = `sum-${at / MAX_MIX_INPUTS}`;
|
|
15741
|
+
const slicePath = join14(scratchDir, `${id}-slice.wav`);
|
|
15742
|
+
const slice = await mixGroupMembersFlat(
|
|
15743
|
+
tracks.slice(at, at + MAX_MIX_INPUTS),
|
|
15744
|
+
slicePath,
|
|
15745
|
+
totalDuration,
|
|
15746
|
+
signal,
|
|
15747
|
+
config
|
|
15748
|
+
);
|
|
15749
|
+
if (!slice.success) return slice;
|
|
15750
|
+
degradedAutomation ||= slice.degradedAutomation === true;
|
|
15751
|
+
if (!running) {
|
|
15752
|
+
running = wavTrack(id, slicePath);
|
|
15753
|
+
continue;
|
|
15754
|
+
}
|
|
15755
|
+
const foldedPath = join14(scratchDir, `${id}.wav`);
|
|
15756
|
+
const folded = await mixGroupMembersFlat(
|
|
15757
|
+
[running, wavTrack(`${id}-slice`, slicePath)],
|
|
15758
|
+
foldedPath,
|
|
15759
|
+
totalDuration,
|
|
15760
|
+
signal,
|
|
15761
|
+
config
|
|
15762
|
+
);
|
|
15763
|
+
rmSync8(running.srcPath, { force: true });
|
|
15764
|
+
rmSync8(slicePath, { force: true });
|
|
15765
|
+
if (!folded.success) return folded;
|
|
15766
|
+
running = wavTrack(id, foldedPath);
|
|
15767
|
+
}
|
|
15768
|
+
if (!running) throw new Error("[audioMixer] sumInSlices needs at least one track");
|
|
15769
|
+
return { success: true, track: running, degradedAutomation };
|
|
15770
|
+
}
|
|
15771
|
+
async function mixGroupMembers(memberTracks, outputPath, totalDuration, signal, config) {
|
|
15772
|
+
if (memberTracks.length <= MAX_MIX_INPUTS) {
|
|
15773
|
+
return mixGroupMembersFlat(memberTracks, outputPath, totalDuration, signal, config);
|
|
15774
|
+
}
|
|
15775
|
+
mkdirSync7(dirname7(outputPath), { recursive: true });
|
|
15776
|
+
const scratchDir = mkdtempSync7(join14(dirname7(outputPath), ".mix-batches-"));
|
|
15777
|
+
try {
|
|
15778
|
+
const summed = await sumInSlices(memberTracks, scratchDir, totalDuration, signal, config);
|
|
15779
|
+
if (!summed.success) return summed;
|
|
15780
|
+
renameSync3(summed.track.srcPath, outputPath);
|
|
15781
|
+
return { success: true, degradedAutomation: summed.degradedAutomation };
|
|
15782
|
+
} finally {
|
|
15783
|
+
rmSync8(scratchDir, { recursive: true, force: true });
|
|
15784
|
+
}
|
|
15785
|
+
}
|
|
15786
|
+
async function mixAudioTracks(tracks, outputPath, totalDuration, signal, config) {
|
|
15787
|
+
if (tracks.length <= MAX_MIX_INPUTS) {
|
|
15788
|
+
return mixAudioTracksFlat(tracks, outputPath, totalDuration, signal, config);
|
|
15789
|
+
}
|
|
15790
|
+
mkdirSync7(dirname7(outputPath), { recursive: true });
|
|
15791
|
+
const scratchDir = mkdtempSync7(join14(dirname7(outputPath), ".mix-batches-"));
|
|
15792
|
+
try {
|
|
15793
|
+
const summed = await sumInSlices(tracks, scratchDir, totalDuration, signal, config);
|
|
15794
|
+
if (!summed.success) {
|
|
15795
|
+
return {
|
|
15796
|
+
success: false,
|
|
15797
|
+
outputPath,
|
|
15798
|
+
durationMs: 0,
|
|
15799
|
+
tracksProcessed: 0,
|
|
15800
|
+
error: summed.error,
|
|
15801
|
+
failures: [summed.failure]
|
|
15802
|
+
};
|
|
15803
|
+
}
|
|
15804
|
+
const mixed = await mixAudioTracksFlat(
|
|
15805
|
+
[summed.track],
|
|
15806
|
+
outputPath,
|
|
15807
|
+
totalDuration,
|
|
15808
|
+
signal,
|
|
15809
|
+
config
|
|
15810
|
+
);
|
|
15811
|
+
return mixed.success ? {
|
|
15812
|
+
...mixed,
|
|
15813
|
+
tracksProcessed: tracks.length,
|
|
15814
|
+
error: summed.degradedAutomation ? "Volume automation exceeded this ffmpeg build's expression limits; rendered at base volume" : mixed.error
|
|
15815
|
+
} : mixed;
|
|
15816
|
+
} finally {
|
|
15817
|
+
rmSync8(scratchDir, { recursive: true, force: true });
|
|
15818
|
+
}
|
|
15819
|
+
}
|
|
15710
15820
|
async function mixThroughFloatSum(tracks, masterChain, outputPath, workDir, totalDuration, signal, config) {
|
|
15711
15821
|
const sumPath = join14(workDir, "master-sum.wav");
|
|
15712
15822
|
const sum = await mixAudioTracks(tracks, sumPath, totalDuration, signal, config);
|
|
@@ -17396,6 +17506,7 @@ export {
|
|
|
17396
17506
|
extractVideoMetadata,
|
|
17397
17507
|
extractAudioMetadata,
|
|
17398
17508
|
analyzeKeyframeIntervals,
|
|
17509
|
+
appendSoftwareEncoderThreadsArg,
|
|
17399
17510
|
PROVENANCE_RENDERER_TAG,
|
|
17400
17511
|
PROVENANCE_VERSION_TAG,
|
|
17401
17512
|
PROVENANCE_RENDERER_NAME,
|
|
@@ -15,13 +15,13 @@ import {
|
|
|
15
15
|
findFFmpeg,
|
|
16
16
|
findFFprobe,
|
|
17
17
|
getFFmpegInstallHint
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-3OLOVRWS.js";
|
|
19
19
|
import {
|
|
20
20
|
DEFAULT_VP9_CPU_USED,
|
|
21
21
|
SDR_RGB_TO_BT709_FILTER,
|
|
22
22
|
SDR_RGB_TO_TAGGED_BT709_FILTER,
|
|
23
23
|
renderProvenanceArgs
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-HXM2ISEK.js";
|
|
25
25
|
|
|
26
26
|
// src/background-removal/pipeline.ts
|
|
27
27
|
import { spawn } from "child_process";
|
|
@@ -262,7 +262,7 @@ function inferInputKind(inputPath) {
|
|
|
262
262
|
}
|
|
263
263
|
async function probeMedia(inputPath) {
|
|
264
264
|
const isImage = inferInputKind(inputPath) === "image";
|
|
265
|
-
const engine = await import("./src-
|
|
265
|
+
const engine = await import("./src-YNXBU4ZQ.js");
|
|
266
266
|
const meta = await engine.extractMediaMetadata(inputPath);
|
|
267
267
|
if (isImage) {
|
|
268
268
|
return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
|