@hyperframes/engine 0.4.6 → 0.4.8
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 +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/services/browserManager.d.ts.map +1 -1
- package/dist/services/browserManager.js +6 -3
- package/dist/services/browserManager.js.map +1 -1
- package/dist/services/chunkEncoder.d.ts +14 -7
- package/dist/services/chunkEncoder.d.ts.map +1 -1
- package/dist/services/chunkEncoder.js +25 -9
- package/dist/services/chunkEncoder.js.map +1 -1
- package/dist/services/chunkEncoder.types.d.ts +4 -0
- package/dist/services/chunkEncoder.types.d.ts.map +1 -1
- package/dist/services/hdrCapture.d.ts +62 -0
- package/dist/services/hdrCapture.d.ts.map +1 -0
- package/dist/services/hdrCapture.js +259 -0
- package/dist/services/hdrCapture.js.map +1 -0
- package/dist/services/screenshotService.d.ts +115 -0
- package/dist/services/screenshotService.d.ts.map +1 -1
- package/dist/services/screenshotService.js +252 -19
- package/dist/services/screenshotService.js.map +1 -1
- package/dist/services/streamingEncoder.d.ts +18 -3
- package/dist/services/streamingEncoder.d.ts.map +1 -1
- package/dist/services/streamingEncoder.js +104 -50
- package/dist/services/streamingEncoder.js.map +1 -1
- package/dist/services/videoFrameExtractor.d.ts.map +1 -1
- package/dist/services/videoFrameExtractor.js +109 -18
- package/dist/services/videoFrameExtractor.js.map +1 -1
- package/dist/services/videoFrameInjector.d.ts +59 -0
- package/dist/services/videoFrameInjector.d.ts.map +1 -1
- package/dist/services/videoFrameInjector.js +290 -0
- package/dist/services/videoFrameInjector.js.map +1 -1
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/alphaBlit.d.ts +105 -0
- package/dist/utils/alphaBlit.d.ts.map +1 -0
- package/dist/utils/alphaBlit.js +550 -0
- package/dist/utils/alphaBlit.js.map +1 -0
- package/dist/utils/ffprobe.d.ts +10 -0
- package/dist/utils/ffprobe.d.ts.map +1 -1
- package/dist/utils/ffprobe.js +7 -0
- package/dist/utils/ffprobe.js.map +1 -1
- package/dist/utils/hdr.d.ts +82 -0
- package/dist/utils/hdr.d.ts.map +1 -0
- package/dist/utils/hdr.js +87 -0
- package/dist/utils/hdr.js.map +1 -0
- package/dist/utils/layerCompositor.d.ts +36 -0
- package/dist/utils/layerCompositor.d.ts.map +1 -0
- package/dist/utils/layerCompositor.js +49 -0
- package/dist/utils/layerCompositor.js.map +1 -0
- package/dist/utils/shaderTransitions.d.ts +166 -0
- package/dist/utils/shaderTransitions.d.ts.map +1 -0
- package/dist/utils/shaderTransitions.js +894 -0
- package/dist/utils/shaderTransitions.js.map +1 -0
- package/package.json +3 -2
- package/src/config.ts +16 -0
- package/src/index.ts +61 -0
- package/src/services/browserManager.ts +6 -3
- package/src/services/chunkEncoder.test.ts +88 -0
- package/src/services/chunkEncoder.ts +35 -9
- package/src/services/chunkEncoder.types.ts +3 -0
- package/src/services/hdrCapture.test.ts +159 -0
- package/src/services/hdrCapture.ts +354 -0
- package/src/services/screenshotService.ts +271 -17
- package/src/services/streamingEncoder.test.ts +228 -0
- package/src/services/streamingEncoder.ts +153 -63
- package/src/services/videoFrameExtractor.ts +135 -31
- package/src/services/videoFrameInjector.ts +342 -0
- package/src/types.ts +34 -0
- package/src/utils/alphaBlit.test.ts +993 -0
- package/src/utils/alphaBlit.ts +643 -0
- package/src/utils/ffprobe.ts +22 -0
- package/src/utils/hdr.test.ts +191 -0
- package/src/utils/hdr.ts +137 -0
- package/src/utils/layerCompositor.test.ts +141 -0
- package/src/utils/layerCompositor.ts +58 -0
- package/src/utils/shaderTransitions.test.ts +674 -0
- package/src/utils/shaderTransitions.ts +1130 -0
- package/src/utils/uint16-alignment-audit.test.ts +125 -0
- package/tsconfig.json +2 -1
|
@@ -91,4 +91,294 @@ export function createVideoFrameInjector(frameLookup, config) {
|
|
|
91
91
|
}
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Hide specific video elements by ID. Used in Pass 1 of the HDR pipeline so
|
|
96
|
+
* Chrome screenshots only contain DOM content (text, overlays) with transparent
|
|
97
|
+
* holes where the HDR videos go.
|
|
98
|
+
*/
|
|
99
|
+
export async function hideVideoElements(page, videoIds) {
|
|
100
|
+
if (videoIds.length === 0)
|
|
101
|
+
return;
|
|
102
|
+
await page.evaluate((ids) => {
|
|
103
|
+
for (const id of ids) {
|
|
104
|
+
const el = document.getElementById(id);
|
|
105
|
+
if (el) {
|
|
106
|
+
el.style.setProperty("visibility", "hidden", "important");
|
|
107
|
+
el.style.setProperty("opacity", "0", "important");
|
|
108
|
+
// Also hide the injected render frame image if present
|
|
109
|
+
const img = document.getElementById(`__render_frame_${id}__`);
|
|
110
|
+
if (img)
|
|
111
|
+
img.style.setProperty("visibility", "hidden", "important");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}, videoIds);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Restore visibility of video elements after a DOM screenshot.
|
|
118
|
+
*/
|
|
119
|
+
export async function showVideoElements(page, videoIds) {
|
|
120
|
+
if (videoIds.length === 0)
|
|
121
|
+
return;
|
|
122
|
+
await page.evaluate((ids) => {
|
|
123
|
+
for (const id of ids) {
|
|
124
|
+
const el = document.getElementById(id);
|
|
125
|
+
if (el) {
|
|
126
|
+
el.style.removeProperty("visibility");
|
|
127
|
+
el.style.removeProperty("opacity");
|
|
128
|
+
const img = document.getElementById(`__render_frame_${id}__`);
|
|
129
|
+
if (img)
|
|
130
|
+
img.style.removeProperty("visibility");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}, videoIds);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Query the current bounds, transform, and visibility of video elements.
|
|
137
|
+
* Called after seeking (so GSAP has moved things) but before the screenshot.
|
|
138
|
+
*/
|
|
139
|
+
export async function queryVideoElementBounds(page, videoIds) {
|
|
140
|
+
if (videoIds.length === 0)
|
|
141
|
+
return [];
|
|
142
|
+
return page.evaluate((ids) => {
|
|
143
|
+
return ids.map((id) => {
|
|
144
|
+
const el = document.getElementById(id);
|
|
145
|
+
if (!el) {
|
|
146
|
+
return {
|
|
147
|
+
videoId: id,
|
|
148
|
+
x: 0,
|
|
149
|
+
y: 0,
|
|
150
|
+
width: 0,
|
|
151
|
+
height: 0,
|
|
152
|
+
opacity: 0,
|
|
153
|
+
transform: "none",
|
|
154
|
+
zIndex: 0,
|
|
155
|
+
visible: false,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const rect = el.getBoundingClientRect();
|
|
159
|
+
const style = window.getComputedStyle(el);
|
|
160
|
+
const zIndex = parseInt(style.zIndex) || 0;
|
|
161
|
+
const opacity = parseFloat(style.opacity) || 1;
|
|
162
|
+
const transform = style.transform || "none";
|
|
163
|
+
const visible = style.visibility !== "hidden" &&
|
|
164
|
+
style.display !== "none" &&
|
|
165
|
+
rect.width > 0 &&
|
|
166
|
+
rect.height > 0;
|
|
167
|
+
return {
|
|
168
|
+
videoId: id,
|
|
169
|
+
x: Math.round(rect.x),
|
|
170
|
+
y: Math.round(rect.y),
|
|
171
|
+
width: Math.round(rect.width),
|
|
172
|
+
height: Math.round(rect.height),
|
|
173
|
+
opacity,
|
|
174
|
+
transform,
|
|
175
|
+
zIndex,
|
|
176
|
+
visible,
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
}, videoIds);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Query Chrome for ALL timed elements' stacking context.
|
|
183
|
+
* Returns z-index, bounds, opacity, and whether each element is a native HDR video.
|
|
184
|
+
*
|
|
185
|
+
* Queries every element with `data-start` (not just videos) so the layer compositor
|
|
186
|
+
* can determine z-ordering between DOM content and HDR video elements.
|
|
187
|
+
*/
|
|
188
|
+
export async function queryElementStacking(page, nativeHdrVideoIds) {
|
|
189
|
+
const hdrIds = Array.from(nativeHdrVideoIds);
|
|
190
|
+
return page.evaluate((hdrIdList) => {
|
|
191
|
+
const hdrSet = new Set(hdrIdList);
|
|
192
|
+
const elements = document.querySelectorAll("[data-start]");
|
|
193
|
+
const results = [];
|
|
194
|
+
// Walk up the DOM to find the effective z-index from the nearest
|
|
195
|
+
// positioned ancestor with a z-index. CSS z-index only applies to
|
|
196
|
+
// positioned elements; video elements inside positioned wrappers
|
|
197
|
+
// inherit the wrapper's stacking context.
|
|
198
|
+
//
|
|
199
|
+
// ## Supported subset
|
|
200
|
+
//
|
|
201
|
+
// This implementation looks for explicit `z-index` on positioned
|
|
202
|
+
// (non-static) ancestors. It does NOT detect the CSS stacking contexts
|
|
203
|
+
// created implicitly by other properties — including `opacity < 1`,
|
|
204
|
+
// `transform`, `filter`, `will-change`, `isolation: isolate`, and
|
|
205
|
+
// `mix-blend-mode`. GSAP routinely sets `transform` on wrappers, which
|
|
206
|
+
// creates an implicit stacking context with auto z-index; an HDR video
|
|
207
|
+
// inside such a wrapper with no explicit z-index will return the
|
|
208
|
+
// wrapper-of-the-wrapper's z-index here, potentially reordering layers
|
|
209
|
+
// incorrectly relative to sibling stacking contexts.
|
|
210
|
+
//
|
|
211
|
+
// The workaround is to set explicit `z-index` on the positioned wrapper
|
|
212
|
+
// when you want it treated as a compositing layer root. This matches
|
|
213
|
+
// what compositions need to do anyway for deterministic z-ordering.
|
|
214
|
+
function getEffectiveZIndex(node) {
|
|
215
|
+
let current = node;
|
|
216
|
+
while (current) {
|
|
217
|
+
const cs = window.getComputedStyle(current);
|
|
218
|
+
const pos = cs.position;
|
|
219
|
+
const z = parseInt(cs.zIndex);
|
|
220
|
+
if (!Number.isNaN(z) && pos !== "static")
|
|
221
|
+
return z;
|
|
222
|
+
current = current.parentElement;
|
|
223
|
+
}
|
|
224
|
+
return 0;
|
|
225
|
+
}
|
|
226
|
+
// Find border-radius that clips the element. Replaced elements like <video>
|
|
227
|
+
// clip to their own border-radius; ancestors need overflow !== visible.
|
|
228
|
+
function getEffectiveBorderRadius(node) {
|
|
229
|
+
// Resolve a CSS border-radius value to pixels. Chrome's getComputedStyle
|
|
230
|
+
// returns percentages as-is (e.g. "50%"), not resolved to px.
|
|
231
|
+
// Uses offsetWidth/offsetHeight (layout dimensions before CSS transforms)
|
|
232
|
+
// because CSS resolves percentages against the padding box, not the
|
|
233
|
+
// transformed bounding box.
|
|
234
|
+
function resolveRadius(value, el) {
|
|
235
|
+
if (value.includes("%")) {
|
|
236
|
+
const pct = parseFloat(value) / 100;
|
|
237
|
+
const htmlEl = el;
|
|
238
|
+
const w = htmlEl.offsetWidth || 0;
|
|
239
|
+
const h = htmlEl.offsetHeight || 0;
|
|
240
|
+
return pct * Math.min(w, h);
|
|
241
|
+
}
|
|
242
|
+
return parseFloat(value) || 0;
|
|
243
|
+
}
|
|
244
|
+
// Check element itself (replaced elements clip to own border-radius)
|
|
245
|
+
const selfCs = window.getComputedStyle(node);
|
|
246
|
+
const selfRadii = [
|
|
247
|
+
resolveRadius(selfCs.borderTopLeftRadius, node),
|
|
248
|
+
resolveRadius(selfCs.borderTopRightRadius, node),
|
|
249
|
+
resolveRadius(selfCs.borderBottomRightRadius, node),
|
|
250
|
+
resolveRadius(selfCs.borderBottomLeftRadius, node),
|
|
251
|
+
];
|
|
252
|
+
if (selfRadii[0] > 0 || selfRadii[1] > 0 || selfRadii[2] > 0 || selfRadii[3] > 0) {
|
|
253
|
+
return selfRadii;
|
|
254
|
+
}
|
|
255
|
+
// Walk ancestors looking for clipping container
|
|
256
|
+
let current = node.parentElement;
|
|
257
|
+
while (current) {
|
|
258
|
+
const cs = window.getComputedStyle(current);
|
|
259
|
+
if (cs.overflow !== "visible") {
|
|
260
|
+
const tl = resolveRadius(cs.borderTopLeftRadius, current);
|
|
261
|
+
const tr = resolveRadius(cs.borderTopRightRadius, current);
|
|
262
|
+
const brr = resolveRadius(cs.borderBottomRightRadius, current);
|
|
263
|
+
const bl = resolveRadius(cs.borderBottomLeftRadius, current);
|
|
264
|
+
if (tl > 0 || tr > 0 || brr > 0 || bl > 0) {
|
|
265
|
+
return [tl, tr, brr, bl];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
current = current.parentElement;
|
|
269
|
+
}
|
|
270
|
+
return [0, 0, 0, 0];
|
|
271
|
+
}
|
|
272
|
+
// Walk up the DOM multiplying each ancestor's opacity. GSAP animates
|
|
273
|
+
// opacity on wrapper divs, not directly on the video element, so the
|
|
274
|
+
// element's own opacity is often 1.0. Multiplying ancestors gives the
|
|
275
|
+
// true effective opacity.
|
|
276
|
+
function getEffectiveOpacity(node) {
|
|
277
|
+
let opacity = 1;
|
|
278
|
+
let current = node;
|
|
279
|
+
while (current) {
|
|
280
|
+
const cs = window.getComputedStyle(current);
|
|
281
|
+
const val = parseFloat(cs.opacity);
|
|
282
|
+
// Note: `val || 1` would turn opacity:0 into 1 (0 is falsy)
|
|
283
|
+
opacity *= Number.isNaN(val) ? 1 : val;
|
|
284
|
+
current = current.parentElement;
|
|
285
|
+
}
|
|
286
|
+
return opacity;
|
|
287
|
+
}
|
|
288
|
+
// Compute the full CSS transform matrix from element-local coords to
|
|
289
|
+
// viewport coords by walking the offsetParent chain and accumulating
|
|
290
|
+
// position offsets + CSS transforms. This correctly handles GSAP
|
|
291
|
+
// animations on wrapper divs (rotation, scale) that getBoundingClientRect
|
|
292
|
+
// conflates into an axis-aligned bounding box.
|
|
293
|
+
function getViewportMatrix(node) {
|
|
294
|
+
const chain = [];
|
|
295
|
+
let current = node;
|
|
296
|
+
while (current instanceof HTMLElement) {
|
|
297
|
+
chain.push(current);
|
|
298
|
+
const next = current.offsetParent ?? current.parentElement;
|
|
299
|
+
if (next === current)
|
|
300
|
+
break;
|
|
301
|
+
current = next;
|
|
302
|
+
}
|
|
303
|
+
let mat = new DOMMatrix();
|
|
304
|
+
for (let i = chain.length - 1; i >= 0; i--) {
|
|
305
|
+
const htmlEl = chain[i];
|
|
306
|
+
if (!htmlEl)
|
|
307
|
+
continue;
|
|
308
|
+
mat = mat.translate(htmlEl.offsetLeft, htmlEl.offsetTop);
|
|
309
|
+
const cs = window.getComputedStyle(htmlEl);
|
|
310
|
+
if (cs.transform && cs.transform !== "none") {
|
|
311
|
+
const origin = cs.transformOrigin.split(" ");
|
|
312
|
+
const ox = resolveLength(origin[0] ?? "0", htmlEl.offsetWidth);
|
|
313
|
+
const oy = resolveLength(origin[1] ?? "0", htmlEl.offsetHeight);
|
|
314
|
+
try {
|
|
315
|
+
const t = new DOMMatrix(cs.transform);
|
|
316
|
+
if (Number.isFinite(t.a) &&
|
|
317
|
+
Number.isFinite(t.b) &&
|
|
318
|
+
Number.isFinite(t.c) &&
|
|
319
|
+
Number.isFinite(t.d) &&
|
|
320
|
+
Number.isFinite(t.e) &&
|
|
321
|
+
Number.isFinite(t.f)) {
|
|
322
|
+
mat = mat.translate(ox, oy).multiply(t).translate(-ox, -oy);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// DOMMatrix constructor throws on malformed input — skip ancestor.
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return mat.toString();
|
|
331
|
+
}
|
|
332
|
+
function resolveLength(value, basis) {
|
|
333
|
+
if (value.endsWith("%")) {
|
|
334
|
+
const pct = parseFloat(value) / 100;
|
|
335
|
+
return Number.isFinite(pct) ? pct * basis : 0;
|
|
336
|
+
}
|
|
337
|
+
const n = parseFloat(value);
|
|
338
|
+
return Number.isFinite(n) ? n : 0;
|
|
339
|
+
}
|
|
340
|
+
for (const el of elements) {
|
|
341
|
+
const id = el.id;
|
|
342
|
+
if (!id)
|
|
343
|
+
continue;
|
|
344
|
+
const rect = el.getBoundingClientRect();
|
|
345
|
+
const style = window.getComputedStyle(el);
|
|
346
|
+
const zIndex = getEffectiveZIndex(el);
|
|
347
|
+
// For HDR video elements, the frame injector sets `opacity: 0 !important`
|
|
348
|
+
// on the element itself. Start the opacity walk from the parent to get the
|
|
349
|
+
// real GSAP-animated opacity from wrapper divs.
|
|
350
|
+
const isHdrEl = hdrSet.has(id);
|
|
351
|
+
const opacityStartNode = isHdrEl ? el.parentElement : el;
|
|
352
|
+
const opacity = opacityStartNode ? getEffectiveOpacity(opacityStartNode) : 1;
|
|
353
|
+
const visible = style.visibility !== "hidden" &&
|
|
354
|
+
style.display !== "none" &&
|
|
355
|
+
rect.width > 0 &&
|
|
356
|
+
rect.height > 0;
|
|
357
|
+
// offsetWidth/offsetHeight only exist on HTMLElement (not on
|
|
358
|
+
// SVGElement, MathMLElement, etc.). Fall back to the bounding rect
|
|
359
|
+
// dimensions for non-HTML elements so callers always get sensible
|
|
360
|
+
// layout numbers.
|
|
361
|
+
const htmlEl = el instanceof HTMLElement ? el : null;
|
|
362
|
+
results.push({
|
|
363
|
+
id,
|
|
364
|
+
zIndex,
|
|
365
|
+
x: Math.round(rect.x),
|
|
366
|
+
y: Math.round(rect.y),
|
|
367
|
+
width: Math.round(rect.width),
|
|
368
|
+
height: Math.round(rect.height),
|
|
369
|
+
layoutWidth: htmlEl?.offsetWidth || Math.round(rect.width),
|
|
370
|
+
layoutHeight: htmlEl?.offsetHeight || Math.round(rect.height),
|
|
371
|
+
opacity,
|
|
372
|
+
visible,
|
|
373
|
+
isHdr: hdrSet.has(id),
|
|
374
|
+
// For HDR elements, use the full accumulated viewport matrix so the
|
|
375
|
+
// affine blit can apply rotation/scale/translate properly. For DOM
|
|
376
|
+
// elements, the element-level transform is sufficient for reference.
|
|
377
|
+
transform: isHdrEl ? getViewportMatrix(el) : style.transform || "none",
|
|
378
|
+
borderRadius: isHdrEl ? getEffectiveBorderRadius(el) : [0, 0, 0, 0],
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
return results;
|
|
382
|
+
}, hdrIds);
|
|
383
|
+
}
|
|
94
384
|
//# sourceMappingURL=videoFrameInjector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoFrameInjector.js","sourceRoot":"","sources":["../../src/services/videoFrameInjector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"videoFrameInjector.js","sourceRoot":"","sources":["../../src/services/videoFrameInjector.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -27,6 +27,28 @@ export interface HfMediaElement {
|
|
|
27
27
|
/** Whether this element has audio that should be extracted */
|
|
28
28
|
hasAudio?: boolean;
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Metadata for a shader transition between two scenes.
|
|
32
|
+
*
|
|
33
|
+
* Compositions using @hyperframes/shader-transitions populate
|
|
34
|
+
* `window.__hf.transitions` with one entry per transition so the
|
|
35
|
+
* producer can pre-compute scene ranges, capture per-scene buffers,
|
|
36
|
+
* and apply the transition in HDR-aware compositing.
|
|
37
|
+
*/
|
|
38
|
+
export interface HfTransitionMeta {
|
|
39
|
+
/** Time the transition starts (seconds) */
|
|
40
|
+
time: number;
|
|
41
|
+
/** Transition duration (seconds) */
|
|
42
|
+
duration: number;
|
|
43
|
+
/** Shader identifier (e.g. "fade", "wipe") */
|
|
44
|
+
shader: string;
|
|
45
|
+
/** GSAP easing string (e.g. "power2.inOut") */
|
|
46
|
+
ease: string;
|
|
47
|
+
/** Scene id the transition starts from */
|
|
48
|
+
fromScene: string;
|
|
49
|
+
/** Scene id the transition ends on */
|
|
50
|
+
toScene: string;
|
|
51
|
+
}
|
|
30
52
|
/**
|
|
31
53
|
* The seek protocol. The only contract between the engine and a page.
|
|
32
54
|
*
|
|
@@ -38,6 +60,14 @@ export interface HfMediaElement {
|
|
|
38
60
|
* GSAP, Framer Motion, CSS animations, Three.js — anything works as long
|
|
39
61
|
* as `seek()` produces deterministic visual output for a given time.
|
|
40
62
|
*/
|
|
63
|
+
export interface HfTransitionMeta {
|
|
64
|
+
time: number;
|
|
65
|
+
duration: number;
|
|
66
|
+
shader: string;
|
|
67
|
+
ease: string;
|
|
68
|
+
fromScene: string;
|
|
69
|
+
toScene: string;
|
|
70
|
+
}
|
|
41
71
|
export interface HfProtocol {
|
|
42
72
|
/** Total duration of the composition in seconds */
|
|
43
73
|
duration: number;
|
|
@@ -45,6 +75,8 @@ export interface HfProtocol {
|
|
|
45
75
|
seek(time: number): void;
|
|
46
76
|
/** Optional: media elements the engine should handle */
|
|
47
77
|
media?: HfMediaElement[];
|
|
78
|
+
/** Optional: shader transition metadata, populated by @hyperframes/shader-transitions */
|
|
79
|
+
transitions?: HfTransitionMeta[];
|
|
48
80
|
}
|
|
49
81
|
export interface CaptureOptions {
|
|
50
82
|
width: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wDAAwD;IACxD,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wDAAwD;IACxD,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,yFAAyF;IACzF,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAID,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,IAAI,CAAC,EAAE,UAAU,CAAC;KACnB;CACF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alpha Blit — in-memory PNG decode + alpha compositing over rgb48le HDR frames.
|
|
3
|
+
*
|
|
4
|
+
* Replaces per-frame FFmpeg spawns for the two-pass HDR compositing path.
|
|
5
|
+
* Uses only Node.js built-ins (zlib) — no additional dependencies.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Decode a PNG buffer to raw RGBA pixel data (8-bit per channel).
|
|
9
|
+
*
|
|
10
|
+
* Supports color type 6 (RGBA) and color type 2 (RGB) at 8-bit depth,
|
|
11
|
+
* non-interlaced. Chrome's Page.captureScreenshot always emits this format.
|
|
12
|
+
*
|
|
13
|
+
* Returns a Uint8Array of width*height*4 bytes in RGBA order.
|
|
14
|
+
*/
|
|
15
|
+
export declare function decodePng(buf: Buffer): {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
data: Uint8Array;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Decode a 16-bit RGB PNG (from FFmpeg) to an rgb48le Buffer.
|
|
22
|
+
*
|
|
23
|
+
* FFmpeg's `-pix_fmt rgb48le -c:v png` produces 16-bit RGB PNGs.
|
|
24
|
+
* PNG stores 16-bit values in big-endian; this function swaps to little-endian
|
|
25
|
+
* for the streaming encoder's rgb48le input format.
|
|
26
|
+
*
|
|
27
|
+
* Supports colorType 2 (RGB) and 6 (RGBA) at 16-bit depth, non-interlaced.
|
|
28
|
+
*/
|
|
29
|
+
export declare function decodePngToRgb48le(buf: Buffer): {
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
data: Buffer;
|
|
33
|
+
};
|
|
34
|
+
/** Select the correct sRGB→HDR LUT for the given transfer function. */
|
|
35
|
+
export declare function getSrgbToHdrLut(transfer: "hlg" | "pq"): Uint16Array;
|
|
36
|
+
/**
|
|
37
|
+
* Alpha-composite a DOM RGBA overlay (8-bit sRGB) onto an HDR canvas
|
|
38
|
+
* (rgb48le) in-place.
|
|
39
|
+
*
|
|
40
|
+
* DOM pixels are converted from sRGB to the target HDR signal space (HLG or PQ)
|
|
41
|
+
* before blending so the composited output is uniformly encoded. Without this
|
|
42
|
+
* conversion, sRGB content appears orange/washed in HDR playback.
|
|
43
|
+
*
|
|
44
|
+
* @param domRgba Raw RGBA pixel data from decodePng() — width*height*4 bytes
|
|
45
|
+
* @param canvas HDR canvas in rgb48le format — width*height*6 bytes, mutated in-place
|
|
46
|
+
* @param width Canvas width in pixels
|
|
47
|
+
* @param height Canvas height in pixels
|
|
48
|
+
* @param transfer HDR transfer function — selects the correct sRGB→HDR LUT
|
|
49
|
+
*/
|
|
50
|
+
export declare function blitRgba8OverRgb48le(domRgba: Uint8Array, canvas: Buffer, width: number, height: number, transfer?: "hlg" | "pq"): void;
|
|
51
|
+
/**
|
|
52
|
+
* Compute the alpha (0.0–1.0) for a point inside a rounded rectangle.
|
|
53
|
+
* Returns 1.0 for interior pixels, 0.0 for exterior, and a smooth
|
|
54
|
+
* transition at the corner edges (1px anti-aliasing).
|
|
55
|
+
*
|
|
56
|
+
* @param px X coordinate (continuous, e.g. pixel center or subpixel)
|
|
57
|
+
* @param py Y coordinate
|
|
58
|
+
* @param w Rectangle width
|
|
59
|
+
* @param h Rectangle height
|
|
60
|
+
* @param radii Corner radii [topLeft, topRight, bottomRight, bottomLeft]
|
|
61
|
+
*/
|
|
62
|
+
export declare function roundedRectAlpha(px: number, py: number, w: number, h: number, radii: [number, number, number, number]): number;
|
|
63
|
+
/**
|
|
64
|
+
* Copy a rectangular region of an rgb48le source onto an rgb48le canvas
|
|
65
|
+
* at position (dx, dy). Clips to canvas bounds. Optional opacity blending
|
|
66
|
+
* (0.0–1.0) over existing canvas content.
|
|
67
|
+
*
|
|
68
|
+
* @param canvas Destination rgb48le buffer (canvasWidth * canvasHeight * 6 bytes)
|
|
69
|
+
* @param source Source rgb48le buffer (sw * sh * 6 bytes)
|
|
70
|
+
* @param dx Destination X offset on canvas
|
|
71
|
+
* @param dy Destination Y offset on canvas
|
|
72
|
+
* @param sw Source width in pixels
|
|
73
|
+
* @param sh Source height in pixels
|
|
74
|
+
* @param canvasWidth Canvas width in pixels (needed for stride calculation)
|
|
75
|
+
* @param canvasHeight Canvas height in pixels (used to clip the destination region)
|
|
76
|
+
* @param opacity Optional opacity 0.0–1.0 (default 1.0 = fully opaque copy)
|
|
77
|
+
*/
|
|
78
|
+
export declare function blitRgb48leRegion(canvas: Buffer, source: Buffer, dx: number, dy: number, sw: number, sh: number, canvasWidth: number, canvasHeight: number, opacity?: number, borderRadius?: [number, number, number, number]): void;
|
|
79
|
+
/**
|
|
80
|
+
* Apply a 2D affine transform to an rgb48le source and composite onto a canvas.
|
|
81
|
+
*
|
|
82
|
+
* For each destination pixel, the inverse transform maps back to source coordinates.
|
|
83
|
+
* Bilinear interpolation samples the 4 nearest source pixels for smooth scaling/rotation.
|
|
84
|
+
*
|
|
85
|
+
* @param canvas Destination rgb48le buffer, mutated in-place
|
|
86
|
+
* @param source Source rgb48le buffer (srcW * srcH * 6 bytes)
|
|
87
|
+
* @param matrix CSS transform matrix [a, b, c, d, tx, ty]
|
|
88
|
+
* @param srcW Source width in pixels
|
|
89
|
+
* @param srcH Source height in pixels
|
|
90
|
+
* @param canvasW Canvas width in pixels
|
|
91
|
+
* @param canvasH Canvas height in pixels
|
|
92
|
+
* @param opacity Optional opacity 0.0–1.0 (default 1.0)
|
|
93
|
+
*/
|
|
94
|
+
export declare function blitRgb48leAffine(canvas: Buffer, source: Buffer, matrix: number[], srcW: number, srcH: number, canvasW: number, canvasH: number, opacity?: number, borderRadius?: [number, number, number, number]): void;
|
|
95
|
+
/**
|
|
96
|
+
* Parse a CSS `matrix(a,b,c,d,e,f)` string into a 6-element array.
|
|
97
|
+
* Returns null for "none", empty, or unsupported formats (matrix3d).
|
|
98
|
+
*
|
|
99
|
+
* The array maps to the CSS matrix: [a, b, c, d, tx, ty] where:
|
|
100
|
+
* | a c tx | (a=scaleX, b=skewY, c=skewX, d=scaleY, tx/ty=translate)
|
|
101
|
+
* | b d ty |
|
|
102
|
+
* | 0 0 1 |
|
|
103
|
+
*/
|
|
104
|
+
export declare function parseTransformMatrix(css: string): number[] | null;
|
|
105
|
+
//# sourceMappingURL=alphaBlit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alphaBlit.d.ts","sourceRoot":"","sources":["../../src/utils/alphaBlit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiJH;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAuB1F;AAID;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA6B/F;AAsED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,GAAG,WAAW,CAEnE;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,KAAK,GAAG,IAAY,GAC7B,IAAI,CAiCN;AAcD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACtC,MAAM,CAOR;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9C,IAAI,CAqDN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9C,IAAI,CAyHN;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CASjE"}
|