Repository navigation
Validation
HarpePluie edited this page Oct 8, 2026
·
4 revisions
heifer is tested on the first picture of 66 official ITU-T H.265.1 conformance bitstreams:
- 62 / 62 streams that ffmpeg can compare are identical to ffmpeg's output, sample for sample;
- 41 streams are verified against the reference picture hashes (MD5 / checksum SEI), including 3 that ffmpeg cannot decode;
- 1 stream is unsupported (16-bit extended precision).
| Photo | Result |
|---|---|
| iPhone 13 Pro, 4032×3024, 48 tiles | ≈ 61 dB PSNR vs ffmpeg |
| iPhone 8 Plus, rotated 270° | correct orientation |
| iPhone 15 Pro spatial photo | ≈ 62 dB |
| Samsung Galaxy S24 Ultra, 200 MP, 768 tiles | decoded (ffmpeg fails) |
| Corrupted / truncated files | clean errors, no panic |
The remaining differences with ffmpeg are due to ffmpeg:
- heifer honours the declared image size and grid crop;
- heifer decodes the primary image, where ffmpeg decodes the largest one.
Five cargo-fuzz targets run every night on GitHub Actions, each on its own machine:
- full decode;
- container parsing;
- HEVC decoding;
- a parallel-vs-sequential differential check;
- a CABAC round trip.
Median decode time on a 10-core Apple Silicon Mac (heifer 0.2.0):
| Image | heifer | heifer, 1 thread | ffmpeg |
|---|---|---|---|
| Xiaomi, 5 MP | 22 ms | 120 ms | 56 ms |
| iPhone 13 Pro, 12 MP | 40 ms | 167 ms | 96 ms |
| 8000×6000, 48 MP | 196 ms | 0.97 s | 582 ms |
| Galaxy S24 Ultra, 200 MP | 0.54 s | 2.1 s | fails |
Reproduce with scripts/bench.py, and the conformance results with scripts/conformance.py (see the README's Development section).