Add Home
parent
b0e779cfce
commit
47b411cf77
1 changed files with 55 additions and 0 deletions
55
Home.md
Normal file
55
Home.md
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
# LAC — Lo Audio Codec
|
||||||
|
|
||||||
|
LAC is a lossless audio codec: integer-only, bit-exact, streaming-oriented.
|
||||||
|
Designed for real-time voice (QUIC / MCU conferencing) and offline file
|
||||||
|
compression. Compression is FLAC-class on speech (0.96-0.99× FLAC size)
|
||||||
|
and within 5-7% of FLAC on music, while meeting realtime deadlines with
|
||||||
|
hundreds of times' headroom on every platform tested (x86-64, aarch64,
|
||||||
|
riscv64).
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# Cargo.toml
|
||||||
|
[dependencies]
|
||||||
|
lac = "0.1"
|
||||||
|
```
|
||||||
|
|
||||||
|
Rust 1.87+. `no_std` with `alloc`.
|
||||||
|
|
||||||
|
## Minimal example
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use lac::{encode_frame, decode_frame};
|
||||||
|
|
||||||
|
let samples: Vec<i32> = /* signed integer PCM, |s| ≤ 2²³ − 1 */ Vec::new();
|
||||||
|
let bytes = encode_frame(&samples);
|
||||||
|
let recovered = decode_frame(&bytes)?;
|
||||||
|
assert_eq!(recovered, samples);
|
||||||
|
# Ok::<(), lac::DecodeError>(())
|
||||||
|
```
|
||||||
|
|
||||||
|
Full API reference at [docs.rs/lac](https://docs.rs/lac). Buffer-reusing
|
||||||
|
(`encode_frame_into` / `decode_frame_into`), MCU fanout patterns, and
|
||||||
|
packet-loss concealment strategies are all in the repository's README.
|
||||||
|
|
||||||
|
## Wiki contents
|
||||||
|
|
||||||
|
- **[Specification](Specification)** — the normative wire format. This is
|
||||||
|
the authority on byte layout, field semantics, and encoder/decoder
|
||||||
|
constraints. Second-team implementations should work from here.
|
||||||
|
- **[Security Policy](Security-Policy)** — vulnerability reporting,
|
||||||
|
supported versions, disclosure timeline.
|
||||||
|
|
||||||
|
## Project links
|
||||||
|
|
||||||
|
- **Repository**: [git.lo.sh/lo/lac](https://git.lo.sh/lo/lac)
|
||||||
|
- **Crate**: [crates.io/crates/lac](https://crates.io/crates/lac)
|
||||||
|
- **API docs**: [docs.rs/lac](https://docs.rs/lac)
|
||||||
|
- **License**: AGPL-3.0-only
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Pre-1.0 (0.1.x). Wire format is stable — frames encoded by 0.1.0 will
|
||||||
|
decode correctly on any future version with sync word `0x1ACC`. Public
|
||||||
|
API may still change; all changes follow semver within the 0.x range.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue