adts-core
Status: early development (
0.x). Not recommended for production; public APIs may change without notice. Part of the Mediaway media stack.
Sans-IO ADTS framing for raw AAC elementary streams — the common file-less AAC transport
(a 7-byte header per frame, no container-level header). Mux appends one frame per call;
demux is a true incremental push_bytes/poll_frame reader that handles partial input.
No I/O in the core.
Quick start
use ;
let config = AdtsConfig ;
let muxer = new?;
let mut adts = Vecnew;
muxer.write_frame?; // one 7-byte-header ADTS frame
let mut demuxer = new;
demuxer.push_bytes;
while let Some = demuxer.poll_frame?
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 (no-CRC 7-byte header) | ✅ | One raw-data-block per frame (the common AAC-LC case) |
| Demux (incremental, partial-input safe) | ✅ | Reads both no-CRC (7-byte) and CRC (9-byte) headers |
| Mux-side CRC header | 🛠️ | Demux already reads it; mux writes no-CRC only |
| Multi-raw-data-block frames exposed | 🛠️ | Payload bytes survive; internal AAC-frame boundary not exposed |
Docs
docs/roadmap.md— stages, deferred items, design decisionsmediaway-container— Mediaway-typedadtssurface 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.