listChunk(): Coder<ListChunk>
Creates a coder for LIST chunks.
Encodes and decodes LIST chunk structures with:
- 4-byte chunk ID ("LIST")
- 4-byte chunk size
- 4-byte list type
- Exactly
chunkSize - 4bytes of list data
A RIFF LIST chunk counts its list type towards chunkSize, so the payload
that follows the list type is four bytes shorter than chunkSize.
Basic LIST chunk encoding and decoding
Basic LIST chunk encoding and decoding
import { assertEquals } from "@std/assert"; import { listChunk } from "@binstruct/wav"; const listCoder = listChunk(); const testList = { chunkId: "LIST", chunkSize: 20, listType: "INFO", data: new Array(16).fill(0) }; const buffer = new Uint8Array(100); const bytesWritten = listCoder.encode(testList, buffer); const [decoded, bytesRead] = listCoder.decode(buffer); assertEquals(bytesRead, 28); assertEquals(bytesWritten, 28); // 4 (chunkId) + 4 (chunkSize) + 4 (listType) + 16 (data) assertEquals(decoded.chunkId, "LIST"); assertEquals(decoded.chunkSize, 20); assertEquals(decoded.listType, "INFO"); assertEquals(decoded.data.length, 16); // chunkSize - 4 (listType)
Coder<ListChunk>
A coder that can encode/decode ListChunk objects