PcmFrame is the canonical tap format (16-bit mono @ 24 kHz, 480 samples per 20 ms frame — ARCHITECTURE.md). AudioSource/AudioSink are the seam step 2 splices the tap client into (spec §3.3); EchoAudioPipe is the slice-1 wiring of that seam. OpusDecoder/OpusEncoder wrap the opus crate's libopus FFI with hot-path match-and-continue (no ? on the 20 ms loop, spec §3.8); decode/encode return Option<PcmFrame>/Option<Vec<u8>> so a dropped frame is logged + counted, never propagated to crash the peer.
17 lines
421 B
TOML
17 lines
421 B
TOML
# crates/rutster-media/Cargo.toml
|
|
[package]
|
|
name = "rutster-media"
|
|
version = "0.0.0"
|
|
license.workspace = true
|
|
edition.workspace = true
|
|
repository.workspace = true
|
|
description = "Media core: str0m WebRTC + Opus⇄PCM boundary (slice 1)."
|
|
|
|
[dependencies]
|
|
rutster-call-model = { path = "../rutster-call-model" }
|
|
opus = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tracing = { workspace = true }
|
|
|
|
[dev-dependencies]
|