@hyperframes/engine 0.7.59 → 0.7.60
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/config.d.ts +50 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +92 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/services/audioMixer.d.ts.map +1 -1
- package/dist/services/audioMixer.js +19 -0
- package/dist/services/audioMixer.js.map +1 -1
- package/dist/services/browserManager.d.ts.map +1 -1
- package/dist/services/browserManager.js +12 -0
- package/dist/services/browserManager.js.map +1 -1
- package/dist/services/frameCapture.d.ts +25 -0
- package/dist/services/frameCapture.d.ts.map +1 -1
- package/dist/services/frameCapture.js +34 -0
- package/dist/services/frameCapture.js.map +1 -1
- package/dist/services/pageNavigationTimeoutErrorHint.d.ts +79 -0
- package/dist/services/pageNavigationTimeoutErrorHint.d.ts.map +1 -0
- package/dist/services/pageNavigationTimeoutErrorHint.js +112 -0
- package/dist/services/pageNavigationTimeoutErrorHint.js.map +1 -0
- package/dist/services/parallelCoordinator.d.ts +21 -0
- package/dist/services/parallelCoordinator.d.ts.map +1 -1
- package/dist/services/parallelCoordinator.js +40 -1
- package/dist/services/parallelCoordinator.js.map +1 -1
- package/dist/services/protocolTimeoutErrorHint.d.ts +28 -0
- package/dist/services/protocolTimeoutErrorHint.d.ts.map +1 -0
- package/dist/services/protocolTimeoutErrorHint.js +45 -0
- package/dist/services/protocolTimeoutErrorHint.js.map +1 -0
- package/dist/services/systemMemory.d.ts.map +1 -1
- package/dist/services/systemMemory.js +4 -1
- package/dist/services/systemMemory.js.map +1 -1
- package/dist/services/videoFrameExtractor.d.ts +4 -5
- package/dist/services/videoFrameExtractor.d.ts.map +1 -1
- package/dist/services/videoFrameExtractor.js +18 -41
- package/dist/services/videoFrameExtractor.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/gpuParityDiff.d.ts +142 -0
- package/dist/utils/gpuParityDiff.d.ts.map +1 -0
- package/dist/utils/gpuParityDiff.js +205 -0
- package/dist/utils/gpuParityDiff.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,205 @@
|
|
|
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
|
+
import { decodePng } from "./alphaBlit.js";
|
|
31
|
+
// ── Defaults ────────────────────────────────────────────────────────────────
|
|
32
|
+
const DEFAULT_PIXEL_CHANNEL_TOLERANCE = 8;
|
|
33
|
+
const DEFAULT_BLACK_SUM_THRESHOLD = 12;
|
|
34
|
+
const DEFAULT_CONTENT_SUM_THRESHOLD = 32;
|
|
35
|
+
const DEFAULT_BLACK_ONLY_FRACTION_THRESHOLD = 0.001;
|
|
36
|
+
// ── Core diff ───────────────────────────────────────────────────────────────
|
|
37
|
+
/**
|
|
38
|
+
* Compare two RGBA frames captured via different GPU paths.
|
|
39
|
+
*
|
|
40
|
+
* The two inputs must have identical dimensions; on mismatch this throws
|
|
41
|
+
* (with the mismatched sizes surfaced in the message) so callers cannot
|
|
42
|
+
* silently compare misaligned frames.
|
|
43
|
+
*
|
|
44
|
+
* Alpha channel is *not* considered for the black-only detection — Chrome's
|
|
45
|
+
* capture output is opaque along the code paths this diagnostic targets,
|
|
46
|
+
* and considering alpha would false-positive on legitimately transparent
|
|
47
|
+
* pixels. `pixelChannelTolerance` also compares only R/G/B for the same
|
|
48
|
+
* reason.
|
|
49
|
+
*/
|
|
50
|
+
export function diffGpuParityFrames(a, b, options = {}) {
|
|
51
|
+
if (a.width !== b.width || a.height !== b.height) {
|
|
52
|
+
throw new Error(`diffGpuParityFrames: frame size mismatch — A is ${a.width}x${a.height}, ` +
|
|
53
|
+
`B is ${b.width}x${b.height}`);
|
|
54
|
+
}
|
|
55
|
+
const expectedLen = a.width * a.height * 4;
|
|
56
|
+
if (a.data.length !== expectedLen) {
|
|
57
|
+
throw new Error(`diffGpuParityFrames: frame A data length ${a.data.length} does not match ` +
|
|
58
|
+
`expected ${expectedLen} (${a.width}x${a.height} * 4)`);
|
|
59
|
+
}
|
|
60
|
+
if (b.data.length !== expectedLen) {
|
|
61
|
+
throw new Error(`diffGpuParityFrames: frame B data length ${b.data.length} does not match ` +
|
|
62
|
+
`expected ${expectedLen} (${b.width}x${b.height} * 4)`);
|
|
63
|
+
}
|
|
64
|
+
const tol = options.pixelChannelTolerance ?? DEFAULT_PIXEL_CHANNEL_TOLERANCE;
|
|
65
|
+
const blackSum = options.blackSumThreshold ?? DEFAULT_BLACK_SUM_THRESHOLD;
|
|
66
|
+
const contentSum = options.contentSumThreshold ?? DEFAULT_CONTENT_SUM_THRESHOLD;
|
|
67
|
+
if (contentSum <= blackSum) {
|
|
68
|
+
throw new Error(`diffGpuParityFrames: contentSumThreshold (${contentSum}) must be strictly greater ` +
|
|
69
|
+
`than blackSumThreshold (${blackSum}) — overlapping thresholds would double-classify ` +
|
|
70
|
+
`borderline pixels`);
|
|
71
|
+
}
|
|
72
|
+
const total = a.width * a.height;
|
|
73
|
+
const aData = a.data;
|
|
74
|
+
const bData = b.data;
|
|
75
|
+
let diffPixels = 0;
|
|
76
|
+
let blackOnlyAPixels = 0;
|
|
77
|
+
let blackOnlyBPixels = 0;
|
|
78
|
+
let aMinX = a.width;
|
|
79
|
+
let aMinY = a.height;
|
|
80
|
+
let aMaxX = -1;
|
|
81
|
+
let aMaxY = -1;
|
|
82
|
+
let bMinX = a.width;
|
|
83
|
+
let bMinY = a.height;
|
|
84
|
+
let bMaxX = -1;
|
|
85
|
+
let bMaxY = -1;
|
|
86
|
+
for (let y = 0; y < a.height; y++) {
|
|
87
|
+
for (let x = 0; x < a.width; x++) {
|
|
88
|
+
const i = (y * a.width + x) * 4;
|
|
89
|
+
const ar = aData[i] ?? 0;
|
|
90
|
+
const ag = aData[i + 1] ?? 0;
|
|
91
|
+
const ab = aData[i + 2] ?? 0;
|
|
92
|
+
const br = bData[i] ?? 0;
|
|
93
|
+
const bg = bData[i + 1] ?? 0;
|
|
94
|
+
const bb = bData[i + 2] ?? 0;
|
|
95
|
+
if (Math.abs(ar - br) > tol || Math.abs(ag - bg) > tol || Math.abs(ab - bb) > tol) {
|
|
96
|
+
diffPixels++;
|
|
97
|
+
}
|
|
98
|
+
const aSum = ar + ag + ab;
|
|
99
|
+
const bSum = br + bg + bb;
|
|
100
|
+
if (aSum <= blackSum && bSum >= contentSum) {
|
|
101
|
+
blackOnlyAPixels++;
|
|
102
|
+
if (x < aMinX)
|
|
103
|
+
aMinX = x;
|
|
104
|
+
if (y < aMinY)
|
|
105
|
+
aMinY = y;
|
|
106
|
+
if (x > aMaxX)
|
|
107
|
+
aMaxX = x;
|
|
108
|
+
if (y > aMaxY)
|
|
109
|
+
aMaxY = y;
|
|
110
|
+
}
|
|
111
|
+
else if (bSum <= blackSum && aSum >= contentSum) {
|
|
112
|
+
blackOnlyBPixels++;
|
|
113
|
+
if (x < bMinX)
|
|
114
|
+
bMinX = x;
|
|
115
|
+
if (y < bMinY)
|
|
116
|
+
bMinY = y;
|
|
117
|
+
if (x > bMaxX)
|
|
118
|
+
bMaxX = x;
|
|
119
|
+
if (y > bMaxY)
|
|
120
|
+
bMaxY = y;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
width: a.width,
|
|
126
|
+
height: a.height,
|
|
127
|
+
totalPixels: total,
|
|
128
|
+
diffPixels,
|
|
129
|
+
diffFraction: diffPixels / total,
|
|
130
|
+
blackOnlyInA: {
|
|
131
|
+
pixels: blackOnlyAPixels,
|
|
132
|
+
fraction: blackOnlyAPixels / total,
|
|
133
|
+
boundingBox: blackOnlyAPixels === 0
|
|
134
|
+
? null
|
|
135
|
+
: { x: aMinX, y: aMinY, width: aMaxX - aMinX + 1, height: aMaxY - aMinY + 1 },
|
|
136
|
+
},
|
|
137
|
+
blackOnlyInB: {
|
|
138
|
+
pixels: blackOnlyBPixels,
|
|
139
|
+
fraction: blackOnlyBPixels / total,
|
|
140
|
+
boundingBox: blackOnlyBPixels === 0
|
|
141
|
+
? null
|
|
142
|
+
: { x: bMinX, y: bMinY, width: bMaxX - bMinX + 1, height: bMaxY - bMinY + 1 },
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* PNG-buffer convenience wrapper around `diffGpuParityFrames`. Decodes
|
|
148
|
+
* both inputs via `decodePng` and delegates. Errors from the decoder are
|
|
149
|
+
* re-thrown with `cause` preserved so the failing side (A or B) is
|
|
150
|
+
* obvious in the stack.
|
|
151
|
+
*/
|
|
152
|
+
export function diffGpuParityPngs(pngA, pngB, options = {}) {
|
|
153
|
+
let a;
|
|
154
|
+
let b;
|
|
155
|
+
try {
|
|
156
|
+
a = decodePng(pngA);
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
throw new Error(`diffGpuParityPngs: failed to decode frame A`, { cause: err });
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
b = decodePng(pngB);
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
throw new Error(`diffGpuParityPngs: failed to decode frame B`, { cause: err });
|
|
166
|
+
}
|
|
167
|
+
return diffGpuParityFrames(a, b, options);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Verdict wrapper — returns `{ ok, reason }` suitable for a follow-up
|
|
171
|
+
* CLI or gate to emit. `ok === false` when either black-only fraction
|
|
172
|
+
* exceeds `blackOnlyFractionThreshold`. Raw diff numbers are always
|
|
173
|
+
* included on both branches so callers can log or gate on their own
|
|
174
|
+
* metrics without a second pass.
|
|
175
|
+
*/
|
|
176
|
+
export function verifyGpuParity(a, b, options = {}) {
|
|
177
|
+
const diff = diffGpuParityFrames(a, b, options);
|
|
178
|
+
const threshold = options.blackOnlyFractionThreshold ?? DEFAULT_BLACK_ONLY_FRACTION_THRESHOLD;
|
|
179
|
+
if (diff.blackOnlyInA.fraction > threshold) {
|
|
180
|
+
const bb = diff.blackOnlyInA.boundingBox;
|
|
181
|
+
const region = bb ? ` (bbox ${bb.x},${bb.y} ${bb.width}x${bb.height})` : "";
|
|
182
|
+
return {
|
|
183
|
+
ok: false,
|
|
184
|
+
reason: `hardware-GPU frame has ${diff.blackOnlyInA.pixels} pixel(s) ` +
|
|
185
|
+
`(${(diff.blackOnlyInA.fraction * 100).toFixed(3)}%) that are solid-black ` +
|
|
186
|
+
`while software-GPU frame has content there${region} — likely shape-dependent ` +
|
|
187
|
+
`hardware-GPU capture bug`,
|
|
188
|
+
diff,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
if (diff.blackOnlyInB.fraction > threshold) {
|
|
192
|
+
const bb = diff.blackOnlyInB.boundingBox;
|
|
193
|
+
const region = bb ? ` (bbox ${bb.x},${bb.y} ${bb.width}x${bb.height})` : "";
|
|
194
|
+
return {
|
|
195
|
+
ok: false,
|
|
196
|
+
reason: `software-GPU frame has ${diff.blackOnlyInB.pixels} pixel(s) ` +
|
|
197
|
+
`(${(diff.blackOnlyInB.fraction * 100).toFixed(3)}%) that are solid-black ` +
|
|
198
|
+
`while hardware-GPU frame has content there${region} — unexpected inverse ` +
|
|
199
|
+
`pattern, worth investigating`,
|
|
200
|
+
diff,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return { ok: true, reason: "", diff };
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=gpuParityDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpuParityDiff.js","sourceRoot":"","sources":["../../src/utils/gpuParityDiff.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/engine",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.60",
|
|
4
4
|
"description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"linkedom": "^0.18.12",
|
|
39
39
|
"puppeteer": "^25.2.1",
|
|
40
40
|
"puppeteer-core": "^25.2.1",
|
|
41
|
-
"@hyperframes/core": "^0.7.
|
|
41
|
+
"@hyperframes/core": "^0.7.60"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^25.0.10",
|