@hyperframes/engine 0.7.59 → 0.7.61

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.
Files changed (76) hide show
  1. package/README.md +3 -4
  2. package/dist/config.d.ts +95 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +131 -16
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts +7 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/services/audioMixer.d.ts.map +1 -1
  11. package/dist/services/audioMixer.js +38 -3
  12. package/dist/services/audioMixer.js.map +1 -1
  13. package/dist/services/browserLeasePool.d.ts +48 -0
  14. package/dist/services/browserLeasePool.d.ts.map +1 -0
  15. package/dist/services/browserLeasePool.js +210 -0
  16. package/dist/services/browserLeasePool.js.map +1 -0
  17. package/dist/services/browserManager.d.ts +6 -7
  18. package/dist/services/browserManager.d.ts.map +1 -1
  19. package/dist/services/browserManager.js +134 -177
  20. package/dist/services/browserManager.js.map +1 -1
  21. package/dist/services/chunkEncoder.d.ts.map +1 -1
  22. package/dist/services/chunkEncoder.js +45 -134
  23. package/dist/services/chunkEncoder.js.map +1 -1
  24. package/dist/services/frameCapture.d.ts +38 -1
  25. package/dist/services/frameCapture.d.ts.map +1 -1
  26. package/dist/services/frameCapture.js +119 -8
  27. package/dist/services/frameCapture.js.map +1 -1
  28. package/dist/services/pageNavigationTimeoutErrorHint.d.ts +79 -0
  29. package/dist/services/pageNavigationTimeoutErrorHint.d.ts.map +1 -0
  30. package/dist/services/pageNavigationTimeoutErrorHint.js +112 -0
  31. package/dist/services/pageNavigationTimeoutErrorHint.js.map +1 -0
  32. package/dist/services/parallelCoordinator.d.ts +21 -0
  33. package/dist/services/parallelCoordinator.d.ts.map +1 -1
  34. package/dist/services/parallelCoordinator.js +40 -1
  35. package/dist/services/parallelCoordinator.js.map +1 -1
  36. package/dist/services/protocolTimeoutErrorHint.d.ts +28 -0
  37. package/dist/services/protocolTimeoutErrorHint.d.ts.map +1 -0
  38. package/dist/services/protocolTimeoutErrorHint.js +45 -0
  39. package/dist/services/protocolTimeoutErrorHint.js.map +1 -0
  40. package/dist/services/streamingEncoder.d.ts.map +1 -1
  41. package/dist/services/streamingEncoder.js +23 -58
  42. package/dist/services/streamingEncoder.js.map +1 -1
  43. package/dist/services/systemMemory.d.ts.map +1 -1
  44. package/dist/services/systemMemory.js +4 -1
  45. package/dist/services/systemMemory.js.map +1 -1
  46. package/dist/services/videoFrameExtractor.d.ts +4 -5
  47. package/dist/services/videoFrameExtractor.d.ts.map +1 -1
  48. package/dist/services/videoFrameExtractor.js +57 -112
  49. package/dist/services/videoFrameExtractor.js.map +1 -1
  50. package/dist/types.d.ts +28 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/utils/ffmpegBinaries.d.ts +2 -2
  53. package/dist/utils/ffmpegBinaries.d.ts.map +1 -1
  54. package/dist/utils/ffmpegBinaries.js +8 -82
  55. package/dist/utils/ffmpegBinaries.js.map +1 -1
  56. package/dist/utils/ffprobe.d.ts +3 -1
  57. package/dist/utils/ffprobe.d.ts.map +1 -1
  58. package/dist/utils/ffprobe.js +35 -42
  59. package/dist/utils/ffprobe.js.map +1 -1
  60. package/dist/utils/gpuEncoder.d.ts.map +1 -1
  61. package/dist/utils/gpuEncoder.js +32 -52
  62. package/dist/utils/gpuEncoder.js.map +1 -1
  63. package/dist/utils/gpuParityDiff.d.ts +142 -0
  64. package/dist/utils/gpuParityDiff.d.ts.map +1 -0
  65. package/dist/utils/gpuParityDiff.js +205 -0
  66. package/dist/utils/gpuParityDiff.js.map +1 -0
  67. package/dist/utils/managedChildProcess.d.ts +50 -0
  68. package/dist/utils/managedChildProcess.d.ts.map +1 -0
  69. package/dist/utils/managedChildProcess.js +148 -0
  70. package/dist/utils/managedChildProcess.js.map +1 -0
  71. package/dist/utils/processTracker.js +1 -1
  72. package/dist/utils/runFfmpeg.d.ts +3 -0
  73. package/dist/utils/runFfmpeg.d.ts.map +1 -1
  74. package/dist/utils/runFfmpeg.js +16 -50
  75. package/dist/utils/runFfmpeg.js.map +1 -1
  76. package/package.json +3 -2
package/README.md CHANGED
@@ -35,7 +35,6 @@ The engine opens your HTML composition in a headless Chrome instance, seeks fram
35
35
  ```typescript
36
36
  import {
37
37
  acquireBrowser,
38
- releaseBrowser,
39
38
  createCaptureSession,
40
39
  initializeSession,
41
40
  captureFrame,
@@ -43,11 +42,11 @@ import {
43
42
  } from "@hyperframes/engine";
44
43
 
45
44
  // 1. Launch browser
46
- const browser = await acquireBrowser({ captureMode: "beginFrame" });
45
+ const browserLease = await acquireBrowser({ captureMode: "beginFrame" });
47
46
 
48
47
  // 2. Open a capture session
49
48
  const session = createCaptureSession({
50
- browser: browser.browser,
49
+ browser: browserLease.browser,
51
50
  url: "http://localhost:3000/my-composition.html",
52
51
  width: 1920,
53
52
  height: 1080,
@@ -62,7 +61,7 @@ for (let i = 0; i < totalFrames; i++) {
62
61
 
63
62
  // 4. Clean up
64
63
  await closeCaptureSession(session);
65
- await releaseBrowser(browser);
64
+ await browserLease.release();
66
65
  ```
67
66
 
68
67
  Most users should use `@hyperframes/producer` or the `hyperframes` CLI instead of calling the engine directly.
package/dist/config.d.ts CHANGED
@@ -133,6 +133,15 @@ export interface EngineConfig {
133
133
  enableChunkedEncode: boolean;
134
134
  chunkSizeFrames: number;
135
135
  enableStreamingEncode: boolean;
136
+ /**
137
+ * INTERNAL. Set by `resolveConfig` when the Windows software-GPU compound
138
+ * heuristic (`shouldAutoDisableStreamingEncodeOnWin32Compound`) turned
139
+ * `enableStreamingEncode` off on the caller's behalf. Not intended to be
140
+ * set by callers; surfaces the auto-decision for downstream observability
141
+ * (log lines, telemetry) so operators can tell an auto-disable apart from
142
+ * an explicit user opt-out.
143
+ */
144
+ streamingEncodeAutoDisabledOnWin32Compound?: boolean;
136
145
  /**
137
146
  * Max composition duration eligible for streaming encode (seconds).
138
147
  * Mirrors GSAP rendering's 4-minute streaming guard: production has seen
@@ -241,6 +250,92 @@ export declare function scaleProtocolTimeoutForComposition(baseTimeoutMs: number
241
250
  width: number;
242
251
  height: number;
243
252
  }): number;
253
+ /**
254
+ * Auto-disable `enableStreamingEncode` on Windows software-GPU compound.
255
+ *
256
+ * Field signal (`ts=1784131903`, win32/x64, CLI 0.7.58, 156s UI-heavy
257
+ * composition): the render was stable ONLY with FOUR flags together —
258
+ * `--workers 1 --no-browser-gpu --low-memory-mode` + explicit
259
+ * `PRODUCER_ENABLE_STREAMING_ENCODE=false`. Every recent Windows-related
260
+ * fix (#2359, #2245, #2298, #2331) already shipped in 0.7.58; the residual
261
+ * failure is screenshot streaming-encode via CDP `Page.captureScreenshot`
262
+ * on Windows even after software fallback. Since `--low-memory-mode` and
263
+ * `--no-browser-gpu` already imply screenshot capture, three of the four
264
+ * flags are structurally coupled — auto-detect the compound and disable
265
+ * streaming-encode automatically so callers don't have to memorize the
266
+ * four-flag combination.
267
+ *
268
+ * Conservative gates (all must hold):
269
+ * 1. `platform === "win32"` — the failure is Windows-specific to CDP's
270
+ * screenshot streaming path.
271
+ * 2. `softwareGpuForced` — the render is already on the SwiftShader /
272
+ * forced-screenshot path (from `--no-browser-gpu`, `disableGpu`, or
273
+ * `--low-memory-mode` implying screenshot capture).
274
+ * 3. `workers === 1` — the field signal reproduces on single-worker
275
+ * captures; parallel workers have a different failure surface
276
+ * (missing media frames) already handled by the worker-count route.
277
+ * 4. Composition duration >120s WHEN KNOWN. When unknown at the config
278
+ * layer (composition duration is parsed downstream), the guard
279
+ * reduces to the three-condition compound. Trade-off documented in
280
+ * the PR body: false positives possible for short (~<120s) Windows
281
+ * software-GPU single-worker renders. Mitigation: the explicit
282
+ * opt-in escape hatch (`PRODUCER_ENABLE_STREAMING_ENCODE=true` or
283
+ * `overrides.enableStreamingEncode !== undefined`) always wins.
284
+ *
285
+ * Pure function; exported for tests.
286
+ */
287
+ export declare function shouldAutoDisableStreamingEncodeOnWin32Compound(opts: {
288
+ platform: NodeJS.Platform;
289
+ softwareGpuForced: boolean;
290
+ workers: number;
291
+ compositionDurationSec: number | undefined;
292
+ userExplicitlySet: boolean;
293
+ }): boolean;
294
+ /**
295
+ * Result of resolving the extract cache directory from the env, decoupled from
296
+ * the wider {@link resolveConfig} pipeline so `hyperframes doctor` (and any
297
+ * other diagnostic surface) can report the exact same effective value the
298
+ * renderer will use — including whether the user has explicitly disabled the
299
+ * cache via `off`/`none`/`false`/`0`.
300
+ *
301
+ * - `dir: string` + `disabled: false` → renderer will use this directory.
302
+ * `source` reports whether the value came from the env or the OS default.
303
+ * - `dir: undefined` + `disabled: true` → user explicitly turned caching off;
304
+ * frames extract into the per-render workDir (auto-cleaned when the render
305
+ * ends). `rawValue` carries the exact string the user set.
306
+ */
307
+ export type ExtractCacheDirResolution = {
308
+ dir: string;
309
+ disabled: false;
310
+ source: "env" | "default";
311
+ rawValue?: string;
312
+ } | {
313
+ dir: undefined;
314
+ disabled: true;
315
+ source: "env";
316
+ rawValue: string;
317
+ };
318
+ /**
319
+ * Env-var values that disable the extract cache entirely. Case-insensitive;
320
+ * whitespace-trimmed. Kept as an exported constant so the CLI can echo the
321
+ * accepted alias set in `--frames-cache-dir` help text without drift.
322
+ */
323
+ export declare const EXTRACT_CACHE_DIR_DISABLED_ALIASES: readonly string[];
324
+ /**
325
+ * Compute the default extract-cache directory when the user has NOT set
326
+ * `HYPERFRAMES_EXTRACT_CACHE_DIR`. Exported so downstream tests can reproduce
327
+ * the exact path without duplicating the uid-suffix idiom.
328
+ */
329
+ export declare function defaultExtractCacheDir(): string;
330
+ /**
331
+ * Resolve the extract-cache directory from an environment (defaults to
332
+ * `process.env`). Mirrors the internal helper used by {@link resolveConfig},
333
+ * but returns a rich resolution object so callers can distinguish "disabled by
334
+ * user" from "default location" without re-parsing the env value.
335
+ *
336
+ * See {@link ExtractCacheDirResolution} for the shape and its two states.
337
+ */
338
+ export declare function resolveExtractCacheDir(env?: Record<string, string | undefined>): ExtractCacheDirResolution;
244
339
  /**
245
340
  * Resolve configuration by merging: defaults ← env vars ← explicit overrides.
246
341
  * Env vars provide backward compatibility during migration; explicit config
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -94,6 +94,97 @@ export function scaleProtocolTimeoutForComposition(baseTimeoutMs, dims) {
94
94
  const ceiling = Math.max(baseTimeoutMs, MAX_SCALED_PROTOCOL_TIMEOUT_MS);
95
95
  return Math.min(ceiling, Math.max(baseTimeoutMs, scaled));
96
96
  }
97
+ /**
98
+ * Auto-disable `enableStreamingEncode` on Windows software-GPU compound.
99
+ *
100
+ * Field signal (`ts=1784131903`, win32/x64, CLI 0.7.58, 156s UI-heavy
101
+ * composition): the render was stable ONLY with FOUR flags together —
102
+ * `--workers 1 --no-browser-gpu --low-memory-mode` + explicit
103
+ * `PRODUCER_ENABLE_STREAMING_ENCODE=false`. Every recent Windows-related
104
+ * fix (#2359, #2245, #2298, #2331) already shipped in 0.7.58; the residual
105
+ * failure is screenshot streaming-encode via CDP `Page.captureScreenshot`
106
+ * on Windows even after software fallback. Since `--low-memory-mode` and
107
+ * `--no-browser-gpu` already imply screenshot capture, three of the four
108
+ * flags are structurally coupled — auto-detect the compound and disable
109
+ * streaming-encode automatically so callers don't have to memorize the
110
+ * four-flag combination.
111
+ *
112
+ * Conservative gates (all must hold):
113
+ * 1. `platform === "win32"` — the failure is Windows-specific to CDP's
114
+ * screenshot streaming path.
115
+ * 2. `softwareGpuForced` — the render is already on the SwiftShader /
116
+ * forced-screenshot path (from `--no-browser-gpu`, `disableGpu`, or
117
+ * `--low-memory-mode` implying screenshot capture).
118
+ * 3. `workers === 1` — the field signal reproduces on single-worker
119
+ * captures; parallel workers have a different failure surface
120
+ * (missing media frames) already handled by the worker-count route.
121
+ * 4. Composition duration >120s WHEN KNOWN. When unknown at the config
122
+ * layer (composition duration is parsed downstream), the guard
123
+ * reduces to the three-condition compound. Trade-off documented in
124
+ * the PR body: false positives possible for short (~<120s) Windows
125
+ * software-GPU single-worker renders. Mitigation: the explicit
126
+ * opt-in escape hatch (`PRODUCER_ENABLE_STREAMING_ENCODE=true` or
127
+ * `overrides.enableStreamingEncode !== undefined`) always wins.
128
+ *
129
+ * Pure function; exported for tests.
130
+ */
131
+ export function shouldAutoDisableStreamingEncodeOnWin32Compound(opts) {
132
+ if (opts.userExplicitlySet)
133
+ return false;
134
+ if (opts.platform !== "win32")
135
+ return false;
136
+ if (!opts.softwareGpuForced)
137
+ return false;
138
+ // Strict equality: NaN (concurrency: "auto") and fractional / zero worker
139
+ // counts do NOT match. The field-signal compound is `--workers 1`.
140
+ if (opts.workers !== 1)
141
+ return false;
142
+ // Duration boundary: when known, only auto-disable if >120s (avoid
143
+ // over-triggering on short renders). When unknown, skip this check —
144
+ // the three conditions above are already conservative on their own.
145
+ if (opts.compositionDurationSec !== undefined && opts.compositionDurationSec <= 120) {
146
+ return false;
147
+ }
148
+ return true;
149
+ }
150
+ /**
151
+ * Env-var values that disable the extract cache entirely. Case-insensitive;
152
+ * whitespace-trimmed. Kept as an exported constant so the CLI can echo the
153
+ * accepted alias set in `--frames-cache-dir` help text without drift.
154
+ */
155
+ export const EXTRACT_CACHE_DIR_DISABLED_ALIASES = ["off", "none", "false", "0"];
156
+ /**
157
+ * Compute the default extract-cache directory when the user has NOT set
158
+ * `HYPERFRAMES_EXTRACT_CACHE_DIR`. Exported so downstream tests can reproduce
159
+ * the exact path without duplicating the uid-suffix idiom.
160
+ */
161
+ export function defaultExtractCacheDir() {
162
+ return join(tmpdir(), `hyperframes-extract-cache-${process.getuid?.() ?? "u"}`);
163
+ }
164
+ /**
165
+ * Resolve the extract-cache directory from an environment (defaults to
166
+ * `process.env`). Mirrors the internal helper used by {@link resolveConfig},
167
+ * but returns a rich resolution object so callers can distinguish "disabled by
168
+ * user" from "default location" without re-parsing the env value.
169
+ *
170
+ * See {@link ExtractCacheDirResolution} for the shape and its two states.
171
+ */
172
+ export function resolveExtractCacheDir(env = process.env) {
173
+ const raw = env["HYPERFRAMES_EXTRACT_CACHE_DIR"];
174
+ if (raw === undefined) {
175
+ return { dir: defaultExtractCacheDir(), disabled: false, source: "default" };
176
+ }
177
+ const normalized = raw.trim().toLowerCase();
178
+ if (EXTRACT_CACHE_DIR_DISABLED_ALIASES.includes(normalized)) {
179
+ return { dir: undefined, disabled: true, source: "env", rawValue: raw };
180
+ }
181
+ return { dir: raw, disabled: false, source: "env", rawValue: raw };
182
+ }
183
+ function resolveExtractCacheDirFromEnv(env) {
184
+ const raw = env("HYPERFRAMES_EXTRACT_CACHE_DIR");
185
+ return resolveExtractCacheDir(raw === undefined ? {} : { HYPERFRAMES_EXTRACT_CACHE_DIR: raw })
186
+ .dir;
187
+ }
97
188
  function memoryAdaptiveCacheLimit() {
98
189
  const total = getSystemTotalMb();
99
190
  if (total < 4096)
@@ -156,21 +247,6 @@ export function resolveConfig(overrides) {
156
247
  const raw = env("HF_STATIC_DEDUP")?.trim().toLowerCase();
157
248
  return !(raw === "false" || raw === "off" || raw === "0");
158
249
  };
159
- const resolveExtractCacheDir = () => {
160
- const raw = env("HYPERFRAMES_EXTRACT_CACHE_DIR");
161
- if (raw === undefined) {
162
- return join(tmpdir(), `hyperframes-extract-cache-${process.getuid?.() ?? "u"}`);
163
- }
164
- const trimmed = raw.trim();
165
- const normalized = trimmed.toLowerCase();
166
- if (normalized === "off" ||
167
- normalized === "none" ||
168
- normalized === "false" ||
169
- normalized === "0") {
170
- return undefined;
171
- }
172
- return raw;
173
- };
174
250
  // Env-var layer (backward compat)
175
251
  const fromEnv = {
176
252
  concurrency: env("PRODUCER_MAX_WORKERS") ? Number(env("PRODUCER_MAX_WORKERS")) : undefined,
@@ -215,7 +291,7 @@ export function resolveConfig(overrides) {
215
291
  pageNavigationTimeout: envNum("PRODUCER_PAGE_NAVIGATION_TIMEOUT_MS", DEFAULT_CONFIG.pageNavigationTimeout),
216
292
  verifyRuntime: env("PRODUCER_VERIFY_HYPERFRAME_RUNTIME") !== "false",
217
293
  runtimeManifestPath: env("PRODUCER_HYPERFRAME_MANIFEST_PATH"),
218
- extractCacheDir: resolveExtractCacheDir(),
294
+ extractCacheDir: resolveExtractCacheDirFromEnv(env),
219
295
  extractCacheMaxBytes: envNum("HYPERFRAMES_EXTRACT_CACHE_MAX_MB", DEFAULT_CONFIG.extractCacheMaxBytes / 1024 ** 2) *
220
296
  1024 ** 2,
221
297
  };
@@ -287,6 +363,45 @@ export function resolveConfig(overrides) {
287
363
  !explicitForceScreenshotOptOut) {
288
364
  merged.forceScreenshot = true;
289
365
  }
366
+ // Windows software-GPU compound auto-disable for streaming-encode.
367
+ //
368
+ // Field signal ts=1784131903 (win32/x64, CLI 0.7.58, 156s UI-heavy):
369
+ // stable ONLY with FOUR flags — `--workers 1 --no-browser-gpu
370
+ // --low-memory-mode` + `PRODUCER_ENABLE_STREAMING_ENCODE=false`. Since
371
+ // `--no-browser-gpu` and `--low-memory-mode` already imply screenshot
372
+ // capture, three of the four flags are structurally coupled: auto-detect
373
+ // the compound and disable streaming-encode on the caller's behalf.
374
+ //
375
+ // Explicit user intent wins: if `PRODUCER_ENABLE_STREAMING_ENCODE` env
376
+ // is set to any value OR the caller passed `overrides.enableStreamingEncode`,
377
+ // this clamp is a no-op (the user's explicit choice — including
378
+ // `PRODUCER_ENABLE_STREAMING_ENCODE=true` — is preserved).
379
+ //
380
+ // Composition duration is not known at the config-resolution layer
381
+ // (the composition is parsed downstream of `resolveConfig`), so this
382
+ // wire-up passes `compositionDurationSec: undefined` and the helper
383
+ // reduces to the three-condition compound. Trade-off documented in the
384
+ // helper's JSDoc and the PR body: false positives possible for short
385
+ // Windows software-GPU single-worker renders; the explicit opt-in
386
+ // escape hatch is the mitigation.
387
+ const streamingEncodeUserExplicitlySet = env("PRODUCER_ENABLE_STREAMING_ENCODE") !== undefined ||
388
+ overrides?.enableStreamingEncode !== undefined;
389
+ const softwareGpuForced = merged.browserGpuMode === "software" || merged.disableGpu || merged.lowMemoryMode;
390
+ const resolvedWorkers = typeof merged.concurrency === "number" ? merged.concurrency : NaN;
391
+ if (merged.enableStreamingEncode &&
392
+ shouldAutoDisableStreamingEncodeOnWin32Compound({
393
+ platform: process.platform,
394
+ softwareGpuForced,
395
+ workers: resolvedWorkers,
396
+ compositionDurationSec: undefined,
397
+ userExplicitlySet: streamingEncodeUserExplicitlySet,
398
+ })) {
399
+ merged.enableStreamingEncode = false;
400
+ merged.streamingEncodeAutoDisabledOnWin32Compound = true;
401
+ console.error("[hyperframes] Windows compound-workaround auto-detected — disabling streaming-encode " +
402
+ "(platform=win32, software-GPU forced, workers=1). Field signal ts=1784131903. " +
403
+ "Override: PRODUCER_ENABLE_STREAMING_ENCODE=true.");
404
+ }
290
405
  // drawElement capture and page-side shader compositing are mutually
291
406
  // incompatible capture strategies (drawElement reads paint records directly
292
407
  // and bypasses the page-side prepare→composite→resolve protocol). When
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -30,11 +30,13 @@
30
30
  *
31
31
  */
32
32
  export type { HfProtocol, HfMediaElement, HfTransitionMeta, CaptureOptions, CaptureVideoMetadataHint, CaptureResult, CaptureBufferResult, CapturePerfSummary, CaptureWarning, CaptureWarningCode, SubTimelineWaitOutcome, } from "./types.js";
33
- export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, type EngineConfig, } from "./config.js";
33
+ export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, resolveExtractCacheDir, defaultExtractCacheDir, EXTRACT_CACHE_DIR_DISABLED_ALIASES, type EngineConfig, type ExtractCacheDirResolution, } from "./config.js";
34
34
  export { DEFAULT_VP9_CPU_USED, MAX_VP9_CPU_USED, MIN_VP9_CPU_USED, normalizeVp9CpuUsed, } from "./services/vp9Options.js";
35
35
  export { getSystemTotalMb, isLowMemorySystem, LOW_MEMORY_TOTAL_MB_THRESHOLD, } from "./services/systemMemory.js";
36
- export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, type BuildChromeArgsOptions, type CaptureMode, type AcquiredBrowser, } from "./services/browserManager.js";
37
- export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, captureFrameToBufferPipelined, captureFramesBatchPipelined, DrawElementVerificationError, isDrawElementVerificationError, getDrawElementVerificationDetails, type DrawElementVerificationDetails, recaptureDrawElementFrameForVerify, completeDeferredDrawElementInit, writeCapturedFrame, discardWarmupCapture, getCompositionDuration, getCapturePerfSummary, prepareCaptureSessionForReuse, type CaptureSession, isTransientBrowserError, isMemoryExhaustionError, type BeforeCaptureHook, type DiscardWarmupInnerCapture, } from "./services/frameCapture.js";
36
+ export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, BrowserLeasePool, type BuildChromeArgsOptions, type BrowserLaunchFingerprint, type BrowserLease, type BrowserPoolState, type CaptureMode, type AcquiredBrowser, } from "./services/browserManager.js";
37
+ export { augmentProtocolTimeoutError, isProtocolTimeoutError, } from "./services/protocolTimeoutErrorHint.js";
38
+ export { augmentPageNavigationTimeoutError, isPageNavigationTimeoutError, type NavigationTimeoutHintContext, } from "./services/pageNavigationTimeoutErrorHint.js";
39
+ export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, captureFrameToBufferPipelined, captureFramesBatchPipelined, DrawElementVerificationError, isDrawElementVerificationError, getDrawElementVerificationDetails, type DrawElementVerificationDetails, recaptureDrawElementFrameForVerify, completeDeferredDrawElementInit, writeCapturedFrame, discardWarmupCapture, getCompositionDuration, getCapturePerfSummary, percentileOf, prepareCaptureSessionForReuse, type CaptureSession, isTransientBrowserError, isMemoryExhaustionError, type BeforeCaptureHook, type DiscardWarmupInnerCapture, } from "./services/frameCapture.js";
38
40
  export { beginFrameCapture, pageScreenshotCapture, getCdpSession, injectVideoFramesBatch, syncVideoFrameVisibility, cdpSessionCache, probeBeginFrameLiveness, initTransparentBackground, captureAlphaPng, applyDomLayerMask, removeDomLayerMask, DOM_LAYER_MASK_STYLE_ID, type BeginFrameResult, } from "./services/screenshotService.js";
39
41
  export { buildEncoderArgs, encodeFramesFromDir, encodeFramesChunkedConcat, muxVideoWithAudio, applyFaststart, detectGpuEncoder, ENCODER_PRESETS, getEncoderPreset, type GpuEncoder, } from "./services/chunkEncoder.js";
40
42
  export type { EncoderOptions, EncodeResult, MuxResult } from "./services/chunkEncoder.types.js";
@@ -51,10 +53,12 @@ export { readWebGlVendorInfoFromCanvas } from "./utils/readWebGlVendorInfoFromCa
51
53
  export { extractMediaMetadata, extractVideoMetadata, extractAudioMetadata, analyzeKeyframeIntervals, type VideoMetadata, type AudioMetadata, type KeyframeAnalysis, } from "./utils/ffprobe.js";
52
54
  export { assertPublicHttpsUrl, downloadToTemp, isHttpUrl } from "./utils/urlDownloader.js";
53
55
  export { runFfmpeg, formatFfmpegError, type RunFfmpegOptions, type RunFfmpegResult, } from "./utils/runFfmpeg.js";
56
+ export { ManagedChildProcess, type ManagedChildProcessOptions, type ManagedChildProcessOutcome, type ManagedProcessTerminationReason, } from "./utils/managedChildProcess.js";
54
57
  export { assertConfiguredFfmpegBinariesExist, getFfmpegBinary, getFfprobeBinary, FFMPEG_PATH_ENV, FFPROBE_PATH_ENV, } from "./utils/ffmpegBinaries.js";
55
58
  export { trackChildProcess, killTrackedProcesses } from "./utils/processTracker.js";
56
59
  export { decodePng, decodePngToRgb48le, blitRgba8OverRgb48le, blitRgb48leRegion, blitRgb48leAffine, parseTransformMatrix, roundedRectAlpha, resampleRgb48leObjectFit, normalizeObjectFit, type ObjectFit, } from "./utils/alphaBlit.js";
57
60
  export { groupIntoLayers, type CompositeLayer } from "./utils/layerCompositor.js";
61
+ export { diffGpuParityFrames, diffGpuParityPngs, verifyGpuParity, type RgbaFrame, type GpuParityDiffOptions, type GpuParityDiffResult, type BlackOnlyInARegion, type VerifyGpuParityResult, } from "./utils/gpuParityDiff.js";
58
62
  export { type TransitionFn, TRANSITIONS, crossfade, sampleRgb48le, hdrToLinear, linearToHdr, convertTransfer, } from "./utils/shaderTransitions.js";
59
63
  export { initHdrReadback, uploadAndReadbackHdrFrame, float16ToPqRgb, buildHdrChromeArgs, launchHdrBrowser, } from "./services/hdrCapture.js";
60
64
  export { captureScreenshotWithAlpha } from "./services/screenshotService.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -30,13 +30,15 @@
30
30
  *
31
31
  */
32
32
  // ── Configuration ──────────────────────────────────────────────────────────────
33
- export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, } from "./config.js";
33
+ export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, resolveExtractCacheDir, defaultExtractCacheDir, EXTRACT_CACHE_DIR_DISABLED_ALIASES, } from "./config.js";
34
34
  export { DEFAULT_VP9_CPU_USED, MAX_VP9_CPU_USED, MIN_VP9_CPU_USED, normalizeVp9CpuUsed, } from "./services/vp9Options.js";
35
35
  export { getSystemTotalMb, isLowMemorySystem, LOW_MEMORY_TOTAL_MB_THRESHOLD, } from "./services/systemMemory.js";
36
36
  // ── Browser management ─────────────────────────────────────────────────────────
37
- export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, } from "./services/browserManager.js";
37
+ export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, BrowserLeasePool, } from "./services/browserManager.js";
38
+ export { augmentProtocolTimeoutError, isProtocolTimeoutError, } from "./services/protocolTimeoutErrorHint.js";
39
+ export { augmentPageNavigationTimeoutError, isPageNavigationTimeoutError, } from "./services/pageNavigationTimeoutErrorHint.js";
38
40
  // ── Frame capture pipeline ──────────────────────────────────────────────────────
39
- export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, captureFrameToBufferPipelined, captureFramesBatchPipelined, DrawElementVerificationError, isDrawElementVerificationError, getDrawElementVerificationDetails, recaptureDrawElementFrameForVerify, completeDeferredDrawElementInit, writeCapturedFrame, discardWarmupCapture, getCompositionDuration, getCapturePerfSummary, prepareCaptureSessionForReuse, isTransientBrowserError, isMemoryExhaustionError, } from "./services/frameCapture.js";
41
+ export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, captureFrameToBufferPipelined, captureFramesBatchPipelined, DrawElementVerificationError, isDrawElementVerificationError, getDrawElementVerificationDetails, recaptureDrawElementFrameForVerify, completeDeferredDrawElementInit, writeCapturedFrame, discardWarmupCapture, getCompositionDuration, getCapturePerfSummary, percentileOf, prepareCaptureSessionForReuse, isTransientBrowserError, isMemoryExhaustionError, } from "./services/frameCapture.js";
40
42
  // ── Screenshot (BeginFrame) ─────────────────────────────────────────────────────
41
43
  export { beginFrameCapture, pageScreenshotCapture, getCdpSession, injectVideoFramesBatch, syncVideoFrameVisibility, cdpSessionCache, probeBeginFrameLiveness, initTransparentBackground, captureAlphaPng, applyDomLayerMask, removeDomLayerMask, DOM_LAYER_MASK_STYLE_ID, } from "./services/screenshotService.js";
42
44
  // ── Encoding ───────────────────────────────────────────────────────────────────
@@ -57,10 +59,12 @@ export { readWebGlVendorInfoFromCanvas } from "./utils/readWebGlVendorInfoFromCa
57
59
  export { extractMediaMetadata, extractVideoMetadata, extractAudioMetadata, analyzeKeyframeIntervals, } from "./utils/ffprobe.js";
58
60
  export { assertPublicHttpsUrl, downloadToTemp, isHttpUrl } from "./utils/urlDownloader.js";
59
61
  export { runFfmpeg, formatFfmpegError, } from "./utils/runFfmpeg.js";
62
+ export { ManagedChildProcess, } from "./utils/managedChildProcess.js";
60
63
  export { assertConfiguredFfmpegBinariesExist, getFfmpegBinary, getFfprobeBinary, FFMPEG_PATH_ENV, FFPROBE_PATH_ENV, } from "./utils/ffmpegBinaries.js";
61
64
  export { trackChildProcess, killTrackedProcesses } from "./utils/processTracker.js";
62
65
  export { decodePng, decodePngToRgb48le, blitRgba8OverRgb48le, blitRgb48leRegion, blitRgb48leAffine, parseTransformMatrix, roundedRectAlpha, resampleRgb48leObjectFit, normalizeObjectFit, } from "./utils/alphaBlit.js";
63
66
  export { groupIntoLayers } from "./utils/layerCompositor.js";
67
+ export { diffGpuParityFrames, diffGpuParityPngs, verifyGpuParity, } from "./utils/gpuParityDiff.js";
64
68
  // ── Shader transitions ────────────────────────────────────────────────────────
65
69
  export { TRANSITIONS, crossfade, sampleRgb48le, hdrToLinear, linearToHdr, convertTransfer, } from "./utils/shaderTransitions.js";
66
70
  export { initHdrReadback, uploadAndReadbackHdrFrame, float16ToPqRgb, buildHdrChromeArgs, launchHdrBrowser, } from "./services/hdrCapture.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"audioMixer.d.ts","sourceRoot":"","sources":["../../src/services/audioMixer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjE,OAAO,KAAK,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGjF,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAgKrE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAoD/D;AAqRD,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,WAAW,CAAC,CAAC,EAC1E,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,CAAC,CA2HpB"}
1
+ {"version":3,"file":"audioMixer.d.ts","sourceRoot":"","sources":["../../src/services/audioMixer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjE,OAAO,KAAK,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGjF,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AA+KrE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAoD/D;AAsRD,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,WAAW,CAAC,CAAC,EAC1E,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,CAAC,CA8IpB"}
@@ -49,6 +49,21 @@ const MAX_VOLUME_SEGMENTS = 32;
49
49
  * ease-in/ease-out fade still reduces to ~25 segments, inside MAX_VOLUME_SEGMENTS.
50
50
  */
51
51
  const VOLUME_SIMPLIFY_EPSILON = 0.005;
52
+ // `-ac 2` uses FFmpeg's default mono-to-stereo rematrix, which attenuates a
53
+ // mono source by 3 dB. Explicitly map front-center into both stereo channels;
54
+ // native stereo sources have FL/FR and pass through unchanged.
55
+ const STEREO_CHANNEL_FILTER = "pan=stereo|FL=FL+FC|FR=FR+FC";
56
+ async function stereoOutputArgs(srcPath) {
57
+ try {
58
+ const { channels } = await extractAudioMetadata(srcPath);
59
+ if (channels === 1)
60
+ return ["-af", STEREO_CHANNEL_FILTER];
61
+ }
62
+ catch {
63
+ // Preserve the previous FFmpeg conversion path when metadata probing fails.
64
+ }
65
+ return ["-ac", "2"];
66
+ }
52
67
  /**
53
68
  * Reduce a sorted keyframe list to a perceptually-equivalent piecewise-linear
54
69
  * envelope with a bounded segment count.
@@ -207,7 +222,8 @@ async function extractAudioFromVideo(videoPath, outputPath, options, signal, con
207
222
  args.push("-ss", String(options.startTime));
208
223
  if (options?.duration !== undefined)
209
224
  args.push("-t", String(options.duration));
210
- args.push("-vn", "-acodec", "pcm_s16le", "-ar", "48000", "-ac", "2", "-y", outputPath);
225
+ const channelArgs = await stereoOutputArgs(videoPath);
226
+ args.push("-vn", "-acodec", "pcm_s16le", "-ar", "48000", ...channelArgs, "-y", outputPath);
211
227
  const result = await runFfmpeg(args, { signal, timeout: ffmpegProcessTimeout });
212
228
  if (signal?.aborted) {
213
229
  return {
@@ -232,6 +248,7 @@ async function prepareAudioTrack(srcPath, outputPath, mediaStart, duration, sign
232
248
  const outputDir = dirname(outputPath);
233
249
  if (!existsSync(outputDir))
234
250
  mkdirSync(outputDir, { recursive: true });
251
+ const channelArgs = await stereoOutputArgs(srcPath);
235
252
  const args = [
236
253
  "-ss",
237
254
  String(mediaStart),
@@ -243,8 +260,7 @@ async function prepareAudioTrack(srcPath, outputPath, mediaStart, duration, sign
243
260
  "pcm_s16le",
244
261
  "-ar",
245
262
  "48000",
246
- "-ac",
247
- "2",
263
+ ...channelArgs,
248
264
  "-y",
249
265
  outputPath,
250
266
  ];
@@ -515,6 +531,25 @@ export async function processCompositionAudio(elements, baseDir, workDir, output
515
531
  errors.push(`Error: ${element.id} — ${err instanceof Error ? err.message : String(err)}`);
516
532
  }
517
533
  }));
534
+ // Never turn a per-track preparation failure into a successful partial mix.
535
+ // The producer only surfaces audio failures when `success` is false; mixing
536
+ // the remaining tracks made the omitted cue indistinguishable from a valid
537
+ // render unless someone manually audited that exact audio window.
538
+ if (errors.length > 0) {
539
+ try {
540
+ rmSync(workDir, { recursive: true, force: true });
541
+ }
542
+ catch {
543
+ /* ignore */
544
+ }
545
+ return {
546
+ success: false,
547
+ outputPath,
548
+ durationMs: Date.now() - startMs,
549
+ tracksProcessed: tracks.length,
550
+ error: `Audio processing failed: ${errors.join(", ")}`,
551
+ };
552
+ }
518
553
  const mixResult = await mixAudioTracks(tracks, outputPath, totalDuration, signal, config);
519
554
  try {
520
555
  rmSync(workDir, { recursive: true, force: true });