Seventeen Opus streams, each decoded three ways: decodeAudioData on the WebM file, WebCodecs AudioDecoder on the same packets, and a MediaCapabilities.decodingInfo() query for that channel count. Every stream is 48 kHz with one sine per channel, 2 seconds long (3 for the three built earlier: family 0 stereo, and 16 channels in families 255 and 2). Nothing is fetched except the files next to this page, so it needs a web server (Pages, or python3 -m http.server), not a file:// URL.
The streams are valid: a stream that a browser refuses here decodes in Chrome and Firefox. Families: 0 is stereo, 1 is the Vorbis-order surround layouts of RFC 7845, 2 is Ambisonics from RFC 8486, 255 is independent streams with no defined layout (RFC 7845, 5.1.1.3). The family 2 files are the family 255 files with one header byte changed; make-matrix.sh says why that is a valid family 2 stream and regenerates all of it.
| stream | channels | family in file | decodeAudioData | WebCodecs | MediaCapabilities (file / media-source) |
|---|