riff-wave-core
Status: early development (
0.x). Not recommended for production; public APIs may change without notice. Part of the Mediaway media stack.
Sans-IO RIFF/WAVE mux and demux for PCM audio (integer and IEEE float). Mux buffers
pushed samples and writes a complete .wav on finish() (RIFF chunk sizes must be
known up front); demux parses a complete buffer back into a format description and raw
samples. No I/O in the core.
Quick start
use ;
let format = WaveFormat ;
let mut muxer = new;
muxer.push_samples;
let wav = muxer.finish; // complete RIFF/WAVE file
// Parse it back: format description + raw sample payload.
let = parse?;
assert_eq!;
Status
Status marks: ✅ first-class (tests for claimed scope) · ⚡ Zero-Copy path (no payload copy; implies ✅) · 🆗 best-effort / prototype · 🛠️ planned · ❌ attempted and genuinely blocked · 👻 not exercisable yet (no hardware / device / session available)
| Area | Status | Notes |
|---|---|---|
Mux (PCM integer + IEEE float, fmt /data chunks) |
✅ | |
Demux (parse, skips unknown chunks like LIST/fact) |
✅ | Complete-buffer API (not incremental) |
WAVE_FORMAT_EXTENSIBLE (multichannel masks) |
🛠️ | |
| Compressed WAV payloads (ADPCM, µ-law/A-law, MP3-in-WAV) | 🛠️ | Needs a per-format decode step outside container scope |
| RF64 / W64 (> 4 GiB files) | 🛠️ | Classic 32-bit RIFF size field only |
Docs
docs/roadmap.md— stages, deferred items, design decisionsmediaway-container— Mediaway-typedwavsurface over this crate- Root README — container support matrix
Contributing
Contributions are welcome — open an issue or pull request at github.com/nyxways/mediaway.
License
MIT OR Apache-2.0.