dataChunk(): Coder<DataChunk>
Creates a coder for data chunks.
Encodes and decodes data chunk structures with:
- 4-byte chunk ID ("data")
- 4-byte chunk size (little-endian)
- Exactly
chunkSizebytes of audio data
The audio data length is driven by the chunkSize field, as required by RIFF:
a data chunk carries no length of its own beyond chunkSize.
Basic data chunk encoding and decoding
Basic data chunk encoding and decoding
import { assertEquals } from "@std/assert"; import { dataChunk } from "@binstruct/wav"; const dataCoder = dataChunk(); const testData = { chunkId: "data", chunkSize: 1000, audioData: new Array(1000).fill(0) }; const buffer = new Uint8Array(2048); const bytesWritten = dataCoder.encode(testData, buffer); const [decoded, bytesRead] = dataCoder.decode(buffer); assertEquals(bytesRead, 1008); assertEquals(bytesWritten, 1008); // 4 (chunkId) + 4 (chunkSize) + 1000 (audioData) assertEquals(decoded.chunkId, "data"); assertEquals(decoded.chunkSize, 1000); assertEquals(decoded.audioData.length, 1000); // Uses chunkSize reference
Coder<DataChunk>
A coder that can encode/decode DataChunk objects