@hyperframes/engine 0.8.43 → 0.8.45
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/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/services/chunkEncoder.d.ts +57 -0
- package/dist/services/chunkEncoder.d.ts.map +1 -1
- package/dist/services/chunkEncoder.js +153 -30
- package/dist/services/chunkEncoder.js.map +1 -1
- package/dist/services/frameCapture.d.ts +33 -0
- package/dist/services/frameCapture.d.ts.map +1 -1
- package/dist/services/frameCapture.js +203 -91
- package/dist/services/frameCapture.js.map +1 -1
- package/dist/services/motionBlur.d.ts +103 -0
- package/dist/services/motionBlur.d.ts.map +1 -0
- package/dist/services/motionBlur.js +176 -0
- package/dist/services/motionBlur.js.map +1 -0
- package/dist/services/streamingEncoder.d.ts +10 -0
- package/dist/services/streamingEncoder.d.ts.map +1 -1
- package/dist/services/streamingEncoder.js +12 -3
- package/dist/services/streamingEncoder.js.map +1 -1
- package/dist/types.d.ts +19 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/alphaBlit.d.ts +33 -0
- package/dist/utils/alphaBlit.d.ts.map +1 -1
- package/dist/utils/alphaBlit.js +52 -4
- package/dist/utils/alphaBlit.js.map +1 -1
- package/dist/utils/crc32.d.ts +2 -0
- package/dist/utils/crc32.d.ts.map +1 -0
- package/dist/utils/crc32.js +35 -0
- package/dist/utils/crc32.js.map +1 -0
- package/dist/utils/ffprobe.d.ts.map +1 -1
- package/dist/utils/ffprobe.js +1 -31
- package/dist/utils/ffprobe.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameCapture.d.ts","sourceRoot":"","sources":["../../src/services/frameCapture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frameCapture.d.ts","sourceRoot":"","sources":["../../src/services/frameCapture.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
11
11
|
import { join } from "path";
|
|
12
|
-
import { quantizeTimeToFrame, fpsToNumber, resolveAuthoredTimingWindow, } from "@hyperframes/core";
|
|
12
|
+
import { quantizeSeekTime, quantizeTimeToFrame, fpsToNumber, resolveAuthoredTimingWindow, } from "@hyperframes/core";
|
|
13
13
|
import { DrawElementCaptureError } from "./drawElementCaptureError.js";
|
|
14
|
+
import { encodePng } from "../utils/alphaBlit.js";
|
|
15
|
+
import { MotionBlurAccumulator, motionBlurSampleTimes, motionBlurWindowIsStatic, resolveMotionBlurPlan, } from "./motionBlur.js";
|
|
14
16
|
// ── Extracted modules ───────────────────────────────────────────────────────
|
|
15
17
|
import { acquireBrowser, releaseBrowser, forceReleaseBrowser, buildChromeArgs, resolveBrowserGpuMode, resolveHeadlessShellPath, } from "./browserManager.js";
|
|
16
18
|
import { beginFrameCapture, ensureRenderFrameSiblings, getCdpSession, pageContentExceedsCaptureHeight, pageScreenshotCapture, initTransparentBackground, shouldDefaultCaptureBeyondViewport, } from "./screenshotService.js";
|
|
@@ -1653,7 +1655,7 @@ export async function initializeSession(session) {
|
|
|
1653
1655
|
await initDrawElementOrTransparentBackground(session, page, logInitPhase);
|
|
1654
1656
|
await armStaticDedup(session, session.page, logInitPhase);
|
|
1655
1657
|
await ensureRenderFrameSiblings(session.page);
|
|
1656
|
-
session
|
|
1658
|
+
finalizeSessionInit(session);
|
|
1657
1659
|
return;
|
|
1658
1660
|
}
|
|
1659
1661
|
// In BeginFrame mode, Chrome's event loop is paused until we issue frames.
|
|
@@ -1821,7 +1823,7 @@ export async function initializeSession(session) {
|
|
|
1821
1823
|
await ensureRenderFrameSiblings(page);
|
|
1822
1824
|
const commitCdp = await getCdpSession(page);
|
|
1823
1825
|
await commitCdp.send("HeadlessExperimental.beginFrame", preparedBeginFrameTimeline.commitParams);
|
|
1824
|
-
session
|
|
1826
|
+
finalizeSessionInit(session);
|
|
1825
1827
|
}
|
|
1826
1828
|
async function captureFrameErrorDiagnostics(session, frameIndex, time, error) {
|
|
1827
1829
|
try {
|
|
@@ -1856,23 +1858,30 @@ export async function waitForPendingSeekCompletion(page) {
|
|
|
1856
1858
|
await waitForCompletion?.();
|
|
1857
1859
|
});
|
|
1858
1860
|
}
|
|
1859
|
-
|
|
1861
|
+
/**
|
|
1862
|
+
* Seek the page timeline and report whether a page-side composite is pending.
|
|
1863
|
+
*
|
|
1864
|
+
* The page's `seek()` owns all framework-specific stepping (GSAP, CSS animations, WAAPI);
|
|
1865
|
+
* the options object reaches it untouched through the producer's `__hf.seek` bridge.
|
|
1866
|
+
* Seek and pending-flag read share one round trip.
|
|
1867
|
+
*/
|
|
1868
|
+
async function seekPageTimeline(page, time, seekOptions) {
|
|
1869
|
+
return page.evaluate((t, opts) => {
|
|
1870
|
+
if (window.__hf && typeof window.__hf.seek === "function") {
|
|
1871
|
+
window.__hf.seek(t, opts);
|
|
1872
|
+
}
|
|
1873
|
+
return !!window
|
|
1874
|
+
.__hf_page_composite_pending;
|
|
1875
|
+
}, time, seekOptions);
|
|
1876
|
+
}
|
|
1877
|
+
async function prepareFrameForCapture(session, frameIndex, time, seekOptions) {
|
|
1860
1878
|
const { page, options } = session;
|
|
1861
1879
|
if (!session.isInitialized) {
|
|
1862
1880
|
throw new Error("[FrameCapture] Session not initialized");
|
|
1863
1881
|
}
|
|
1864
|
-
const quantizedTime =
|
|
1882
|
+
const quantizedTime = quantizeSeekTime(time, fpsToNumber(options.fps), seekOptions?.subFrameDivisions);
|
|
1865
1883
|
const seekStart = Date.now();
|
|
1866
|
-
|
|
1867
|
-
// all framework-specific logic (GSAP stepping, CSS animation sync, etc.)
|
|
1868
|
-
// Seek + check page-side composite pending flag in one round-trip.
|
|
1869
|
-
const hasPendingComposite = await page.evaluate((t) => {
|
|
1870
|
-
if (window.__hf && typeof window.__hf.seek === "function") {
|
|
1871
|
-
window.__hf.seek(t);
|
|
1872
|
-
}
|
|
1873
|
-
return !!window
|
|
1874
|
-
.__hf_page_composite_pending;
|
|
1875
|
-
}, quantizedTime);
|
|
1884
|
+
const hasPendingComposite = await seekPageTimeline(page, quantizedTime, seekOptions);
|
|
1876
1885
|
await decodeDynamicCssBackgroundImages(page);
|
|
1877
1886
|
const seekMs = Date.now() - seekStart;
|
|
1878
1887
|
// Before-capture hook (e.g. video frame injection) — runs before
|
|
@@ -2676,8 +2685,158 @@ export async function withFrameDeadline(work, label, ms, onTimeout) {
|
|
|
2676
2685
|
});
|
|
2677
2686
|
}
|
|
2678
2687
|
}
|
|
2679
|
-
|
|
2688
|
+
/**
|
|
2689
|
+
* Resolve the session's motion-blur plan, rejecting combinations the accumulation pass
|
|
2690
|
+
* cannot render correctly instead of silently producing an unblurred frame.
|
|
2691
|
+
*
|
|
2692
|
+
* Called once initialization has settled the capture mode. `format: "png"` is required
|
|
2693
|
+
* because samples are averaged pixel by pixel: JPEG samples would be averaged after
|
|
2694
|
+
* lossy quantization and the blended frame is re-encoded as PNG. `<video>` content is
|
|
2695
|
+
* out of scope because it is supplied by the before-capture frame-injection hook rather
|
|
2696
|
+
* than by the timeline seek, so it cannot follow a sub-frame time.
|
|
2697
|
+
*/
|
|
2698
|
+
export function resolveSessionMotionBlur(session) {
|
|
2699
|
+
const plan = resolveMotionBlurPlan(session.options.motionBlur);
|
|
2700
|
+
if (!plan)
|
|
2701
|
+
return undefined;
|
|
2702
|
+
if (session.captureMode !== "screenshot") {
|
|
2703
|
+
throw new Error(`[MotionBlur] sub-frame motion blur requires screenshot capture mode, got "${session.captureMode}"`);
|
|
2704
|
+
}
|
|
2705
|
+
if (session.options.format !== "png") {
|
|
2706
|
+
throw new Error(`[MotionBlur] sub-frame motion blur requires format "png", got "${session.options.format ?? "jpeg"}"`);
|
|
2707
|
+
}
|
|
2708
|
+
if (session.onBeforeCapture) {
|
|
2709
|
+
throw new Error("[MotionBlur] sub-frame motion blur cannot run with injected video frames: video content is extracted per output frame and does not follow a sub-frame seek");
|
|
2710
|
+
}
|
|
2711
|
+
return plan;
|
|
2712
|
+
}
|
|
2713
|
+
/** Seek to `time` and capture one surface with the session's capture mode. */
|
|
2714
|
+
async function captureFrameSurface(session, frameIndex, time, seekOptions) {
|
|
2680
2715
|
const { page, options } = session;
|
|
2716
|
+
const { quantizedTime, seekMs, beforeCaptureMs } = await prepareFrameForCapture(session, frameIndex, time, seekOptions);
|
|
2717
|
+
const screenshotStart = Date.now();
|
|
2718
|
+
let screenshotBuffer;
|
|
2719
|
+
if (session.captureMode === "beginframe") {
|
|
2720
|
+
const frameTimeTicks = session.beginFrameTimeTicks + frameIndex * session.beginFrameIntervalMs;
|
|
2721
|
+
const result = await beginFrameCapture(page, options, frameTimeTicks, session.beginFrameIntervalMs);
|
|
2722
|
+
if (result.hasDamage)
|
|
2723
|
+
session.beginFrameHasDamageCount++;
|
|
2724
|
+
else
|
|
2725
|
+
session.beginFrameNoDamageCount++;
|
|
2726
|
+
screenshotBuffer = result.buffer;
|
|
2727
|
+
}
|
|
2728
|
+
else if (session.captureMode === "drawelement" &&
|
|
2729
|
+
session.clipBoundaryFrames?.has(frameIndex) &&
|
|
2730
|
+
process.env.HF_FAST_CAPTURE_BOUNDARY_SS === "true") {
|
|
2731
|
+
throw new DrawElementCaptureError(frameIndex, "boundary screenshot requested on an injected canvas page");
|
|
2732
|
+
}
|
|
2733
|
+
else if (session.captureMode === "drawelement") {
|
|
2734
|
+
// Advance compositor state via BeginFrame when available (Linux headless-shell);
|
|
2735
|
+
// on macOS the compositor advances naturally without BeginFrame.
|
|
2736
|
+
if (session.beginFrameTimeTicks > 0) {
|
|
2737
|
+
const client = await getCdpSession(page);
|
|
2738
|
+
await client.send("HeadlessExperimental.beginFrame", {
|
|
2739
|
+
frameTimeTicks: session.beginFrameTimeTicks + frameIndex * session.beginFrameIntervalMs,
|
|
2740
|
+
interval: session.beginFrameIntervalMs,
|
|
2741
|
+
noDisplayUpdates: false,
|
|
2742
|
+
// no screenshot param — we capture via canvas
|
|
2743
|
+
});
|
|
2744
|
+
}
|
|
2745
|
+
try {
|
|
2746
|
+
screenshotBuffer = await captureDrawElementFrame(page, options.width, options.height, options.format ?? "jpeg", options.quality ?? 80,
|
|
2747
|
+
// Paint-event sync only without BeginFrame (macOS / screenshot-launched):
|
|
2748
|
+
// under BeginFrame control the per-frame beginFrame above already painted
|
|
2749
|
+
// a fresh snapshot, and no further paint would arrive during a wait.
|
|
2750
|
+
session.beginFrameTimeTicks === 0);
|
|
2751
|
+
// A tiny JPEG may be a dropped paint record. Never screenshot this page:
|
|
2752
|
+
// its injected canvas can still hold the preceding frame's bitmap.
|
|
2753
|
+
// Restart on a fresh screenshot page even if this was a simple valid frame.
|
|
2754
|
+
if ((options.format ?? "jpeg") !== "png" && process.env.HF_FORCE_DRAWELEMENT !== "1") {
|
|
2755
|
+
const sizes = (session.deFrameSizes ??= []);
|
|
2756
|
+
const sorted = sizes.length >= 12 ? [...sizes].sort((a, b) => a - b) : null;
|
|
2757
|
+
const median = sorted ? (sorted[sorted.length >> 1] ?? 0) : 0;
|
|
2758
|
+
const floor = Math.max(20000, median * 0.12);
|
|
2759
|
+
if (screenshotBuffer.length < floor) {
|
|
2760
|
+
throw new DrawElementCaptureError(frameIndex, `suspect small frame (${screenshotBuffer.length}B < ${Math.round(floor)}B)`);
|
|
2761
|
+
}
|
|
2762
|
+
else {
|
|
2763
|
+
if (sizes.length >= 60)
|
|
2764
|
+
sizes.shift();
|
|
2765
|
+
sizes.push(screenshotBuffer.length);
|
|
2766
|
+
}
|
|
2767
|
+
}
|
|
2768
|
+
}
|
|
2769
|
+
catch (err) {
|
|
2770
|
+
// Missing paint records/canvas state require a new screenshot page.
|
|
2771
|
+
if (isRecoverableDrawElementError(err)) {
|
|
2772
|
+
session.deNcprFallbacks = (session.deNcprFallbacks ?? 0) + 1;
|
|
2773
|
+
const reason = isCanvasNotInitializedError(err)
|
|
2774
|
+
? "drawElement canvas not initialized"
|
|
2775
|
+
: "No cached paint record";
|
|
2776
|
+
throw new DrawElementCaptureError(frameIndex, reason, err);
|
|
2777
|
+
}
|
|
2778
|
+
else {
|
|
2779
|
+
throw err;
|
|
2780
|
+
}
|
|
2781
|
+
}
|
|
2782
|
+
}
|
|
2783
|
+
else {
|
|
2784
|
+
screenshotBuffer = await pageScreenshotCapture(page, options);
|
|
2785
|
+
}
|
|
2786
|
+
const screenshotMs = Date.now() - screenshotStart;
|
|
2787
|
+
return { buffer: screenshotBuffer, quantizedTime, seekMs, beforeCaptureMs, screenshotMs };
|
|
2788
|
+
}
|
|
2789
|
+
/**
|
|
2790
|
+
* Mark the session ready to capture.
|
|
2791
|
+
*
|
|
2792
|
+
* The single owner of what finishing initialization means, because `initializeSession`
|
|
2793
|
+
* has two exits: screenshot mode returns early, and every other mode falls through the
|
|
2794
|
+
* end. Resolving motion blur at only one of them marks the session ready with no plan,
|
|
2795
|
+
* which silently renders unblurred rather than failing. Both fields are set here so a
|
|
2796
|
+
* third exit cannot forget one.
|
|
2797
|
+
*/
|
|
2798
|
+
function finalizeSessionInit(session) {
|
|
2799
|
+
session.motionBlur = resolveSessionMotionBlur(session);
|
|
2800
|
+
session.isInitialized = true;
|
|
2801
|
+
}
|
|
2802
|
+
/**
|
|
2803
|
+
* Capture one output frame as the average of `plan.samplesPerFrame` sub-frame captures.
|
|
2804
|
+
*
|
|
2805
|
+
* Callback invariant: exactly one eventful seek per output frame, at the frame time,
|
|
2806
|
+
* arriving from the previous frame's time. Every sample seek suppresses events and the
|
|
2807
|
+
* playhead is restored to the frame time afterwards, so a composition's own
|
|
2808
|
+
* onUpdate/onComplete fire on the same interval boundaries as a render with blur off.
|
|
2809
|
+
*/
|
|
2810
|
+
async function captureAccumulatedFrame(session, frameIndex, absFrameIndex, plan) {
|
|
2811
|
+
const fps = fpsToNumber(session.options.fps);
|
|
2812
|
+
const frameTime = quantizeSeekTime(absFrameIndex / fps, fps);
|
|
2813
|
+
const eventfulSeekStart = Date.now();
|
|
2814
|
+
await seekPageTimeline(session.page, frameTime, undefined);
|
|
2815
|
+
const totals = { seekMs: Date.now() - eventfulSeekStart, beforeCaptureMs: 0, screenshotMs: 0 };
|
|
2816
|
+
const sampleSeek = {
|
|
2817
|
+
suppressEvents: true,
|
|
2818
|
+
subFrameDivisions: plan.subFrameDivisions,
|
|
2819
|
+
};
|
|
2820
|
+
const accumulator = new MotionBlurAccumulator(plan.blend);
|
|
2821
|
+
for (const sampleTime of motionBlurSampleTimes(plan, absFrameIndex, fps)) {
|
|
2822
|
+
const sample = await captureFrameSurface(session, frameIndex, sampleTime, sampleSeek);
|
|
2823
|
+
totals.seekMs += sample.seekMs;
|
|
2824
|
+
totals.beforeCaptureMs += sample.beforeCaptureMs;
|
|
2825
|
+
totals.screenshotMs += sample.screenshotMs;
|
|
2826
|
+
accumulator.add(sample.buffer);
|
|
2827
|
+
}
|
|
2828
|
+
const restoreSeekStart = Date.now();
|
|
2829
|
+
await seekPageTimeline(session.page, frameTime, { suppressEvents: true });
|
|
2830
|
+
totals.seekMs += Date.now() - restoreSeekStart;
|
|
2831
|
+
const blended = accumulator.finish();
|
|
2832
|
+
return {
|
|
2833
|
+
buffer: encodePng(blended.width, blended.height, blended.data),
|
|
2834
|
+
quantizedTime: frameTime,
|
|
2835
|
+
...totals,
|
|
2836
|
+
};
|
|
2837
|
+
}
|
|
2838
|
+
async function captureFrameCore(session, frameIndex, time) {
|
|
2839
|
+
const { options } = session;
|
|
2681
2840
|
const startTime = Date.now();
|
|
2682
2841
|
// Static-frame dedup: this frame is byte-identical to its predecessor (predicted +
|
|
2683
2842
|
// anchor-verified at init) → reuse the prior buffer, skip the seek + screenshot.
|
|
@@ -2696,7 +2855,9 @@ async function captureFrameCore(session, frameIndex, time) {
|
|
|
2696
2855
|
const absFrameIndex = Math.floor(time * fpsToNumber(options.fps) + 1e-9);
|
|
2697
2856
|
if (session.staticFrames?.has(absFrameIndex) &&
|
|
2698
2857
|
session.lastFrameBuffer &&
|
|
2699
|
-
session.lastFrameAbsoluteIndex === absFrameIndex - 1
|
|
2858
|
+
session.lastFrameAbsoluteIndex === absFrameIndex - 1 &&
|
|
2859
|
+
(!session.motionBlur ||
|
|
2860
|
+
motionBlurWindowIsStatic(session.motionBlur, absFrameIndex, session.staticFrames))) {
|
|
2700
2861
|
session.staticDedupCount = (session.staticDedupCount ?? 0) + 1;
|
|
2701
2862
|
session.lastFrameAbsoluteIndex = absFrameIndex;
|
|
2702
2863
|
return {
|
|
@@ -2706,77 +2867,12 @@ async function captureFrameCore(session, frameIndex, time) {
|
|
|
2706
2867
|
};
|
|
2707
2868
|
}
|
|
2708
2869
|
try {
|
|
2709
|
-
const
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
if (result.hasDamage)
|
|
2716
|
-
session.beginFrameHasDamageCount++;
|
|
2717
|
-
else
|
|
2718
|
-
session.beginFrameNoDamageCount++;
|
|
2719
|
-
screenshotBuffer = result.buffer;
|
|
2720
|
-
}
|
|
2721
|
-
else if (session.captureMode === "drawelement" &&
|
|
2722
|
-
session.clipBoundaryFrames?.has(frameIndex) &&
|
|
2723
|
-
process.env.HF_FAST_CAPTURE_BOUNDARY_SS === "true") {
|
|
2724
|
-
throw new DrawElementCaptureError(frameIndex, "boundary screenshot requested on an injected canvas page");
|
|
2725
|
-
}
|
|
2726
|
-
else if (session.captureMode === "drawelement") {
|
|
2727
|
-
// Advance compositor state via BeginFrame when available (Linux headless-shell);
|
|
2728
|
-
// on macOS the compositor advances naturally without BeginFrame.
|
|
2729
|
-
if (session.beginFrameTimeTicks > 0) {
|
|
2730
|
-
const client = await getCdpSession(page);
|
|
2731
|
-
await client.send("HeadlessExperimental.beginFrame", {
|
|
2732
|
-
frameTimeTicks: session.beginFrameTimeTicks + frameIndex * session.beginFrameIntervalMs,
|
|
2733
|
-
interval: session.beginFrameIntervalMs,
|
|
2734
|
-
noDisplayUpdates: false,
|
|
2735
|
-
// no screenshot param — we capture via canvas
|
|
2736
|
-
});
|
|
2737
|
-
}
|
|
2738
|
-
try {
|
|
2739
|
-
screenshotBuffer = await captureDrawElementFrame(page, options.width, options.height, options.format ?? "jpeg", options.quality ?? 80,
|
|
2740
|
-
// Paint-event sync only without BeginFrame (macOS / screenshot-launched):
|
|
2741
|
-
// under BeginFrame control the per-frame beginFrame above already painted
|
|
2742
|
-
// a fresh snapshot, and no further paint would arrive during a wait.
|
|
2743
|
-
session.beginFrameTimeTicks === 0);
|
|
2744
|
-
// A tiny JPEG may be a dropped paint record. Never screenshot this page:
|
|
2745
|
-
// its injected canvas can still hold the preceding frame's bitmap.
|
|
2746
|
-
// Restart on a fresh screenshot page even if this was a simple valid frame.
|
|
2747
|
-
if ((options.format ?? "jpeg") !== "png" && process.env.HF_FORCE_DRAWELEMENT !== "1") {
|
|
2748
|
-
const sizes = (session.deFrameSizes ??= []);
|
|
2749
|
-
const sorted = sizes.length >= 12 ? [...sizes].sort((a, b) => a - b) : null;
|
|
2750
|
-
const median = sorted ? (sorted[sorted.length >> 1] ?? 0) : 0;
|
|
2751
|
-
const floor = Math.max(20000, median * 0.12);
|
|
2752
|
-
if (screenshotBuffer.length < floor) {
|
|
2753
|
-
throw new DrawElementCaptureError(frameIndex, `suspect small frame (${screenshotBuffer.length}B < ${Math.round(floor)}B)`);
|
|
2754
|
-
}
|
|
2755
|
-
else {
|
|
2756
|
-
if (sizes.length >= 60)
|
|
2757
|
-
sizes.shift();
|
|
2758
|
-
sizes.push(screenshotBuffer.length);
|
|
2759
|
-
}
|
|
2760
|
-
}
|
|
2761
|
-
}
|
|
2762
|
-
catch (err) {
|
|
2763
|
-
// Missing paint records/canvas state require a new screenshot page.
|
|
2764
|
-
if (isRecoverableDrawElementError(err)) {
|
|
2765
|
-
session.deNcprFallbacks = (session.deNcprFallbacks ?? 0) + 1;
|
|
2766
|
-
const reason = isCanvasNotInitializedError(err)
|
|
2767
|
-
? "drawElement canvas not initialized"
|
|
2768
|
-
: "No cached paint record";
|
|
2769
|
-
throw new DrawElementCaptureError(frameIndex, reason, err);
|
|
2770
|
-
}
|
|
2771
|
-
else {
|
|
2772
|
-
throw err;
|
|
2773
|
-
}
|
|
2774
|
-
}
|
|
2775
|
-
}
|
|
2776
|
-
else {
|
|
2777
|
-
screenshotBuffer = await pageScreenshotCapture(page, options);
|
|
2778
|
-
}
|
|
2779
|
-
const screenshotMs = Date.now() - screenshotStart;
|
|
2870
|
+
const plan = session.motionBlur;
|
|
2871
|
+
// One capture per frame, or `plan.samplesPerFrame` captures averaged into one. Both
|
|
2872
|
+
// report the same timings, so perf accounting and the dedup anchor stay shared.
|
|
2873
|
+
const { buffer, quantizedTime, seekMs, beforeCaptureMs, screenshotMs } = plan
|
|
2874
|
+
? await captureAccumulatedFrame(session, frameIndex, absFrameIndex, plan)
|
|
2875
|
+
: await captureFrameSurface(session, frameIndex, time);
|
|
2780
2876
|
const captureTimeMs = Date.now() - startTime;
|
|
2781
2877
|
session.capturePerf.frames += 1;
|
|
2782
2878
|
session.capturePerf.seekMs += seekMs;
|
|
@@ -2786,10 +2882,10 @@ async function captureFrameCore(session, frameIndex, time) {
|
|
|
2786
2882
|
session.capturePerf.frameMs.push(captureTimeMs);
|
|
2787
2883
|
// Retain this freshly-captured buffer so the following static frames can reuse it.
|
|
2788
2884
|
if (session.staticFrames) {
|
|
2789
|
-
session.lastFrameBuffer =
|
|
2885
|
+
session.lastFrameBuffer = buffer;
|
|
2790
2886
|
session.lastFrameAbsoluteIndex = absFrameIndex;
|
|
2791
2887
|
}
|
|
2792
|
-
return { buffer
|
|
2888
|
+
return { buffer, quantizedTime, captureTimeMs };
|
|
2793
2889
|
}
|
|
2794
2890
|
catch (captureError) {
|
|
2795
2891
|
if (session.isInitialized) {
|
|
@@ -2803,6 +2899,15 @@ export async function captureFrame(session, frameIndex, time) {
|
|
|
2803
2899
|
const framePath = writeCapturedFrame(session, frameIndex, buffer);
|
|
2804
2900
|
return { frameIndex, time: quantizedTime, path: framePath, captureTimeMs };
|
|
2805
2901
|
}
|
|
2902
|
+
/**
|
|
2903
|
+
* File extension for a captured frame, keyed on the format the frames were actually
|
|
2904
|
+
* captured in. The encoder's input pattern and the writer must agree, so both read this
|
|
2905
|
+
* rather than re-deriving the answer from whether the OUTPUT needs alpha, which is a
|
|
2906
|
+
* different question and stops being equivalent as soon as anything else forces PNG.
|
|
2907
|
+
*/
|
|
2908
|
+
export function frameFileExtension(format) {
|
|
2909
|
+
return format === "png" ? "png" : "jpg";
|
|
2910
|
+
}
|
|
2806
2911
|
/**
|
|
2807
2912
|
* Write an already-captured frame buffer to the session's output dir using the
|
|
2808
2913
|
* canonical `frame_NNNNNN.{jpg,png}` naming. `fileIndex` is the ENCODER-facing
|
|
@@ -2812,7 +2917,7 @@ export async function captureFrame(session, frameIndex, time) {
|
|
|
2812
2917
|
* `captureFrameToBufferPipelined` without duplicating the naming convention.
|
|
2813
2918
|
*/
|
|
2814
2919
|
export function writeCapturedFrame(session, fileIndex, buffer) {
|
|
2815
|
-
const ext = session.options.format
|
|
2920
|
+
const ext = frameFileExtension(session.options.format);
|
|
2816
2921
|
const framePath = join(session.outputDir, `frame_${String(fileIndex).padStart(6, "0")}.${ext}`);
|
|
2817
2922
|
writeFileSync(framePath, buffer);
|
|
2818
2923
|
return framePath;
|
|
@@ -2855,6 +2960,13 @@ export async function captureFrameToBuffer(session, frameIndex, time) {
|
|
|
2855
2960
|
* - macOS hardware GPU path (syncToPaintEvent=true, beginFrameTimeTicks=0).
|
|
2856
2961
|
* BeginFrame (Linux) uses the standard synchronous path unchanged.
|
|
2857
2962
|
*/
|
|
2963
|
+
/**
|
|
2964
|
+
* Worker-encode path, gated to drawElement capture. It does not route through
|
|
2965
|
+
* `captureFrameCore` and so has no accumulation branch; that is safe only because
|
|
2966
|
+
* `resolveSessionMotionBlur` rejects every capture mode except screenshot, which makes
|
|
2967
|
+
* this function unreachable with motion blur on. Widening the supported capture modes
|
|
2968
|
+
* means handling accumulation here too.
|
|
2969
|
+
*/
|
|
2858
2970
|
export async function captureFrameToBufferPipelined(session, frameIndex, time) {
|
|
2859
2971
|
const { page, options } = session;
|
|
2860
2972
|
const startTime = Date.now();
|