ogg-core
Status: early development (
0.x). Not recommended for production; public APIs may change without notice. Part of the Mediaway media stack.
Sans-IO Ogg page/packet framing (RFC 3533): mux writes spec-valid pages (one packet per page), demux is a general incremental reader that handles multi-packet pages, packets spanning continuation pages, and CRC verification. The transport for Opus, Vorbis, and FLAC logical bitstreams. No I/O in the core.
Quick start
use ;
let mut muxer = new;
let mut ogg = Vecnew;
muxer.push_packet?; // bos set automatically
muxer.push_packet?; // eos on the last page
let mut demuxer = new;
demuxer.push_bytes;
while let Some = demuxer.poll_packet?
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 (one packet per page, correct lacing + CRC, bos/eos) | ✅ | |
| Demux (multi-packet pages, cross-page continuation, CRC) | ✅ | General case, tested against hand-built pages |
| Mux: multi-packet page batching | 🛠️ | Real encoders pack small packets; this mux emits one packet per page |
| Mux: packets over 65024 bytes (continuation-page split) | 🛠️ | PacketTooLargeForSinglePage today |
| Multi-logical-stream interleaving / chaining | 🛠️ | One muxer = one serial |
Docs
docs/roadmap.md— stages, deferred items, design decisionsmediaway-container— Mediaway-typedoggsurface 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.