Brings link 12's three follow-up commits onto link 13: the restated ranking phrases in the research notes, extensions and source comments, with five more phrases in the comparative-prose check; the WAI name list given only to the push-to-main run; and the codec glossary's schema_version. One conflict, wai/vocab/README.md: link 13's rows (the prior term in the JSON-LD context, the parameter-set pin in the shapes) are kept, and link 12's sentence on what a violation for an unregistered string means is added before the pin sentence. REGISTRY.md's row for the v2 files now also names the parameter-set pins the shapes check. Co-Authored-By: Claude Opus 5.5 <[email protected]>
22 KiB
WAI registry
The registry is the set of strings SPEC §5 registers, with the classes
the specification gives each one. Its source of truth is one table in the
reference implementation, wai-rs/src/codecs/registry.rs
together with the class functions of wai-rs/src/codecs/mod.rs.
wai registry export writes it out in machine-readable form:
| file | what |
|---|---|
registry/capabilities.json |
every registered string with its kind, status, media class, role, fidelity tier, licence class, replicate class, set membership, registering section, edition and registration date; the named identifiers that are not capabilities; the unregistered labels |
registry/capabilities.schema.json |
JSON Schema (2020-12) for that file; its enums are the label sets below |
vocab/v2.ttl, vocab/v2.jsonld, vocab/v2.shapes.ttl |
the same registry as RDF, a JSON-LD context for manifests, and a SHACL shape that checks a manifest's capability and fallback against it, only the form of its media, and its parameter-set pins (vocab/README.md); a violation for a string the registry does not hold means the string is not registered in this revision, not that the envelope fails to conform or cannot be dispatched (SPEC §4, §8) |
| the table at the end of this file | the same registry, for reading |
A library test (codecs::registry::tests::registry_export_matches_committed) and
a CI step (wai registry export --check in .github/workflows/wai-conformance.yml)
fail when a committed file differs from what the table renders. Edit the table,
never the exported files.
Kinds
Every registered string has one kind.
- payload — a capability whose payload a sink decodes: it may be a
WAI1capabilityorfallback, or aWAI2rendition. - companion — a companion-only capability (SPEC §5, §7.1): its payload is
applied with a base rendition and never on its own, so it is only ever a
WAI2companion. - derivation — an operation of ISO/IEC 23001-16 (
wai.derive.*, derived-tracks). It acts on samples another capability decoded and names no payload format. - record — a signed record a WAI tool emits and verifies (a receipt kind:
wai.asset.provenance, the quantum-operations receipts, the delivery recordswai.video.manifestand its siblings). It names no payload format.
A derivation or record string is not a payload capability, so it is not dispatchable (SPEC §4): dispatch never takes an envelope's capability that names one, and step 5 may still take a usable fallback.
Two further tables hold strings that look like capabilities and are not:
- identifiers name a part of a capability's definition (
wai.det.fixed64, the fixed-point floor;wai.world.sim.*, the simulation steps of the feed and avatar capabilities); - unregistered labels are strings the reference implementation uses as labels that no revision registers, each with the reason.
Status
- registered — the payload format (for a record or derivation, the definition) is pinned.
- candidate — the string is registered but no revision has pinned its payload
format. An encoder MUST NOT emit a candidate, and a sink MUST treat it as
unsupported (SPEC §5, Candidate capabilities). The reference implementation
lists candidates in
codecs::is_candidate, reports an envelope that names one fromWai::check_candidatesandWaiMulti::check_candidates, and never dispatches or selects one.
Every dispatch and selection function uses one predicate,
codecs::is_dispatchable(cap), SPEC §4's dispatchable: false for a
companion-only capability, a candidate, a record and a derivation; true for a
registered payload capability that is not a candidate, and for a string this
revision does not register, which a later MINOR revision may register (SPEC §8)
and which a sink decodes only if it advertises it. A new dispatch or selection
function MUST use it too.
Editions
A registration that names an edition of its standard carries that edition. A
registration that names none carries the edition of its named standard current on
the date it was registered, and no later edition or amendment: a later edition or
amendment that changes the bitstream gets a capability string of its own
(SPEC §8, Editions). The export records both: edition (a designation, or
null for the edition current on the registration date) and registered (the
date of the first commit of this repository that registers the string; the
specification entered the repository on 2026-06-12, so a string registered before
then carries that date).
Licence classes
Every payload and companion capability carries a licence class:
royalty-free, patent-pool, proprietary or non-commercial
(codecs::capability_license). It is a property of the capability, not a
per-file claim. The classification has no default: a capability registered
without a class is a registry defect the tests reject. The sources and residual
caveats for each class are in
research/media-codec-registry.md. A
capability whose royalty status is not established is classified conservatively
(patent-pool), never royalty-free; a candidate's class is provisional until a
revision pins its payload format, since the licensing of a format not yet chosen
cannot be established. Every
derivation operation carries the class codecs::derivation::derivation_license
gives it; a record carries none.
How to register a string
- Add the capability constant to
wai-rs/src/codecs/mod.rsand, for a payload or companion capability, list it inknown_capabilities()and give it an arm incapability_tier,capability_licenseandcapability_replicate_class(each function has no default, and the tests reject a registered capability without one). A record goes inRECORDS, a derivation incodecs::derivation. - Give it a row in
ROWSofwai-rs/src/codecs/registry.rs: the SPEC §5 heading it is registered under, the edition it carries, and the registration date. A string whose payload format is not yet pinned also goes inCANDIDATES. - Register it in SPEC §5, under that heading, with its payload format and role.
The test
spec_and_registry_name_the_same_stringsholds SPEC and the table to the same set of strings, in both directions. - Run
cargo run --no-default-features --bin wai -- registry exportfromwai/wai-rs, and commit the files it writes. - Link it from the codec glossary entry that describes its bitstream, or list it
in the glossary's
GLOSSARY_NO_ENTRYtable with the reason (glossary/SCHEMA.md). - Add a CHANGELOG entry.
Changing what a registered string carries is governed by SPEC §8: a payload format and a role are fixed once registered.
The registry
| string | kind | status | media | role | licence | replicate | sets | registered in |
|---|---|---|---|---|---|---|---|---|
wai.asset.provenance |
record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content |
wai.audio.aac |
payload | registered | audio | standalone | patent-pool | standard-unclassified | — | §5 Broadcast and streaming codecs |
wai.audio.ac4 |
payload | registered | audio | standalone | proprietary | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.audio.avs3 |
payload | registered | audio | standalone | patent-pool | standard-unclassified | — | §5 Broadcast and streaming codecs |
wai.audio.flac |
payload | registered | audio | standalone | royalty-free | standard-defined | floor | §5 Mandatory floor |
wai.audio.iamf |
payload | registered | audio | standalone | royalty-free | standard-tolerance | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.audio.int_codec |
payload | registered | audio | standalone | royalty-free | neural-int-exact | — | §5 Interactive, temporal & computed content |
wai.audio.ivas |
payload | registered | audio | standalone | patent-pool | standard-tolerance | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.audio.mpegh |
payload | registered | audio | standalone | patent-pool | standard-unclassified | — | §5 Broadcast and streaming codecs |
wai.audio.opus |
payload | registered | audio | standalone | royalty-free | standard-tolerance | recommended | §5 Recommended modern set |
wai.audio.scene |
payload | registered | audio | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.audio.score |
payload | registered | audio | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.avatar.pose |
payload | registered | interactive | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.derive.crop |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.dissolve |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.grid_composition |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.identity |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.mirror |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.overlay_composition |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.roi_selection |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.rotation |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.scaling |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.derive.srgb_fill |
derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations |
wai.feed.state |
payload | registered | interactive | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.film.linear |
payload | registered | video | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.film.reel |
payload | registered | video | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.generate.spectral |
payload | registered | image | standalone | royalty-free | generative-exact | — | §5 Neural capabilities |
wai.haptic.mihs |
payload | registered | haptic | standalone | patent-pool | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.haptic.signal |
payload | registered | haptic | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.image.avif |
payload | registered | image | standalone | royalty-free | standard-tolerance | recommended | §5 Recommended modern set |
wai.image.jp2 |
payload | registered | image | standalone | royalty-free | standard-tolerance | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.image.jpeg |
payload | registered | image | standalone | royalty-free | standard-tolerance | recommended | §5 Recommended modern set |
wai.image.jpegai |
payload | registered | image | standalone | royalty-free | neural-entropy-exact | — | §5 Neural capabilities |
wai.image.jxl |
payload | registered | image | standalone | royalty-free | standard-tolerance | recommended | §5 Recommended modern set |
wai.image.png |
payload | registered | image | standalone | royalty-free | standard-defined | floor | §5 Mandatory floor |
wai.mesh.draco |
payload | registered | volumetric | standalone | royalty-free | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.mesh.glb |
payload | registered | volumetric | standalone | royalty-free | standard-unclassified | — | §5 Interactive, temporal & computed content |
wai.meta.dovi |
companion | registered | metadata | companion | proprietary | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.meta.hdr10plus |
companion | registered | metadata | companion | royalty-free | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.neural.bmshj2018 |
payload | registered | image | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.cmic |
payload | registered | image | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.dac |
payload | registered | audio | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.dcvc_fm |
payload | registered | video | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.dcvc_rt |
payload | registered | video | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.elic |
payload | registered | image | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.encodec32 |
payload | registered | audio | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.glc |
payload | registered | image | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.int_hyper |
payload | registered | image | standalone | royalty-free | neural-int-exact | — | §5 Neural capabilities |
wai.neural.int_mlicpp |
payload | registered | image | standalone | royalty-free | neural-int-exact | — | §5 Neural capabilities |
wai.neural.int_synth |
payload | registered | image | standalone | royalty-free | neural-int-exact | — | §5 Neural capabilities |
wai.neural.mbt2018_mean |
payload | registered | image | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.mimi |
payload | registered | audio | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.mlicpp |
payload | registered | image | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.mlicv2 |
payload | registered | image | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.snac |
payload | registered | audio | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.video_bmshj2018 |
payload | registered | video | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.neural.wavtokenizer |
payload | registered | audio | standalone | royalty-free | neural-float | — | §5 Neural capabilities |
wai.pc.gpcc |
payload | registered | volumetric | standalone | patent-pool | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.pc.vpcc |
payload | registered | volumetric | standalone | patent-pool | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.prior.nnc |
payload | registered | binary | standalone | patent-pool | standard-unclassified | — | §5 Prior artifacts, general tensors and derivation operations |
wai.prior.set |
payload | registered | binary | standalone | royalty-free | standard-defined | — | §5 Prior artifacts, general tensors and derivation operations |
wai.quantum.calibration |
record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content |
wai.quantum.circuit |
payload | registered | binary | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.quantum.job |
record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content |
wai.semantic.clip |
payload | registered | image | standalone | royalty-free | behavioral | — | §5 Neural capabilities |
wai.semantic.perco2 |
payload | registered | image | standalone | non-commercial | behavioral | — | §5 Neural capabilities |
wai.splat.4d |
payload | registered | volumetric | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.splat.int_codec |
payload | registered | volumetric | standalone | royalty-free | neural-int-exact | — | §5 Interactive, temporal & computed content |
wai.splat.sog |
payload | candidate | volumetric | standalone | patent-pool | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.splat.spz |
payload | registered | volumetric | standalone | royalty-free | standard-unclassified | — | §5 Interactive, temporal & computed content |
wai.tensor.nnc |
payload | candidate | binary | standalone | patent-pool | standard-unclassified | — | §5 Prior artifacts, general tensors and derivation operations |
wai.ternary.tt |
payload | registered | binary | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.text.xz |
payload | registered | text | standalone | royalty-free | standard-defined | recommended | §5 Recommended modern set |
wai.text.zstd |
payload | registered | text | standalone | royalty-free | standard-defined | floor | §5 Mandatory floor |
wai.video.av1 |
payload | registered | video | standalone | royalty-free | standard-tolerance | recommended | §5 Recommended modern set |
wai.video.av1.lossless |
payload | registered | video | standalone | royalty-free | standard-tolerance | recommended | §5 Recommended modern set |
wai.video.av2 |
payload | registered | video | standalone | royalty-free | standard-tolerance | — | §5 Broadcast and streaming codecs |
wai.video.avc |
payload | registered | video | standalone | patent-pool | standard-defined | — | §5 Broadcast and streaming codecs |
wai.video.avs3 |
payload | registered | video | standalone | patent-pool | standard-unclassified | — | §5 Broadcast and streaming codecs |
wai.video.channel |
record | registered | — | — | — | — | — | §5 Neural capabilities |
wai.video.evc |
payload | registered | video | standalone | patent-pool | standard-unclassified | — | §5 Broadcast and streaming codecs |
wai.video.evc.baseline |
payload | registered | video | standalone | royalty-free | standard-unclassified | — | §5 Broadcast and streaming codecs |
wai.video.hevc |
payload | registered | video | standalone | patent-pool | standard-defined | — | §5 Broadcast and streaming codecs |
wai.video.int_hyper |
payload | registered | video | standalone | royalty-free | neural-int-exact | — | §5 Neural capabilities |
wai.video.int_motion |
payload | registered | video | standalone | royalty-free | standard-defined | — | §5 Neural capabilities |
wai.video.j2k |
payload | registered | video | standalone | royalty-free | standard-tolerance | — | §5 Immersive audio, cinema, volumetric, haptics, HDR |
wai.video.keys |
record | registered | — | — | — | — | — | §5 Neural capabilities |
wai.video.lcevc |
companion | registered | video | enhancement | patent-pool | standard-unclassified | — | §5 Broadcast and streaming codecs |
wai.video.manifest |
record | registered | — | — | — | — | — | §5 Neural capabilities |
wai.video.package |
record | registered | — | — | — | — | — | §5 Neural capabilities |
wai.video.ssai |
record | registered | — | — | — | — | — | §5 Neural capabilities |
wai.video.vp9 |
payload | registered | video | standalone | royalty-free | standard-defined | — | §5 Broadcast and streaming codecs |
wai.video.vvc |
payload | registered | video | standalone | patent-pool | standard-defined | — | §5 Broadcast and streaming codecs |
wai.world.live |
payload | registered | interactive | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.world.model |
payload | registered | interactive | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.world.replay |
payload | registered | interactive | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
wai.world.scene |
payload | registered | interactive | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content |
| identifier (not a capability) | meaning | in |
|---|---|---|
wai.det.fixed64 |
the fixed-point arithmetic floor the deterministic *-equivalence criteria are computed in | §5 Interactive, temporal & computed content |
wai.world.sim.feed0 |
the identity simulation step of wai.feed.state | §5 Interactive, temporal & computed content |
wai.world.sim.skeletal0 |
the skeletal-pose simulation step of wai.avatar.pose | §5 Interactive, temporal & computed content |
| unregistered label | reason |
|---|---|
wai.quantum.mitigate |
a receipt-kind label the wai-quantum crate seals; no revision of SPEC or of an extension registers it, so it is not a registered record |
wai.quantum.decode |
a receipt-kind label the wai-quantum crate seals; no revision of SPEC or of an extension registers it, so it is not a registered record |
wai.quantum.compile |
a receipt-kind label the wai-quantum crate seals; no revision of SPEC or of an extension registers it, so it is not a registered record |
wai.quantum.rearrange |
a receipt-kind label the wai-quantum crate seals; no revision of SPEC or of an extension registers it, so it is not a registered record |
wai.quantum.qbom |
a receipt-kind label the wai-quantum crate seals; no revision of SPEC or of an extension registers it, so it is not a registered record |