In-core ~30-line table-driven codec (no dep). The ITU-T G.711 µ-law companding formula is a piece of telephony history worth teaching (AGENTS.md learner-facing comment mandate). 3× linear upsample on decode; 3× decimation downsample on encode. The resampler artifacts are below the barge-in trigger threshold (LocalVadReflex only needs RMS energy); rubato lands in a post- spearhead refinement if a downstream consumer needs better (spec §6.6). Task T1 of slice-5 — T3 (TwilioMediaStreamsServer) consumes this codec. Signed-off-by: Aaron D. Lee <himself@adlee.work>
43 lines
2.0 KiB
TOML
43 lines
2.0 KiB
TOML
# crates/rutster-trunk/Cargo.toml
|
|
[package]
|
|
name = "rutster-trunk"
|
|
version = "0.0.0"
|
|
license.workspace = true
|
|
edition.workspace = true
|
|
repository.workspace = true
|
|
description = "Rented carrier transport — CPaaS media-leg ingress; no first-party SIP (spearhead step 5, ADR-0007)."
|
|
|
|
[dependencies]
|
|
# FOB-side wiring (slice-5 dev-c branch -- tasks T1/T3/T4/T5/T7/T8):
|
|
# * rutster-media: PcmFrame + SAMPLES_PER_FRAME + Reflex stack (REUSED slice-4 verbatim).
|
|
# * rutster-call-model: Channel + ChannelId for TrunkSession (T4).
|
|
# * rutster-tap: TapAudioPipe (REUSED verbatim -- the architectural load-bearing claim, spec §6.1).
|
|
rutster-media = { path = "../rutster-media" }
|
|
rutster-call-model = { path = "../rutster-call-model" }
|
|
rutster-tap = { path = "../rutster-tap" }
|
|
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "sync", "time"] }
|
|
axum = { workspace = true, features = ["ws"] }
|
|
serde = { workspace = true, features = ["derive"] }
|
|
serde_json = { workspace = true }
|
|
tracing = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
base64 = { workspace = true }
|
|
url = { workspace = true }
|
|
# NOTE: reqwest + async-trait land in dev-b's branch (T2 provider trait + T6 TwilioCallControlClient
|
|
# live REST impl). They live at arm's length from the FOB hot path per ADR-0009 -- never re-exported
|
|
# through the workspace, never imported by g711/twilio_media_streams/session/loop_driver. The
|
|
# stacked-branches rebase-merge (per AGENTS.md Git workflow carve-out) reconciles the [dependencies]
|
|
# table at merge time.
|
|
|
|
[features]
|
|
default = []
|
|
# Reserved for T6 (dev-b's live TwilioCallControlClient REST impl). The routine CI gate stays
|
|
# default-features-off -- MockCallControlClient is the per-PR integration test surface. The
|
|
# maintainer triggers `cargo test --features=twilio-live` manually pre-release.
|
|
twilio-live = []
|
|
|
|
[dev-dependencies]
|
|
# `tower::ServiceExt::oneshot` is the canonical axum router helper for unit tests
|
|
# (turns a Router into a one-shot Service: `app.oneshot(request).await`).
|
|
tower = { workspace = true }
|