riff-wave-core 0.1.0

Sans-IO RIFF/WAVE (PCM) mux and demux (freestanding)
Documentation
# riff-wave — roadmap

Sans-IO RIFF/WAVE PCM mux + demux (unprefixed). Workspace index: [`docs/roadmap.md`](../../../docs/roadmap.md).

## Stages

### 1 — PCM mux + demux (this session)

- [x] Crate + naming (ADR-0012) + [`adr/0001`]../adr/0001-riff-wave-freestanding-core.md
- [x] `Muxer`: buffered PCM samples → complete `RIFF`/`WAVE`/`fmt `/`data` file on `finish()`
- [x] `parse()`: complete-buffer demux, skips unknown chunks (`LIST`, `fact`, …)
- [x] `wFormatTag` 1 (PCM) and 3 (IEEE float)

### Deferred (tracked, not silently dropped)

- [ ] `WAVE_FORMAT_EXTENSIBLE` (`wFormatTag` 0xFFFE) — multichannel channel masks
- [ ] Compressed WAV payloads (ADPCM, µ-law/A-law, MP3-in-WAV) — would need a
      per-format decode step outside a container crate's scope
- [x] `mediaway-container` facade wiring — `mediaway-container::wav`
      (`push_packet`/`finish`, `parse`; no `Mux`/`Demux` trait fit, RIFF's
      chunk sizes need the whole buffer up front) — 2026-07-29
- [ ] RF64/W64 (>4 GiB WAV) — out of scope; classic 32-bit RIFF size field only