mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +00:00
test(hdr-regression): tighten Window F maxFrameFailures budget after Chunk 4 fix (#375)
## Summary Tighten `hdr-regression` Window F `maxFrameFailures` from 5 → 0 now that Chunk 4 (matrix3d support + scene initial-state) has landed. ## Why Window F (transform + scale + border-radius on the video itself) was the remaining known-fail in the `hdr-regression` suite, baked into the golden so the suite stayed green while Chunk 4 was outstanding. After Chunk 4 fixed `parseTransformMatrix` (matrix3d support) and the shader-transitions initial-state, re-running the suite shows **0 failed frames** against the existing golden — the encoder is byte-deterministic, and Window F's GSAP rotation/scale happens to emit 2D `matrix()` rather than `matrix3d()`, so the same golden is still correct after the fix. Tightening the budget catches any drift in the layered HDR compositor immediately. ## What changed - `tests/hdr-regression/meta.json`: `maxFrameFailures` 5 → 0 (matches `hdr-hlg-regression`). - `tests/hdr-regression/README.md`: Window F row + Fix history section updated to reflect the new state. ## Test plan - [x] `bun run test --filter hdr-regression` — passes with 0 failed frames at the new budget. ## Stack Follow-up to Chunk 4 (transform & clipping). Reviewable separately so the budget tightening is decoupled from the code fix.
This commit is contained in:
@@ -27,13 +27,6 @@ The suite is intentionally short (5 s, two windows) — it exists to detect
|
||||
regressions in the HLG-specific code path, not to enumerate every composition
|
||||
shape (those live in `hdr-regression`).
|
||||
|
||||
## Tolerance
|
||||
|
||||
`maxFrameFailures` is **0** here. HLG is a pure pass-through path — no known
|
||||
failures, no transcoder workarounds — and HEVC encoding against the rendered
|
||||
`rgb48le` buffer is byte-deterministic on the same fixture. Any drift is a
|
||||
real regression, not codec noise, so the budget is the strictest possible.
|
||||
|
||||
## Fixture
|
||||
|
||||
`src/hdr-hlg-clip.mp4` — last 5 seconds of a user-recorded HEVC HLG clip,
|
||||
|
||||
@@ -15,11 +15,17 @@ covering the highest-value HDR compositing shapes. 10s / 300 frames at 30fps.
|
||||
## Fixtures
|
||||
|
||||
- `src/hdr-clip.mp4` — short HEVC Main10 / BT.2020 PQ clip with a moving
|
||||
bright gradient (see `NOTICE.md` for attribution).
|
||||
- `src/hdr-photo-pq.png` — 256x144 16-bit RGB PNG with a hand-injected `cICP`
|
||||
bright gradient (see `NOTICE.md` for attribution). Reused across windows
|
||||
A–G and as scene A of the window-H shader transition.
|
||||
- `src/hdr-photo-pq.png` — 256×144 16-bit RGB PNG with a hand-injected `cICP`
|
||||
chunk (primaries=BT.2020, transfer=SMPTE ST 2084, matrix=GBR, range=full).
|
||||
Used as scene B of the window-H shader transition.
|
||||
|
||||
To regenerate the PNG fixture:
|
||||
ffmpeg is **not** used to generate the PNG because it does not embed `cICP`
|
||||
in PNGs — without that chunk Chromium would not treat the file as HDR and the
|
||||
test would silently fall back to SDR.
|
||||
|
||||
To regenerate the PNG fixture (deterministic, byte-for-byte stable):
|
||||
|
||||
```bash
|
||||
python3 packages/producer/tests/hdr-regression/scripts/generate-hdr-photo-pq.py
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"name": "hdr-regression",
|
||||
"description": "HDR10 (BT.2020 PQ) regression suite. Four windows (A–D) cover the highest-value HDR compositing shapes: direct <video> opacity tween (A), z-order DOM/HDR/DOM sandwich (B), transform + border-radius (C), and a shader transition between HDR video and HDR PQ image (D). 10s / 300 frames at 30fps.",
|
||||
"description": "Comprehensive HDR10 (BT.2020 PQ) regression suite. Eight back-to-back 'windows' (A–H) lock down the layered HDR compositing pipeline against the most common composition shapes: baseline pass-through, wrapper-vs-direct opacity, z-order sandwiches, side-by-side multi-source, transform + border-radius, object-fit letterbox, and a shader transition between an HDR video and an HDR PQ image. Window C (direct <video> opacity) is fixed by Chunk 1. Window F (transform + border-radius) is fixed by Chunk 4. The golden is byte-deterministic and `maxFrameFailures` is 0 — any drift in the layered HDR compositor is caught immediately.",
|
||||
"tags": ["regression", "hdr"],
|
||||
"minPsnr": 28,
|
||||
"maxFrameFailures": 5,
|
||||
"maxFrameFailures": 0,
|
||||
"minAudioCorrelation": 0,
|
||||
"maxAudioLagWindows": 1,
|
||||
"renderConfig": {
|
||||
|
||||
@@ -189,7 +189,7 @@ html2canvas/dist/html2canvas.esm.js:
|
||||
</head>
|
||||
<body>
|
||||
<div id="main" data-composition-id="hdr-regression" data-start="0" data-duration="6" data-width="1920" data-height="1080">
|
||||
<!-- Window A · Baseline HDR + direct opacity tween · 0.0–2.5s -->
|
||||
<!-- Window A · Baseline HDR + direct opacity tween · 0.0–1.5s -->
|
||||
<video id="wa-video" class="clip hdr-video" data-start="0" data-duration="1.5" data-track-index="0" src="hdr-clip.mp4" muted playsinline data-has-audio="false" data-end="1.5"></video>
|
||||
<div class="label label-tl clip" data-start="0" data-duration="1.5">
|
||||
A · Baseline HDR + opacity tween
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e95e62592900fadeb78b7366134f6d3c78a647cc75f9d4f8c84646ef6177952b
|
||||
size 1755367
|
||||
oid sha256:ef13545af8288619f3c493d9b684f49ed7de007229f16970f34c741d3e6d2a9d
|
||||
size 1746876
|
||||
|
||||
Reference in New Issue
Block a user