ReviewOS

home-lang/home-os

Codec and container conformance in CI (host x86, then ARM): H.264/HEVC/AAC/MP3/FLAC/Opus/Vorbis bitstreams, MP4/MKV/TS demux, subtitle formats — measured, not claimed

#83
Open chris opened this 9 days ago ·
9 days ago

Epic: #113 · Milestone: MC6 — Media engine

Why

The decoders in the stdlib are small (AAC 446 lines, MP3 624, Opus 430, Vorbis 439 — a conformant AAC-LC decoder alone is normally several thousand). The tests/ dirs exist (conformance_tests.zig, test_codecs.zig) but the plan must not assume they pass. Truth = public conformance corpora run every commit, with a per-stream pass ratchet, exactly like mvk-compiles.

Tasks

  • Corpus: ITU-T H.264 JVT conformance (baseline/main/high subsets), HEVC JCT-VC conformance (Main/Main10, up to 4K), ISO AAC-LC/HE-AAC test vectors, MP3 (ISO layer-3 compliance set), FLAC test files, Opus test vectors, Vorbis; MP4/MKV/TS demux fixtures incl. edit lists, B-frames, VFR, multiple audio/subtitle tracks; SRT/ASS/VTT/PGS samples. Store hashes, fetch at CI time (licences permit test use).
  • Harness in the compiler repo: decode → MD5 of YUV/PCM vs reference (or PSNR ≥ threshold for float decoders); JSON report; scripts/codec-floor.json ratchet in this repo.
  • Gap list → issues in home-lang/home per failing feature (e.g. CABAC 8×8, weighted prediction, SBR, LTP).
  • Performance floor: fps per core for 1080p H.264 High and HEVC Main on the ARM runner (or on the rig).
  • Fuzzing seeds from the corpus (the compiler repo already has packages/fuzz).

Acceptance

Report published in IMPLEMENTATION_STATUS.md as "codec conformance: H.264 N/M, HEVC N/M, …" and the ratchet never falls; v1 floor = 100 % of the streams needed for the reference clips in #88.

Size: L · Depends on: #82 · Blocks: #85

Sign in to comment on this issue.