[package]
name = "wzp-codec"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
description = "WarzonePhone audio codec layer — Opus + Codec2 encoding/decoding"

[dependencies]
wzp-proto = { workspace = true }
tracing = { workspace = true }

# Opus bindings — libopus 1.5.2.
# opusic-c for the encoder (set_dred_duration lives here in Phase 1).
# opusic-sys for the decoder — we wrap the raw *mut OpusDecoder ourselves
# because opusic-c::Decoder.inner is pub(crate), blocking the unified
# decoder + DRED path we need in Phase 3.
opusic-c = { workspace = true }
opusic-sys = { workspace = true }

# Zero-cost slice reinterpretation for the i16 ↔ u16 boundary between
# our PCM buffers and opusic-c's encode API.
bytemuck = { workspace = true }

# Pure-Rust Codec2 implementation
codec2 = { workspace = true }

# RNG for comfort noise generation
rand = { workspace = true }

# ML-based noise suppression (pure-Rust port of RNNoise)
nnnoiseless = "0.5"

[dev-dependencies]
