Skip to content

Validation

HarpePluie edited this page Oct 8, 2026 · 4 revisions

Validation

HEVC conformance

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).

Real-world photos

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.

Fuzzing

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.

Benchmarks

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).

Clone this wiki locally