Some checks failed
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-quantum studio and desktop / does this change touch it (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · does this change touch it (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
wai-ops integer operators / does this change touch it (pull_request) Has been cancelled
wai-ops integer operators / linux-aarch64 (pull_request) Has been cancelled
wai-ops integer operators / linux-x86_64 (pull_request) Has been cancelled
wai-ops integer operators / macos-arm64 (pull_request) Has been cancelled
wai-ops integer operators / wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-ops integer operators / wasm32 under Node (pull_request) Has been cancelled
wai-ops integer operators / independent checker (Python) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI neural sink gates / does this change touch it (pull_request) Has been cancelled
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Has been cancelled
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Has been cancelled
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Has been cancelled
WAI energy receipts / does this change touch it (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
standards workspaces build + test / which workspaces this change touches (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-relay, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Has been cancelled
Co-Authored-By: Claude Opus 5.5 <[email protected]>
70 lines
4.6 KiB
Markdown
70 lines
4.6 KiB
Markdown
# format-probe-conformance — header probes
|
||
|
||
The corpus of [`extensions/format-probes.md`](../extensions/format-probes.md) §13 and of
|
||
[`extensions/projection.md`](../extensions/projection.md) §7.
|
||
|
||
**Feature equivalence.** A conforming probe of a capability, given a vector's file, reaches the
|
||
outcome `vectors.json` states for it: the parameters (`{"accept": {...}}`, the members each
|
||
section of format-probes names) or the refusal (`{"refuse": code}`, a code of its §12). A
|
||
conforming reader of the projection descriptor gives each binding of `bindings` its outcome
|
||
(projection.md §5). Each fact of `facts` holds of its file's probe: what its encoder was asked for.
|
||
|
||
- `ext/` — vectors written by encoders, from synthetic pictures (`tools/yuv.py`):
|
||
- `vvc/` H.266 Main 10 at 64×64 and at 100×58 (a conformance window);
|
||
- `mvhevc/` an MV-HEVC bitstream of two views, and `hevc/` its base layer;
|
||
- `jxs/` JPEG XS codestreams: 4:2:2 at 10 bits, R, G and B under the reversible colour
|
||
transform, and a lossless 4:4:4 one; `jxs-video/` three frames in `wai.video.jxs`'s framing;
|
||
- `avs3/` an AVS3 video stream of three pictures.
|
||
- `gen/` — what `wai_format_probe gen` writes: LCEVC streams, MHAS streams, AVS3 audio frame
|
||
headers, IEEE 1857.11 picture headers and projection descriptors from fixed values, and the
|
||
negative controls, each a change to one vector, every code of §12 given.
|
||
- `vectors.json` — every vector's capability, file, SHA-256, origin and outcome; the bindings;
|
||
the facts; the probes and codes of §2.4 and §12; and the fetched LCEVC streams with what their
|
||
encoder was asked for.
|
||
- `provenance.json` — every external vector's encoder, input and command, its decodes (the
|
||
output's size and SHA-256 under each decoder) and, for JPEG XS, whether the decoders agree.
|
||
- `fetch.sh` — fetches five LCEVC streams by digest (format-probes §13.3).
|
||
|
||
**Provenance.** `ext/` is written by `tools/make_external.sh` on the build host, from synthetic
|
||
pictures `tools/yuv.py` writes (a ramp, a checker and a moving bar per plane; the second view
|
||
of the stereo pair is the first shifted four columns), with these encoders and decoders, each
|
||
at the revision the script pins and refuses to run without:
|
||
|
||
| key | role | licence |
|
||
|---|---|---|
|
||
| `vvc_enc`, `vvc_dec` | an open H.266 encoder and decoder | BSD-3-Clause-Clear |
|
||
| `jxs` | an open JPEG XS encoder and decoder | BSD-2-Clause-Patent |
|
||
| `jxs2` | a second, independent JPEG XS decoder (a crate, without default features) | MIT |
|
||
| `mvhevc` | the MV-HEVC reference encoder and decoder of the joint video team | BSD-3-Clause |
|
||
| `avs3_enc` | an open AVS3 video encoder | BSD-4-Clause |
|
||
| `avs3_dec` | an open AVS3 video decoder | BSD-3-Clause |
|
||
|
||
The script names each repository and revision. None of their code or data is in this corpus:
|
||
only the bitstreams they wrote from the synthetic pictures. `gen/` is written by
|
||
`wai_format_probe gen` from fixed values and from `ext/`; no permissively licensed encoder
|
||
writes LCEVC, MPEG-H 3D Audio or AVS3 audio, so those vectors are the generator's, laid out as
|
||
format-probes §6, §7 and §9 read them, and are not decodable streams. The fetched LCEVC streams
|
||
are an open LCEVC decoder's unit-test streams (BSD-3-Clause-Clear), written by an LCEVC encoder
|
||
from a short test sequence; their licence notice names their owner, so they are fetched by
|
||
SHA-256 and not committed.
|
||
|
||
**Measured** (`provenance.json`, on the arm64 build host): every H.266, MV-HEVC, H.265 and AVS3
|
||
vector decodes with its decoder, and the base layer of the MV-HEVC vector decodes to the same
|
||
bytes alone as within the two-view stream. Every JPEG XS codestream decodes to identical bytes
|
||
along the first decoder's C path and its SIMD path. The second decoder gives the same bytes on
|
||
five of the six codestreams; it does not implement the MLS.12 profile of the lossless one (it
|
||
refuses its `Ppih`), and on a copy whose `Ppih` and `Plev` are 0 its output differs, while the
|
||
first decoder's output equals that vector's source picture, byte for byte. No x86 decode was
|
||
measured.
|
||
|
||
**Checks.**
|
||
|
||
- `wai_format_probe verify .` (from `../wai-rs`, feature `format_probe`) and
|
||
`wai-rs/tests/format_probe.rs`: every vector's digest and outcome, every binding and fact,
|
||
the generated files byte for byte and no other file under `gen/`, and the extension's
|
||
tables; with `--fetched <dir>`, the five fetched streams, every one required.
|
||
- `format_probe_verify.py`, written from the two extensions and sharing no code with wai-rs:
|
||
probes every vector, binding, fact and fetched stream itself, and requires every mutated copy
|
||
of the corpus to fail:
|
||
|
||
bash fetch.sh /tmp/lcevc && python3 -I format_probe_verify.py . --fetched /tmp/lcevc
|