mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +00:00
feat(engine,producer,cli): verify video comps via deferred DE init + capture p50 (#2015)
* feat(engine,producer,cli): verify video comps via deferred DE init + capture p50 Closes the two biggest gaps in the first day of v0.7.38 wild data: 88% of drawElement renders (video comps initialized via probe sessions) ran with self-verification unarmed, and speedup was measurable on only 3 of 76 renders. - Deferred drawElement init: probe sessions initialize before video extraction, so they have no frame injector — ground-truth screenshots would capture black <video> boxes, and verification skipped the whole comp. DE init now stops after the gates for injector-less video comps (deInitDeferred; autoAlpha flag retracted in case no path completes it) and completeDeferredDrawElementInit finishes verification + canvas injection + worker-encode at capture time, once prepareCaptureSessionForReuse has attached the injector. Validated end-to-end: a probe-path video comp now arms 4 ground-truth frames with real video pixels (3x inf + 64.7dB) and renders drawElement verified. - capture_p50_ms: per-frame capture durations are sampled (capturePerf.frameMs; batch frames get the batch mean) and the median ships as CapturePerfSummary.p50TotalMs -> RenderPerfSummary.captureP50Ms -> render_complete capture_p50_ms. Unlike capture_avg_ms it is immune to first-frame warmup and stage-setup amortization — smoke: avg 15ms vs p50 8ms on the same render, p50 matching the measured steady-state floor. Dashboard speedup tiles can drop their frame-count floor once this ships. - video_count on render_complete: segments speedup by video-injection comps (whose per-frame gain is legitimately lower) vs pure-graphics. Canary suite 7/7; engine suite 905 passed (1 pre-existing upstream failure); tsc/oxlint/oxfmt clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(producer): complete deferred drawElement init on the disk capture path Review (miga): a probe-initialized video comp falling back to the disk path kept deInitDeferred and silently stayed in screenshot mode — a regression for PRODUCER_EXPERIMENTAL_FAST_CAPTURE=true renders that previously ran drawElement there. Complete the deferred init on the sequential disk path under the same explicit-opt-in test the orchestrator clamp uses; default-on renders stay on the screenshot baseline (this path has no drain-time self-verification, per the #1998 confinement rule). Validated: video comp + PRODUCER_ENABLE_STREAMING_ENCODE=false + explicit opt-in logs "(deferred drawElement init)" completion on capture_disk and renders correct video pixels. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
47276edcc6
commit
b26c27576b
@@ -1684,6 +1684,8 @@ function trackRenderMetrics(
|
||||
totalFrames: perf?.totalFrames,
|
||||
speedRatio,
|
||||
captureAvgMs: perf?.captureAvgMs,
|
||||
captureP50Ms: perf?.captureP50Ms,
|
||||
videoCount: perf?.videoCount,
|
||||
capturePeakMs: perf?.capturePeakMs,
|
||||
tmpPeakBytes: perf?.tmpPeakBytes,
|
||||
stageCompileMs: stages.compileMs,
|
||||
|
||||
@@ -143,6 +143,10 @@ export function trackRenderComplete(
|
||||
// Processing efficiency
|
||||
speedRatio?: number;
|
||||
captureAvgMs?: number;
|
||||
/** Warmup-robust per-frame capture median (basis for speedup estimates). */
|
||||
captureP50Ms?: number;
|
||||
/** <video> element count (speedup segmentation: injection comps read lower). */
|
||||
videoCount?: number;
|
||||
capturePeakMs?: number;
|
||||
// Resource usage
|
||||
peakMemoryMb?: number;
|
||||
@@ -211,6 +215,8 @@ export function trackRenderComplete(
|
||||
total_frames: props.totalFrames,
|
||||
speed_ratio: props.speedRatio,
|
||||
capture_avg_ms: props.captureAvgMs,
|
||||
capture_p50_ms: props.captureP50Ms,
|
||||
video_count: props.videoCount,
|
||||
capture_peak_ms: props.capturePeakMs,
|
||||
peak_memory_mb: props.peakMemoryMb,
|
||||
memory_free_mb: props.memoryFreeMb,
|
||||
|
||||
Reference in New Issue
Block a user