Files
hyperframes/packages/producer/tests/hdr-regression/README.md
T
Vance Ingalls 8ffd007716 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.
2026-04-23 01:45:19 -07:00

44 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HDR Regression Suite
HDR10 (BT.2020 PQ) regression suite with four back-to-back windows (AD)
covering the highest-value HDR compositing shapes. 10s / 300 frames at 30fps.
## Windows
| # | Window | Pipeline aspect under test |
| - | ----------------------------------- | --------------------------------------------------------------------------------------------------------- |
| A | Baseline HDR + direct opacity | HDR pass-through with a GSAP opacity tween directly on the `<video>` element. |
| B | Z-order sandwich (DOM → HDR → DOM) | Orange background, HDR video in the middle, blue overlay on top. Tests z-ordered layer compositing. |
| C | Transform + border-radius | HDR `<video>` with `transform: rotate() scale()` + `border-radius` clipping. Tests affine blit pipeline. |
| D | Shader transition (HDR → HDR image) | Shader transition between an HDR video and an HDR PQ image. Tests HDR image transfer cache + shader path. |
## Fixtures
- `src/hdr-clip.mp4` — short HEVC Main10 / BT.2020 PQ clip with a moving
bright gradient (see `NOTICE.md` for attribution). Reused across windows
AG 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.
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
```
## Running
```bash
cd packages/producer
bun run test hdr-regression
bun run test:update hdr-regression
```
In CI it runs in the `hdr` shard alongside `hdr-hlg-regression`
(see `.github/workflows/regression.yml`).