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]>
235 lines
22 KiB
Markdown
235 lines
22 KiB
Markdown
# WAI registry
|
|
|
|
The registry is the set of strings [SPEC §5](SPEC.md) 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`](wai-rs/src/codecs/registry.rs)
|
|
together with the class functions of [`wai-rs/src/codecs/mod.rs`](wai-rs/src/codecs/mod.rs).
|
|
`wai registry export` writes it out in machine-readable form:
|
|
|
|
| file | what |
|
|
|---|---|
|
|
| [`registry/capabilities.json`](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`](registry/capabilities.schema.json) | JSON Schema (2020-12) for that file; its enums are the label sets below |
|
|
| [`vocab/v2.ttl`](vocab/v2.ttl), [`vocab/v2.jsonld`](vocab/v2.jsonld), [`vocab/v2.shapes.ttl`](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 `WAI1`
|
|
`capability` or `fallback`, or a `WAI2` rendition.
|
|
- **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 `WAI2`
|
|
companion.
|
|
- **derivation** — an operation of ISO/IEC 23001-16 (`wai.derive.*`,
|
|
[derived-tracks](extensions/derived-tracks.md)). 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 records
|
|
`wai.video.manifest` and 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
|
|
from `Wai::check_candidates` and `WaiMulti::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`](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
|
|
|
|
1. Add the capability constant to `wai-rs/src/codecs/mod.rs` and, for a payload or
|
|
companion capability, list it in `known_capabilities()` and give it an arm in
|
|
`capability_tier`, `capability_license` and `capability_replicate_class` (each
|
|
function has no default, and the tests reject a registered capability without
|
|
one). A record goes in `RECORDS`, a derivation in `codecs::derivation`.
|
|
2. Give it a row in `ROWS` of `wai-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 in `CANDIDATES`.
|
|
3. Register it in SPEC §5, under that heading, with its payload format and role.
|
|
The test `spec_and_registry_name_the_same_strings` holds SPEC and the table to
|
|
the same set of strings, in both directions.
|
|
4. Run `cargo run --no-default-features --bin wai -- registry export` from
|
|
`wai/wai-rs`, and commit the files it writes.
|
|
5. Link it from the codec glossary entry that describes its bitstream, or list it
|
|
in the glossary's `GLOSSARY_NO_ENTRY` table with the reason
|
|
([`glossary/SCHEMA.md`](glossary/SCHEMA.md)).
|
|
6. 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
|
|
|
|
<!-- generated: wai registry export; do not edit by hand -->
|
|
| 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 |
|
|
<!-- end generated -->
|