Skip to content

bench: add the Netflix Chimera BarScene corpus entry, and gate grain_sigma on grain_flat - #49

Merged
lusoris merged 1 commit into
masterfrom
bench/netflix-corpus-entry
Aug 30, 2026
Merged

bench: add the Netflix Chimera BarScene corpus entry, and gate grain_sigma on grain_flat#49
lusoris merged 1 commit into
masterfrom
bench/netflix-corpus-entry

Conversation

@lusoris

@lusoris lusoris commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Why

The bbb pin is clean animation. ADR-0142's own measured law is that reductive pre-encode gain scales with removable impairment — ~0 on clean. So benchmarking the core thesis mainly on clean animation can't really falsify it either way.

What

netflix-bar — Netflix's Chimera BarScene, donated to the Xiph.Org derf collection. Real camera content, measured at the identical 640x360/48-frame workload:

bbb netflix-bar
texture 0.094 0.225 2.4x
variance 0.0063 0.0196 3.1x
banding 0.142 0.242 1.7x

media.xiph.org is also a foundation-run archive, rather than the single third party bbb now depends on after blender.org went dead.

It is NOT a grain entry — I assumed it would be, and measured otherwise

grain_sigma is 0.0124 vs bbb's 0.0131 — marginally lower. The pinned .webm is a VP9 distribution copy (~6.9 Mbit/s for 4K) and the encode removed the grain. The ungraded .y4m retains it but is 29.6 GB, which is not pinnable. Documented as a complexity entry so nobody repeats the assumption.

For a grain axis, run-bench.py --synth noise already exists — and is deterministic (checked: ffmpeg's noise filter has a fixed default seed, so the missing all_seed is not a reproducibility bug).

Found while measuring: grain_sigma needs grain_flat as a gate

The estimator accumulates only over flat neighbourhoods (if ((hi-lo) > edge_thr) return;), so grain_flat is the coverage — and therefore the confidence — of the sigma estimate.

On real content the response is correctly monotonic in both:

injected noise grain_sigma grain_flat
0 0.0132 0.331
8 0.0158 0.166
20 0.0214 0.005

But on a pathologically flat source (uniform colour or smooth gradient, uniformly noised) almost nothing qualifies, grain_flat collapses to ~0, and sigma becomes 0 or unstable.

This matters for the unbuilt tune=auto router (ADR-0142), which uses grain_sigma as its grain-detection input: keyed on sigma alone, a starved estimate reads as clean and would route heavy-grain content away from the denoise leg — the exact case with the largest measured BD-rate win. Now documented with the disambiguation table.

To be clear this is a consumer-side gating rule, not a filter defect — the estimator is correct on real content. I nearly filed it as a bug off the synthetic result before testing real content.

Also

Latent parser bug in fetch-corpus.sh: it ran xargs on every line before skipping comments, so an apostrophe in a corpus.lock comment killed the whole fetch with unmatched single quote.

Verified

Cold fetch of all three entries downloads, sha256-matches and extracts; both real clips yield the identical 16,588,800-byte workload. 21/21 fast suite, changelog in sync.

🤖 Generated with Claude Code

…sigma on grain_flat

The bbb pin is clean animation, and ADR-0142's own measured law says reductive
pre-encode gain scales with removable impairment -- ~0 on clean. Benchmarking the
core thesis mainly on clean animation cannot really falsify it either way.

Add netflix-bar: Netflix's Chimera BarScene, donated to the Xiph.Org derf
collection. Real camera content, measured at the identical 640x360/48-frame
workload: 2.4x the texture, 3.1x the variance, 1.7x the banding of bbb. Also a
foundation-run host rather than the single third party bbb now depends on.

It is deliberately documented as a COMPLEXITY entry, not a grain one. I assumed
real camera content would be grainier and measured instead: grain_sigma 0.0124 vs
bbb's 0.0131 -- marginally LOWER. The pinned .webm is a VP9 distribution copy and
the encode removed the grain; the ungraded .y4m retains it but is 29.6 GB. For a
grain axis, run-bench.py --synth noise already exists (and is deterministic --
checked, ffmpeg's noise filter has a fixed default seed).

While measuring, found something that matters for the unbuilt tune=auto router:
the estimator accumulates only over flat neighbourhoods, so grain_flat is the
COVERAGE of the sigma estimate. On real content the response is correctly
monotonic (sigma 0.0132 -> 0.0214, flat 0.331 -> 0.005 as injected noise goes
0 -> 20), but on a pathologically flat source almost nothing qualifies, flat
collapses to ~0 and sigma becomes 0 or unstable. Keyed on sigma alone, a starved
estimate reads as 'clean' and would route heavy-grain content AWAY from denoise --
inverting the case with the largest measured win. Documented, with the table.
This is a consumer-side gating rule, not a filter defect: the estimator is
correct on real content.

Also fix a latent parser bug in fetch-corpus.sh: it ran xargs on every line
BEFORE skipping comments, so an apostrophe in a corpus.lock comment killed the
whole fetch with 'unmatched single quote'.

Verified: cold fetch of all three entries downloads, sha256-matches and extracts;
both real clips yield the identical 16,588,800-byte workload.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@lusoris
lusoris merged commit 8d3bd3a into master Aug 30, 2026
2 of 4 checks passed
@lusoris
lusoris deleted the bench/netflix-corpus-entry branch August 30, 2026 19:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant