//! Chanora PoC — audio capture / playback spike. //! //! Authority: //! * `docs/architecture/proof-of-concept-plan.md` §2 — Audio //! capture/playback spike. Exit criterion: "Capture/playback works //! on at least one desktop and one mobile target." //! * DEC-011 — platform-native first; Rust/WebRTC-style as fallback. //! * SysDes audio subsystem. //! //! Honest scope: //! * Linux desktop is verified here via `cpal` against the system //! audio stack (PipeWire / Pulse / ALSA, whichever is active). //! * **Mobile targets are NOT verified by this PoC.** That is a //! documented gap, not a passed criterion. //! //! What the PoC shows: //! * `AudioCapture` — opens the default input device and writes //! 16-bit PCM samples to a WAV file via `hound`. //! * `AudioPlayback` — opens the default output device and plays //! back a WAV file end-to-end. //! * `synth_sine_wav` — when no input device is available //! (genuinely headless box), the PoC can still exercise the //! playback path against a synthesised waveform. This is what //! keeps the spike useful in CI. //! //! Production code (`chanora_audio`) will own the real DSP chain //! (HPF, NS, AEC, AGC, Opus encode/decode, jitter buffer, mixer). //! None of that lives here. pub mod capture; pub mod playback; pub mod synth; pub use capture::{AudioCapture, AudioError}; pub use playback::AudioPlayback; pub use synth::synth_sine_wav;