WAI is a container + capability-dispatch standard for media. It does not re-implement codecs; it dispatches to SOTA standard libraries (PNG, FLAC, zstd as the mandatory floor; AVIF, JPEG-XL, Opus, AV1, XZ as the recommended modern set) and adds an envelope that lets a neural shared-prior path coexist with the model-free floor. The capability a file requires is named, not supplied. Two paths open every conforming file: the neural condition (sink regenerates from a shared ambient prior) and the zeroth condition (registered SOTA codec menu). Apache-2.0. Adds: - wai/SPEC.md — WAI v1.0 spec (envelope, manifest, capability dispatch, registered capabilities including v1.1 multi-rendition extension) - wai/wai-rs/ — Rust reference implementation: lib + cdylib + staticlib, C FFI, 11 capability + envelope round-trip tests passing - wai/wai-web/ — wasm-bindgen wrapper for browser sinks - wai/wai-neural/ — Python tooling for neural-condition models - wai/tools/ — codec export + encode helpers (Python) - wai/corpus/CORPUS.md — third-party test corpus reacquisition guide Updates README.md to list four standards instead of three. Known consumer: CommunicationOS uses WAI for media transport over MoQT/MLS sessions. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
13 lines
559 B
Rust
13 lines
559 B
Rust
fn main() {
|
|
use std::fs;
|
|
let sr = 48_000u32;
|
|
let secs = 1.0_f32;
|
|
let sig: Vec<f32> = (0..(sr as f32 * secs) as usize)
|
|
.map(|i| 0.4 * (2.0 * std::f32::consts::PI * 440.0 * i as f32 / sr as f32).sin())
|
|
.collect();
|
|
let bytes = wai::codecs::audio::opus_encode(&sig, sr, 64_000).unwrap();
|
|
fs::write("/tmp/wai.opus", &bytes).unwrap();
|
|
println!("wrote {} bytes", bytes.len());
|
|
let (wai_dec, wsr) = wai::codecs::audio::opus_decode(&bytes).unwrap();
|
|
println!("wai decode: {} samples @ {} Hz", wai_dec.len(), wsr);
|
|
}
|