A broadcast chain holds AC-3 and E-AC-3, and a channel offers its audio in several languages and with audio description; WAI could name neither, nor say how the renditions are offered. SPEC §5 registers wai.audio.ac3 (AC-3 syncframes back to back, ATSC A/52:2018 §5, ETSI TS 102 366) and wai.audio.eac3 (an E-AC-3 bit stream, A/52 Annex E), sink-supplied and carried unread, of the class proprietary: one licensor still runs the programme, and the reported expiry of their essential patents is not confirmed by it (research/media-codec-registry.md, ¹⁸). Their replicate class is standard-unclassified: A/52 §7.3.4 lets a decoder dither zero-bit mantissas with any reasonably random sequence. The glossary links them, media-identify names ac3 and eac3, and live-ingest maps `ac-3`, `ec-3` and stream types 0x81 and 0x87 to them; the reference gateway does not carry them in this revision. packaging §8.10 writes a set of audio rendition entries (main, alternate, dub, commentary and audio description, in AAC, Opus, FLAC, AC-3 or E-AC-3) as HLS EXT-X-MEDIA tags of type AUDIO (draft-pantos-hls-rfc8216bis-22) and DASH audio adaptation sets with ETSI TS 103 285 V1.4.1 §6.1.2's roles and audio-purpose descriptor. An audio description is a broadcast mix bound to its access-services description record, which must verify and be in its language; it is marked describes-video, machine-generated when its voice is synthesized, and named in X-WAI-DESCRIPTION and a DASH SupplementalProperty. The writer refuses what the HLS text forbids or asks against: a name twice in a group, two defaults, two renditions chosen unasked that cannot be told apart, groups that do not offer the same renditions. The reference is the audio_renditions module of wai-rs; the corpus is pack-conformance/renditions/ (31 cases), with renditions_verify.py its second implementation: every case agrees, 9 of 9 mutated copies fail and 15 of 15 weakened verifiers are caught. Eleven faults planted in the reference (AC-3 royalty-free, E-AC-3 exact, eac3 unmapped in identify, the codecs rule, the description's language, autoselect, the DASH role, the groups rule, the machine label, the description's rules, the default rule) each fail its tests. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1.4 KiB
pack-conformance/renditions — audio renditions for HLS and DASH
The corpus of extensions/packaging.md §8.10, in one file,
vectors.json.
Provenance. Generated here by wai_audio_renditions_vectors gen (wai-rs, feature
audio_renditions): rendition entries written by the generator, and access-services description
records it signs with Ed25519 keys on fixed 32-byte seeds; no media and no input from outside
this repository.
describer is the key that signs the description records, as 64 lowercase hexadecimal digits.
Each of cases is a set of entries (§8.10.1), the description records it may name (each a
record's text, access-services §2), and its outcome: the HLS tags (hls, §8.10.3) and DASH
adaptation sets (dash, §8.10.4, one line an element), or the reason it is refused
(refuse, §8.10.6).
Everything is synthetic: keys attest nothing, and the URIs name no published file. Each case states the outcome it was written to have, declared in the generator, never copied from a verifier.
wai_audio_renditions_vectors verify and tests/audio_renditions.rs check that the file
regenerates byte for byte and that wai-rs reaches every stated outcome.
../renditions_verify.py is the second implementation, written from the extension's text, which
also mutates copies of the corpus and drops each of its own checks in turn and requires each to
be caught.