@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
@@ -3,39 +3,35 @@ import { spawn } from "child_process";
3
3
  import { readFileSync } from "fs";
4
4
  import { extname } from "path";
5
5
  import { FFPROBE_PATH_ENV, getFfprobeBinary } from "./ffmpegBinaries.js";
6
+ import { ManagedChildProcess } from "./managedChildProcess.js";
7
+ import { trackChildProcess } from "./processTracker.js";
6
8
  /** Spawn ffprobe with given args, return stdout. Throws on non-zero exit or missing binary. */
7
- function runFfprobe(args) {
8
- return new Promise((resolve, reject) => {
9
- const command = getFfprobeBinary();
10
- const proc = spawn(command, args);
11
- let stdout = "";
12
- let stderr = "";
13
- proc.stdout.on("data", (data) => {
14
- stdout += data.toString();
15
- });
16
- proc.stderr.on("data", (data) => {
17
- stderr += data.toString();
18
- });
19
- proc.on("close", (code) => {
20
- if (code !== 0) {
21
- reject(new Error(`[FFmpeg] ffprobe exited with code ${code}: ${stderr}`));
22
- }
23
- else {
24
- resolve(stdout);
25
- }
26
- });
27
- proc.on("error", (err) => {
28
- if (err.code === "ENOENT") {
29
- const configured = process.env[FFPROBE_PATH_ENV]?.trim();
30
- reject(new Error(configured
31
- ? `[FFmpeg] ffprobe not found at ${FFPROBE_PATH_ENV}="${configured}". Please install FFmpeg.`
32
- : "[FFmpeg] ffprobe not found. Please install FFmpeg."));
33
- }
34
- else {
35
- reject(err);
36
- }
37
- });
9
+ async function runFfprobe(args, signal) {
10
+ const command = getFfprobeBinary();
11
+ const proc = spawn(command, args);
12
+ trackChildProcess(proc);
13
+ let stdout = "";
14
+ proc.stdout.on("data", (data) => {
15
+ stdout += data.toString();
38
16
  });
17
+ const managed = new ManagedChildProcess(proc, {
18
+ signal,
19
+ deadlineAtMs: Date.now() + 30_000,
20
+ });
21
+ const outcome = await managed.wait();
22
+ if (outcome.reason === "spawn_error") {
23
+ if (outcome.error?.code === "ENOENT") {
24
+ const configured = process.env[FFPROBE_PATH_ENV]?.trim();
25
+ throw new Error(configured
26
+ ? `[FFmpeg] ffprobe not found at ${FFPROBE_PATH_ENV}="${configured}". Please install FFmpeg.`
27
+ : "[FFmpeg] ffprobe not found. Please install FFmpeg.");
28
+ }
29
+ throw outcome.error ?? new Error(outcome.stderr);
30
+ }
31
+ if (outcome.reason !== "exit" || outcome.exitCode !== 0) {
32
+ throw new Error(`[FFmpeg] ffprobe ${outcome.reason} with code ${outcome.exitCode}: ${outcome.stderr}`);
33
+ }
34
+ return stdout;
39
35
  }
40
36
  function parseProbeJson(stdout) {
41
37
  try {
@@ -254,20 +250,15 @@ export async function extractMediaMetadata(filePath) {
254
250
  * `extractMediaMetadata`.
255
251
  */
256
252
  export const extractVideoMetadata = extractMediaMetadata;
257
- export async function extractAudioMetadata(filePath) {
258
- const cached = audioMetadataCache.get(filePath);
253
+ export async function extractAudioMetadata(filePath, options) {
254
+ // A caller-owned abort signal cannot safely share a cached in-flight probe:
255
+ // cancelling one consumer would also cancel unrelated consumers. Signal-bound
256
+ // probes therefore bypass the process-promise cache.
257
+ const cached = options?.signal ? undefined : audioMetadataCache.get(filePath);
259
258
  if (cached)
260
259
  return cached;
261
260
  const probePromise = (async () => {
262
- const stdout = await runFfprobe([
263
- "-v",
264
- "quiet",
265
- "-print_format",
266
- "json",
267
- "-show_format",
268
- "-show_streams",
269
- filePath,
270
- ]);
261
+ const stdout = await runFfprobe(["-v", "quiet", "-print_format", "json", "-show_format", "-show_streams", filePath], options?.signal);
271
262
  const output = parseProbeJson(stdout);
272
263
  const audioStream = output.streams.find((s) => s.codec_type === "audio");
273
264
  if (!audioStream)
@@ -304,6 +295,8 @@ export async function extractAudioMetadata(filePath) {
304
295
  bitrate: output.format.bit_rate ? parseInt(output.format.bit_rate) : undefined,
305
296
  };
306
297
  })();
298
+ if (options?.signal)
299
+ return probePromise;
307
300
  audioMetadataCache.set(filePath, probePromise);
308
301
  probePromise.catch(() => {
309
302
  if (audioMetadataCache.get(filePath) === probePromise) {
@@ -1 +1 @@
1
- {"version":3,"file":"ffprobe.js","sourceRoot":"","sources":["../../src/utils/ffprobe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ffprobe.js","sourceRoot":"","sources":["../../src/utils/ffprobe.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gpuEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/gpuEncoder.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAKH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;AACpF,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAqBnD,wBAAgB,sBAAsB,CAAC,oBAAoB,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAIzF;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,SAAS,kBAAkB,EAAE,EACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAC1D,OAAO,CAAC,UAAU,CAAC,CAiBrB;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAoB5D;AAID,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC,CAK/D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgBrF;AAYD,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,CA0BlE;AAoGD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUlF"}
1
+ {"version":3,"file":"gpuEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/gpuEncoder.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAOH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;AACpF,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAqBnD,wBAAgB,sBAAsB,CAAC,oBAAoB,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAIzF;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,SAAS,kBAAkB,EAAE,EACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAC1D,OAAO,CAAC,UAAU,CAAC,CAiBrB;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAe5D;AAID,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC,CAK/D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgBrF;AAYD,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,CA0BlE;AA6ED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUlF"}
@@ -7,6 +7,8 @@
7
7
  */
8
8
  import { spawn } from "child_process";
9
9
  import { getFfmpegBinary } from "./ffmpegBinaries.js";
10
+ import { ManagedChildProcess } from "./managedChildProcess.js";
11
+ import { trackChildProcess } from "./processTracker.js";
10
12
  const GPU_ENCODER_CANDIDATES = [
11
13
  "nvenc",
12
14
  "videotoolbox",
@@ -43,22 +45,21 @@ export async function selectUsableGpuEncoder(candidates, isUsable) {
43
45
  return null;
44
46
  }
45
47
  export async function detectGpuEncoder() {
46
- return new Promise((resolve) => {
47
- const ffmpeg = spawn(getFfmpegBinary(), ["-encoders"], {
48
- stdio: ["pipe", "pipe", "pipe"],
49
- });
50
- let stdout = "";
51
- ffmpeg.stdout.on("data", (data) => {
52
- stdout += data.toString();
53
- });
54
- ffmpeg.on("close", () => {
55
- const candidates = getCompiledGpuEncoders(stdout);
56
- void selectUsableGpuEncoder(candidates, canUseGpuEncoder)
57
- .then(resolve)
58
- .catch(() => resolve(null));
59
- });
60
- ffmpeg.on("error", () => resolve(null));
48
+ const ffmpeg = spawn(getFfmpegBinary(), ["-encoders"], {
49
+ stdio: ["pipe", "pipe", "pipe"],
61
50
  });
51
+ trackChildProcess(ffmpeg);
52
+ let stdout = "";
53
+ ffmpeg.stdout.on("data", (data) => {
54
+ stdout += data.toString();
55
+ });
56
+ const outcome = await new ManagedChildProcess(ffmpeg, {
57
+ deadlineAtMs: Date.now() + 30_000,
58
+ }).wait();
59
+ if (outcome.reason !== "exit" || outcome.exitCode !== 0)
60
+ return null;
61
+ const candidates = getCompiledGpuEncoders(stdout);
62
+ return selectUsableGpuEncoder(candidates, canUseGpuEncoder).catch(() => null);
62
63
  }
63
64
  let cachedGpuEncoder = undefined;
64
65
  export async function getCachedGpuEncoder() {
@@ -118,44 +119,23 @@ export function getProbeArgs(encoder) {
118
119
  return args;
119
120
  }
120
121
  async function canUseGpuEncoder(encoder) {
121
- return new Promise((resolve) => {
122
- let settled = false;
123
- let timedOut = false;
124
- let killTimer;
125
- let stderr = "";
126
- const finish = (usable) => {
127
- if (settled)
128
- return;
129
- settled = true;
130
- clearTimeout(timer);
131
- if (killTimer)
132
- clearTimeout(killTimer);
133
- resolve(usable);
134
- };
135
- const ffmpeg = spawn(getFfmpegBinary(), getProbeArgs(encoder), {
136
- stdio: ["ignore", "ignore", "pipe"],
137
- });
138
- ffmpeg.stderr?.on("data", (data) => {
139
- stderr += data.toString();
140
- });
141
- const timer = setTimeout(() => {
142
- timedOut = true;
143
- ffmpeg.kill("SIGTERM");
144
- killTimer = setTimeout(() => {
145
- ffmpeg.kill("SIGKILL");
146
- finish(false);
147
- }, GPU_PROBE_KILL_GRACE_MS);
148
- }, GPU_PROBE_TIMEOUT_MS);
149
- ffmpeg.on("close", (code, signal) => {
150
- const usable = code === 0;
151
- logGpuProbeFailure(encoder, { code, signal, stderr, timedOut });
152
- finish(usable);
153
- });
154
- ffmpeg.on("error", (error) => {
155
- logGpuProbeFailure(encoder, { error, timedOut });
156
- finish(false);
157
- });
122
+ const ffmpeg = spawn(getFfmpegBinary(), getProbeArgs(encoder), {
123
+ stdio: ["ignore", "ignore", "pipe"],
124
+ });
125
+ trackChildProcess(ffmpeg);
126
+ const outcome = await new ManagedChildProcess(ffmpeg, {
127
+ deadlineAtMs: Date.now() + GPU_PROBE_TIMEOUT_MS,
128
+ terminationGraceMs: GPU_PROBE_KILL_GRACE_MS,
129
+ }).wait();
130
+ const usable = outcome.reason === "exit" && outcome.exitCode === 0;
131
+ logGpuProbeFailure(encoder, {
132
+ code: outcome.exitCode,
133
+ signal: outcome.signal,
134
+ stderr: outcome.stderr,
135
+ error: outcome.error,
136
+ timedOut: outcome.reason === "deadline",
158
137
  });
138
+ return usable;
159
139
  }
160
140
  function logGpuProbeFailure(encoder, result) {
161
141
  if (!isGpuProbeDebugEnabled())
@@ -1 +1 @@
1
- {"version":3,"file":"gpuEncoder.js","sourceRoot":"","sources":["../../src/utils/gpuEncoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gpuEncoder.js","sourceRoot":"","sources":["../../src/utils/gpuEncoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * GPU Parity Diff — diagnostic helpers for detecting shape-dependent
3
+ * hardware-GPU capture bugs by comparing frames captured via the two
4
+ * capture paths (hardware-GPU vs software-GPU / screenshot bypass).
5
+ *
6
+ * Field pattern this exists to catch:
7
+ *
8
+ * • ts=1784049136 · hardware-GPU capture emitted intermittent black
9
+ * rectangles in one scene; `--no-browser-gpu --low-memory-mode
10
+ * --workers 1` (software-GPU screenshot mode) resolved it.
11
+ * • ts=1784032286 · animated `clip-path` on a large image → intermittent
12
+ * black rectangles from Chrome capture; deterministic precomposited
13
+ * swipe states removed the artifact.
14
+ * • Baseline · JetBrains Mono glyph-drop on parallel/BeginFrame text
15
+ * capture.
16
+ *
17
+ * Common shape: hardware-GPU writes solid-black regions where content
18
+ * should exist; software-GPU / screenshot fallback renders the same
19
+ * region correctly. A raw per-pixel diff is a coarse signal for this —
20
+ * on its own it fires on every animation frame's compositor jitter, so
21
+ * this module also isolates the *asymmetric* black-in-A-only pattern
22
+ * that is the diagnostic fingerprint of the bug.
23
+ *
24
+ * This module is the reduced-scope first pass: a pure helper + unit
25
+ * tests. Wiring a `hyperframes verify-gpu-parity` CLI surface, capture
26
+ * orchestration, and integration coverage is intentionally deferred to
27
+ * a follow-up so the diagnostic primitive can land and be exercised
28
+ * against real captured frames in isolation.
29
+ */
30
+ /** A decoded RGBA frame. Matches the shape returned by `decodePng`. */
31
+ export interface RgbaFrame {
32
+ width: number;
33
+ height: number;
34
+ data: Uint8Array;
35
+ }
36
+ export interface GpuParityDiffOptions {
37
+ /**
38
+ * Per-channel absolute difference at which a pixel is considered "differing".
39
+ * A pixel counts as differing if any of R/G/B channels differ by more than
40
+ * this value. Default 8 (tolerates minor compositor jitter / dithering).
41
+ */
42
+ pixelChannelTolerance?: number;
43
+ /**
44
+ * A pixel qualifies as "solid black" when R + G + B is ≤ this value.
45
+ * Default 12 (covers hardware capture bugs that write pure #000 as well
46
+ * as slightly off-black values from Chrome's compositor).
47
+ */
48
+ blackSumThreshold?: number;
49
+ /**
50
+ * A pixel qualifies as "has content" (non-black) when R + G + B is ≥ this
51
+ * value. Default 32 — deliberately higher than `blackSumThreshold` so the
52
+ * two categories cannot overlap on borderline near-black pixels.
53
+ */
54
+ contentSumThreshold?: number;
55
+ /**
56
+ * A frame is flagged as failing parity when the black-only-in-A fraction
57
+ * of pixels exceeds this value. Default 0.001 (~0.1% of the frame).
58
+ * Lowering trades sensitivity for false-positive risk on legitimate
59
+ * animation frames that momentarily contain a small black shape only on
60
+ * one capture path.
61
+ */
62
+ blackOnlyFractionThreshold?: number;
63
+ }
64
+ export interface BlackOnlyInARegion {
65
+ /** Count of pixels that are black in A but have content in B. */
66
+ pixels: number;
67
+ /** `pixels / (width * height)`. */
68
+ fraction: number;
69
+ /**
70
+ * Axis-aligned bounding box of all black-only-in-A pixels. `null` when
71
+ * `pixels === 0`. This is intentionally coarse — a single bbox is
72
+ * cheaper than connected-component labeling and is sufficient to
73
+ * localize the "one large black rectangle" pattern the field bugs
74
+ * produce. Callers wanting per-region detail can extend this later.
75
+ */
76
+ boundingBox: {
77
+ x: number;
78
+ y: number;
79
+ width: number;
80
+ height: number;
81
+ } | null;
82
+ }
83
+ export interface GpuParityDiffResult {
84
+ /** Frame dimensions (both inputs must match). */
85
+ width: number;
86
+ height: number;
87
+ /** Total pixels compared. */
88
+ totalPixels: number;
89
+ /** Pixels differing beyond `pixelChannelTolerance`. */
90
+ diffPixels: number;
91
+ /** `diffPixels / totalPixels`. */
92
+ diffFraction: number;
93
+ /**
94
+ * Pixels that are solid-black in A (the hardware-GPU frame by
95
+ * convention) *and* have content in B (the software-GPU frame). This
96
+ * is the diagnostic-grade signal for shape-dependent hardware-GPU
97
+ * capture bugs.
98
+ */
99
+ blackOnlyInA: BlackOnlyInARegion;
100
+ /**
101
+ * Symmetric counterpart — black in B but content in A. Useful for
102
+ * ruling out the inverse (extremely rare in the wild, but if it
103
+ * shows up it means the software path is the buggy one).
104
+ */
105
+ blackOnlyInB: BlackOnlyInARegion;
106
+ }
107
+ export interface VerifyGpuParityResult {
108
+ ok: boolean;
109
+ /** Human-readable failure summary; empty when `ok === true`. */
110
+ reason: string;
111
+ diff: GpuParityDiffResult;
112
+ }
113
+ /**
114
+ * Compare two RGBA frames captured via different GPU paths.
115
+ *
116
+ * The two inputs must have identical dimensions; on mismatch this throws
117
+ * (with the mismatched sizes surfaced in the message) so callers cannot
118
+ * silently compare misaligned frames.
119
+ *
120
+ * Alpha channel is *not* considered for the black-only detection — Chrome's
121
+ * capture output is opaque along the code paths this diagnostic targets,
122
+ * and considering alpha would false-positive on legitimately transparent
123
+ * pixels. `pixelChannelTolerance` also compares only R/G/B for the same
124
+ * reason.
125
+ */
126
+ export declare function diffGpuParityFrames(a: RgbaFrame, b: RgbaFrame, options?: GpuParityDiffOptions): GpuParityDiffResult;
127
+ /**
128
+ * PNG-buffer convenience wrapper around `diffGpuParityFrames`. Decodes
129
+ * both inputs via `decodePng` and delegates. Errors from the decoder are
130
+ * re-thrown with `cause` preserved so the failing side (A or B) is
131
+ * obvious in the stack.
132
+ */
133
+ export declare function diffGpuParityPngs(pngA: Buffer, pngB: Buffer, options?: GpuParityDiffOptions): GpuParityDiffResult;
134
+ /**
135
+ * Verdict wrapper — returns `{ ok, reason }` suitable for a follow-up
136
+ * CLI or gate to emit. `ok === false` when either black-only fraction
137
+ * exceeds `blackOnlyFractionThreshold`. Raw diff numbers are always
138
+ * included on both branches so callers can log or gate on their own
139
+ * metrics without a second pass.
140
+ */
141
+ export declare function verifyGpuParity(a: RgbaFrame, b: RgbaFrame, options?: GpuParityDiffOptions): VerifyGpuParityResult;
142
+ //# sourceMappingURL=gpuParityDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpuParityDiff.d.ts","sourceRoot":"","sources":["../../src/utils/gpuParityDiff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,EAAE,kBAAkB,CAAC;IACjC;;;;OAIG;IACH,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAWD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,EACZ,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA0GrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAcrB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,EACZ,OAAO,GAAE,oBAAyB,GACjC,qBAAqB,CA+BvB"}