Avelune Draft Generation 1 conformance requirements
Normative Draft Generation 1 decoder behavior, conformance vectors, and container range requirements.
View specification sourceSpecification navigation
Current draft
- Avelune specification drafts
- Avelune Draft Generation 1 Baseline profile
- ALV1 video bitstream — Draft Generation 1
- Avelune V1 — common integer and entropy coding
- Avelune container — Draft Generation 1 (header generation 1, minor 0)
- ALA1 audio bitstream — Draft Generation 1
- Avelune Draft Generation 1 conformance requirements
- Specification changelog
|
Warning
|
Draft status: experimental, unfrozen, and subject to incompatible change while the software is |
A V1 decoder is conforming when it implements the normative container, common entropy, ALV1, and/or ALA1 specifications for the profiles it claims and satisfies the corresponding vectors.
1. General
A decoder MUST:
-
reject malformed length arithmetic before out-of-bounds access/allocation;
-
reject non-canonical varints where required;
-
reject invalid entropy models and trailing entropy bytes;
-
validate container header/front/packet CRC-32C;
-
reject unsupported dimensions, reference IDs, modes, palette indices, and coefficient fields;
-
be deterministic and independent of host floating-point behavior (V1 normative reconstruction is integer-only);
-
never require WebGPU, threads, SIMD, or the reference Rust implementation for correctness.
2. ALV1
For every conforming video vector, reconstructed Y/U/V bytes MUST exactly equal the expected decoded Y4M planes. In lossless vectors (qstep=1) expected output equals source pixels exactly.
A decoder must reset references on every EpochStart and must reject an inter frame if any declared dependency is unavailable.
3. ALA1
For lossless qstep=1 vectors, decoded signed 16-bit PCM MUST match expected samples bit-for-bit. Lossy conformance vectors, when supplied, are judged by exact decoded PCM from the bitstream, not by an encoder quality target.
4. Container/range behavior
The conformance package includes a deliberately CRC-corrupted file which MUST be rejected. The streaming smoke test fetches only the fixed/front prefix plus indexed epoch ranges and must reconstruct the same media as whole-file parsing.
5. Reference implementations
The canonical Rust decoder and the independent scalar decoder in avelune-reference are informative implementations. Neither source tree is normative. The independent encoder in avelune-reference is used only for differential testing: interoperability is checked by decoding its packets with the canonical decoder and comparing the decoded reconstructions, not by requiring byte-identical packets from encoders whose policy choices may legitimately differ.