open-standards/wai/pack-conformance/loudness/vectors.json
Transaction Science f4578857a4
Some checks failed
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 11s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 11s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 1m19s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 1m19s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 1m20s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m23s
wai-key-proxy / does this change touch it (push) Successful in 50s
wai-audit collector and player integration / does this change touch it (push) Successful in 53s
wai-fleet service / does this change touch it (push) Successful in 53s
WAI operation catalogue / does this change touch it (push) Successful in 54s
wai-ledger service / does this change touch it (push) Successful in 53s
wai-quantum for JavaScript / does this change touch it (push) Successful in 53s
wai-quantum studio and desktop / does this change touch it (push) Successful in 52s
wai-sink-android native sink library / does this change touch it (push) Successful in 1m45s
WAI Studio / does this change touch it (push) Successful in 1m18s
wai-sink-swift native sink package / does this change touch it (push) Successful in 1m20s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 4m30s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 52s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 1m40s
wai-fleet service / service · macos (push) Successful in 43s
wai-ledger service / service · macos (push) Successful in 1m7s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-audit collector and player integration / collector · linux (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
wai-fleet service / service · linux (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-ledger service / service · linux (push) Has been cancelled
wai-quantum for JavaScript / javascript · linux (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 3m34s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 6m17s
wai-key-proxy / proxy · linux (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Has been cancelled
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Has been cancelled
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Has been cancelled
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Has been cancelled
wai: loudness measured in integers, with the gain to a target in a signed statement
A packager could say nothing of a programme's loudness, and a broadcast or streaming chain must
deliver at a target (ATSC A/85, EBU R 128) and show it did.

packaging §12 measures integrated loudness as ITU-R BS.1770 does — K-weighting, 400 ms blocks
every 100 ms, the absolute gate at −70 LKFS and the relative gate 10 LU below — in integers only:
the coefficients at 48 kHz in units of 2^−30, exact sums of squares, and a stated integer
logarithm, so every implementation gives the same figure to the thousandth of an LU; BS.1770's
calibration tone measures −3 004. It states the sample peak and the gain to a target under a peak
ceiling. The packager signs a loudness statement (wai.pack.loudness, bs1770-int/1) naming the
component, the SHA-256 of its samples, every figure, the target, the ceiling, the gain and its
package receipt; a verifier holds the gain to the figures with no samples and recomputes every
figure with them. `wai-pack loudness measure` writes one from a WAV source, verified against it
before it is written, and `wai-pack loudness verify` checks one. Packaging's reasons are §13 now.

The reference is the loudness module of wai-rs; the corpus is pack-conformance/loudness/ (10
programmes given as formulas of integers, the logarithm of ten integers, 26 statements), the
tone's table and the filter's coefficients held to the text, with loudness_verify.py its second
implementation: every case agrees, 10 of 10 mutated copies fail and 12 of 12 weakened verifiers
are caught. Fourteen faults planted in the reference (the absolute gate, a 20 LU relative gate,
the surround and LFE weights, the block step, the filter's rounding, the logarithm's last bit, the
peak figure, the ceiling, the gain check, the source digest, the receipt, the first filter
section, a coefficient off by one) each fail its tests.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 15:23:58 -05:00

710 lines
33 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"about": "Conformance corpus of extensions/packaging.md §12 (loudness): programmes described by a formula of integers (`tone`: one period of a 1 kHz tone at 48 kHz, `sine_1k`, times num / den, floored; `noise`: a linear congruential generator; `spike`: noise with one full-scale sample; `zero`), each with its measurement (§12.2, §12.3); and signed statements (§12.5) with the outcome each was written to have (§12.6). Every key is Ed25519 from a fixed 32-byte seed and attests nothing. Each programme is held by the generator to the loudness BS.1770's calibration or its construction declares. Regenerate with `wai_loudness_vectors gen`.",
"sine_1k": [
0,
4277,
8481,
12539,
16383,
19947,
23170,
25996,
28377,
30273,
31650,
32487,
32767,
32487,
31650,
30273,
28377,
25996,
23170,
19947,
16383,
12539,
8481,
4277,
0,
-4277,
-8481,
-12539,
-16383,
-19947,
-23170,
-25996,
-28377,
-30273,
-31650,
-32487,
-32767,
-32487,
-31650,
-30273,
-28377,
-25996,
-23170,
-19947,
-16384,
-12539,
-8481,
-4277
],
"logarithms": [
[
"1",
"0"
],
[
"2",
"4294967296"
],
[
"3",
"6807362105"
],
[
"10",
"14267572527"
],
[
"32767",
"64424320340"
],
[
"32768",
"64424509440"
],
[
"1000000007",
"128408152788"
],
[
"18446744073709551616",
"274877906944"
],
[
"1267650600228229401496703205377",
"429496729600"
],
[
"340282366920938463463374607431768211455",
"549755813887"
]
],
"packager": "0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0",
"programmes": [
{
"name": "left_full_scale",
"description": "A full-scale 1 kHz tone on the left channel: BS.1770's calibration, −3.01 LKFS.",
"rate": 48000,
"channels": 2,
"segments": [
{
"frames": 72000,
"sources": [
{
"kind": "tone",
"num": 1,
"den": 1
},
{
"kind": "zero"
}
]
}
],
"outcome": {
"frames": 72000,
"blocks": 12,
"gated": 12,
"integrated_milli": "-3004",
"peak": 32767,
"peak_milli": "-2"
}
},
{
"name": "stereo_minus_20",
"description": "The tone at a tenth of full scale on both channels: about −20 LKFS.",
"rate": 48000,
"channels": 2,
"segments": [
{
"frames": 72000,
"sources": [
{
"kind": "tone",
"num": 1,
"den": 10
},
{
"kind": "tone",
"num": 1,
"den": 10
}
]
}
],
"outcome": {
"frames": 72000,
"blocks": 12,
"gated": 12,
"integrated_milli": "-19994",
"peak": 3277,
"peak_milli": "-20000"
}
},
{
"name": "mono_noise",
"description": "Noise on one channel.",
"rate": 48000,
"channels": 1,
"segments": [
{
"frames": 57600,
"sources": [
{
"kind": "noise",
"seed": 11,
"amp": 8000
}
]
}
],
"outcome": {
"frames": 57600,
"blocks": 9,
"gated": 9,
"integrated_milli": "-13889",
"peak": 8000,
"peak_milli": "-12248"
}
},
{
"name": "relative_gate",
"description": "Noise for a second, then noise 15 dB lower for a second: the quiet blocks fall under the relative gate, 10 LU below.",
"rate": 48000,
"channels": 2,
"segments": [
{
"frames": 48000,
"sources": [
{
"kind": "noise",
"seed": 21,
"amp": 10000
},
{
"kind": "noise",
"seed": 22,
"amp": 10000
}
]
},
{
"frames": 48000,
"sources": [
{
"kind": "noise",
"seed": 23,
"amp": 1778
},
{
"kind": "noise",
"seed": 24,
"amp": 1778
}
]
}
],
"outcome": {
"frames": 96000,
"blocks": 17,
"gated": 10,
"integrated_milli": "-9580",
"peak": 10000,
"peak_milli": "-10310"
}
},
{
"name": "absolute_gate",
"description": "Noise of amplitude 3: every block under −70 LKFS.",
"rate": 48000,
"channels": 1,
"segments": [
{
"frames": 48000,
"sources": [
{
"kind": "noise",
"seed": 31,
"amp": 3
}
]
}
],
"outcome": {
"frames": 48000,
"blocks": 7,
"gated": 0,
"integrated_milli": null,
"peak": 3,
"peak_milli": "-80768"
}
},
{
"name": "silence",
"description": "Silence: no loudness and no peak.",
"rate": 48000,
"channels": 2,
"segments": [
{
"frames": 48000,
"sources": [
{
"kind": "zero"
},
{
"kind": "zero"
}
]
}
],
"outcome": {
"frames": 48000,
"blocks": 7,
"gated": 0,
"integrated_milli": null,
"peak": 0,
"peak_milli": null
}
},
{
"name": "short",
"description": "A programme shorter than one block.",
"rate": 48000,
"channels": 1,
"segments": [
{
"frames": 19199,
"sources": [
{
"kind": "tone",
"num": 1,
"den": 1
}
]
}
],
"outcome": {
"frames": 19199,
"blocks": 0,
"gated": 0,
"integrated_milli": null,
"peak": 32767,
"peak_milli": "-2"
}
},
{
"name": "surround",
"description": "5.1, the tone at a tenth of full scale on the left surround alone: weighted by 1.41, about −21.5 LKFS.",
"rate": 48000,
"channels": 6,
"segments": [
{
"frames": 48000,
"sources": [
{
"kind": "zero"
},
{
"kind": "zero"
},
{
"kind": "zero"
},
{
"kind": "zero"
},
{
"kind": "tone",
"num": 1,
"den": 10
},
{
"kind": "zero"
}
]
}
],
"outcome": {
"frames": 48000,
"blocks": 7,
"gated": 7,
"integrated_milli": "-21512",
"peak": 3277,
"peak_milli": "-20000"
}
},
{
"name": "lfe_only",
"description": "5.1, a full-scale tone on the LFE alone: excluded, so no loudness.",
"rate": 48000,
"channels": 6,
"segments": [
{
"frames": 48000,
"sources": [
{
"kind": "zero"
},
{
"kind": "zero"
},
{
"kind": "zero"
},
{
"kind": "tone",
"num": 1,
"den": 1
},
{
"kind": "zero"
},
{
"kind": "zero"
}
]
}
],
"outcome": {
"frames": 48000,
"blocks": 7,
"gated": 0,
"integrated_milli": null,
"peak": 32767,
"peak_milli": "-2"
}
},
{
"name": "quiet_with_a_spike",
"description": "Quiet noise with one full-scale sample: the peak limits a gain toward a loud target.",
"rate": 48000,
"channels": 2,
"segments": [
{
"frames": 48000,
"sources": [
{
"kind": "spike",
"seed": 41,
"amp": 2000,
"at": 24000
},
{
"kind": "noise",
"seed": 42,
"amp": 2000
}
]
}
],
"outcome": {
"frames": 48000,
"blocks": 7,
"gated": 7,
"integrated_milli": "-22851",
"peak": 32767,
"peak_milli": "-2"
}
}
],
"statements": [
{
"name": "to_target",
"description": "−20 LKFS to a target of −24: a gain of about −4 dB.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"66618f179776c8326546c6534a6a83398c5e9ae13da98bbcc6bf4549b5db21d30da5794dbbfdec87ba423d3d5b97441d2769e75ae271302a42da7220fd49770c\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"verified": {
"component": "audio",
"integrated_milli": "-19994",
"gain_milli": "-4006",
"limited": "no"
}
}
},
{
"name": "limited_by_the_peak",
"description": "A quiet programme toward −14 with a full-scale sample: the gain stops at the ceiling.",
"statement": "{\"blocks\":7,\"ceiling_milli\":\"-1000\",\"component\":\"audio\",\"gain_milli\":\"-998\",\"gated\":7,\"integrated_milli\":\"-22851\",\"kind\":\"wai.pack.loudness\",\"limited\":\"yes\",\"method\":\"bs1770-int/1\",\"peak\":32767,\"peak_milli\":\"-2\",\"receipt_hash\":null,\"sig\":\"3cc09285f46372cfe1f3cb7df8932e2aac8f61d910134e306b46bbc0d92e320708b0111e40e68c49e51d5097ad42663df15eaed2a08e908dee51ff9d4248640c\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":48000,\"rate\":48000,\"sha256\":\"35b9727025b89a4e46302fe3e8defc2268dce1129b6d972fc59ec6b51fc40ce9\"},\"target_milli\":\"-14000\",\"version\":1}\n",
"receipt_hash": null,
"source": "quiet_with_a_spike",
"outcome": {
"verified": {
"component": "audio",
"integrated_milli": "-22851",
"gain_milli": "-998",
"limited": "yes"
}
}
},
{
"name": "silence",
"description": "Silence: no loudness and no gain.",
"statement": "{\"blocks\":7,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":null,\"gated\":0,\"integrated_milli\":null,\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":0,\"peak_milli\":null,\"receipt_hash\":null,\"sig\":\"489c66c400045924a530ddc43d4ad39b5a94b4113a0adf4c7b68da9f4e1dc7bff5eb4c4ea0b84bf310e4f99caac78487901b084bc9b4431bda70a68f79de5f0b\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":48000,\"rate\":48000,\"sha256\":\"ea0787f65f73b0013d03b359490e3125211b28ad5c1502ffb1544c0ded4192f5\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "silence",
"outcome": {
"verified": {
"component": "audio",
"integrated_milli": null,
"gain_milli": null,
"limited": "no"
}
}
},
{
"name": "bound_to_a_receipt",
"description": "A statement naming its package's receipt, held to it.",
"statement": "{\"blocks\":7,\"ceiling_milli\":\"-1000\",\"component\":\"audio-51\",\"gain_milli\":\"-1488\",\"gated\":7,\"integrated_milli\":\"-21512\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":\"7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e\",\"sig\":\"5013f12e27ad46e6aeb2af7b90b5a70bd18a36333bea7166c0ced7a6ec4bc9fec48fd76761e22133bcb2723a6d129d37b279603fca4f69924c7b17a91d6ea90f\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":6,\"frames\":48000,\"rate\":48000,\"sha256\":\"5c90b7ed7fac693435e415fbe7cb84be459e6db8d3ecf266dbe3f9c4b4821ba8\"},\"target_milli\":\"-23000\",\"version\":1}\n",
"receipt_hash": "7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e",
"source": "surround",
"outcome": {
"verified": {
"component": "audio-51",
"integrated_milli": "-21512",
"gain_milli": "-1488",
"limited": "no"
}
}
},
{
"name": "without_the_source",
"description": "The statement held to its own figures alone.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"66618f179776c8326546c6534a6a83398c5e9ae13da98bbcc6bf4549b5db21d30da5794dbbfdec87ba423d3d5b97441d2769e75ae271302a42da7220fd49770c\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"verified": {
"component": "audio",
"integrated_milli": "-19994",
"gain_milli": "-4006",
"limited": "no"
}
}
},
{
"name": "another_receipt",
"description": "A statement held to another package's receipt.",
"statement": "{\"blocks\":7,\"ceiling_milli\":\"-1000\",\"component\":\"audio-51\",\"gain_milli\":\"-1488\",\"gated\":7,\"integrated_milli\":\"-21512\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":\"7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e\",\"sig\":\"5013f12e27ad46e6aeb2af7b90b5a70bd18a36333bea7166c0ced7a6ec4bc9fec48fd76761e22133bcb2723a6d129d37b279603fca4f69924c7b17a91d6ea90f\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":6,\"frames\":48000,\"rate\":48000,\"sha256\":\"5c90b7ed7fac693435e415fbe7cb84be459e6db8d3ecf266dbe3f9c4b4821ba8\"},\"target_milli\":\"-23000\",\"version\":1}\n",
"receipt_hash": "7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f",
"source": null,
"outcome": {
"refuse": "loudness-receipt-mismatch"
}
},
{
"name": "another_source",
"description": "A statement held to another programme's samples, of the same rate and layout.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"66618f179776c8326546c6534a6a83398c5e9ae13da98bbcc6bf4549b5db21d30da5794dbbfdec87ba423d3d5b97441d2769e75ae271302a42da7220fd49770c\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "left_full_scale",
"outcome": {
"refuse": "loudness-source-mismatch"
}
},
{
"name": "not_json",
"description": "Not JSON.",
"statement": "{\"kind\": ",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-malformed"
}
},
{
"name": "member_missing",
"description": "No peak_milli.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"receipt_hash\":null,\"sig\":\"e6c286bfd90de60e215d7619b4630b38b83f1d811058f0750bf79046dce620dfb064a3b69ad764e2fe69dedc2327053c414837c428179b6d0133820a31faaf02\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-malformed"
}
},
{
"name": "member_added",
"description": "A member the text does not define.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"note\":\"x\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"242b0c6cbc0479c343de630d2f6e431f5ae78a21aae5b3782598eeece2b541419666002243db8622491c81540ef759fa5726ccbb6933a617a91e19c85d27cb03\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-malformed"
}
},
{
"name": "integer_not_a_string",
"description": "The target as a JSON number.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"58c2b4f99b13b63877f513991e09c6e23b739940cbafaac36f15004d6e91b44615f420d50967ada485cd8a09c9806fc979c1a9f0ec0b25db7f13194116e15707\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":-24000,\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-malformed"
}
},
{
"name": "negative_zero",
"description": "A target of \"-0\".",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"0039f53d3c4f0c52b148c4b00aa0c8856f969be42a1e3cd87bb2786f29f9f14fb12004180455cf34be015e20fd892e35c12d92bdd60da484f3168b8cd8042506\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-0\",\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-malformed"
}
},
{
"name": "limited_not_a_word",
"description": "limited written true.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":true,\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"945d7672baa3ae139169b4f0e172c1eda461c4705812c83aa9b3c1988e14758418b73138b8addf85bb4adaf8dd98c2b65c44786fda7fc82391a8e06a2773d001\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-malformed"
}
},
{
"name": "version_two",
"description": "Version 2.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"031e9de4fcaa92d4948f8a58864576f5c15761e0928ba374ce0cd41cc80130b997c838b6b0ac56c9202f9541a89db75c67d099d2f81b1638f49bd6aac0d6120a\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":2}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-malformed"
}
},
{
"name": "signature",
"description": "The signature's last digit changed.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"66618f179776c8326546c6534a6a83398c5e9ae13da98bbcc6bf4549b5db21d30da5794dbbfdec87ba423d3d5b97441d2769e75ae271302a42da7220fd497700\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-signature"
}
},
{
"name": "changed_after_signing",
"description": "The component renamed, the signature unchanged.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio-2\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"66618f179776c8326546c6534a6a83398c5e9ae13da98bbcc6bf4549b5db21d30da5794dbbfdec87ba423d3d5b97441d2769e75ae271302a42da7220fd49770c\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": null,
"outcome": {
"refuse": "loudness-signature"
}
},
{
"name": "rate",
"description": "A programme stated at 44.1 kHz.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"1bf6374bfe12f6201b4ce2372d2df82e5e1f758c20447bf91e49a121924a64a5dcc253b45bfbe0dce12bd17d9282b693f45567af16f9c2b3d16307147037ec01\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":44100,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-unsupported"
}
},
{
"name": "layout",
"description": "Three channels.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"03923f74de6f3d5e682d6276c6a51b56d550d070b964ace9280710a52892631b6e0b2fe64e337b705a74ce5f51ca9f6fef5feb69a7cdc7eb27511fe076456b04\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":3,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-unsupported"
}
},
{
"name": "method",
"description": "Another method.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-float\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"0c41d7f7974a675c19ce6893a674c88e8860dafebbcbafae83bd046ce7041fd5598cb978c58a36579b7e346634491f94235c388f2a34ec7cdb84840c296d7b0a\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-unsupported"
}
},
{
"name": "target_moved",
"description": "The target changed and the gain left as it was.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"52deade1f0776e1f94e0c5733c1697863767e21a635dd939a36f682cd975b8259a865ac745a516737c2781f632ce85ff2a9009b0cd34783f111a1701a28abf09\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-23000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-gain"
}
},
{
"name": "limited_flipped",
"description": "limited stated yes for a gain the ceiling did not limit.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"yes\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"4c8b0257b5ba82d3dac86706e7b7363f23cb28dfa22e92bc0dd87217fb80ffa3fb7dd4cf6d463b5872c55a6345f44898c0945adfce621ceb968f7bba6f700700\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-gain"
}
},
{
"name": "peak_figure",
"description": "A peak figure that is not its peak's.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-100\",\"receipt_hash\":null,\"sig\":\"e2fa640430809284360d448e66203134f7b304e1bdafcb02051c9749a2f8fffc1c74630fd52ec4adda49a4c8ac48ce484f488cbaa7e7a594e58e7ec3e3db730b\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-gain"
}
},
{
"name": "blocks",
"description": "One block more than the frames give.",
"statement": "{\"blocks\":13,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"397fcbc07b817cc9ad45d568e044ddaa9abe3db2a0d80538ddf71e3b470019719d07d04d811ace0f253a096913516be2201008b3b641392ddd269e9650a3bf05\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-gain"
}
},
{
"name": "gated_without_loudness",
"description": "Blocks kept and no loudness.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":null,\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"62ced5413b786ec5c115f3c38f8e82a07ea79997a45b9deafc1248faf8d3f12f7b279a56641fd37e5cd0417fc8b438cf42e4a6a761f136c5e6becf48be20200e\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-gain"
}
},
{
"name": "loudness_off_by_one",
"description": "A loudness a thousandth of an LU off, its gain moved with it.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4007\",\"gated\":12,\"integrated_milli\":\"-19993\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3277,\"peak_milli\":\"-20000\",\"receipt_hash\":null,\"sig\":\"7ac5224d0b046e41fa068f25e29930fac201e159a44ea8b6fc522705279a8d976879069eabf7f782a78b9b6969eab90a95f522e354ddd82ebddf7af0cf346b05\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-not-recomputed"
}
},
{
"name": "peak_off_by_one",
"description": "A peak one below the samples', its figure moved with it.",
"statement": "{\"blocks\":12,\"ceiling_milli\":\"-2000\",\"component\":\"audio\",\"gain_milli\":\"-4006\",\"gated\":12,\"integrated_milli\":\"-19994\",\"kind\":\"wai.pack.loudness\",\"limited\":\"no\",\"method\":\"bs1770-int/1\",\"peak\":3276,\"peak_milli\":\"-20004\",\"receipt_hash\":null,\"sig\":\"9931e73cfb795e874a5bf687ccea732bf170ae1e193f04106c88b5a8b984d5785ee19fec55993a7618f560beaa7c15bb55778e26869273d05caa990e2e7b5f02\",\"signer_pubkey\":\"0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0\",\"source\":{\"channels\":2,\"frames\":72000,\"rate\":48000,\"sha256\":\"c65920df89d6c3da051a1bb5683036a68bc93fa6b293742b9110dc6c524c0dca\"},\"target_milli\":\"-24000\",\"version\":1}\n",
"receipt_hash": null,
"source": "stereo_minus_20",
"outcome": {
"refuse": "loudness-not-recomputed"
}
}
]
}