feat: add Opus 32k/48k/64k studio quality tiers
Some checks failed
Mirror to GitHub / mirror (push) Failing after 36s
Build Release Binaries / build-amd64 (push) Has been cancelled

Adds three new codec IDs (Opus32k=6, Opus48k=7, Opus64k=8) and
corresponding STUDIO_32K, STUDIO_48K, STUDIO_64K quality profiles.
All use 20ms frames with minimal FEC (10%) for maximum quality on
good networks.

Updated across: wire protocol (codec_id.rs), encoder/decoder
(opus_enc/dec.rs), adaptive codec switch (call.rs), CLI
(--profile studio-64k), desktop engine + UI slider (8 quality
levels from Studio 64k green to Codec2 1.2k red).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-04-07 18:31:05 +04:00
parent ded49bdb7b
commit a8c2011445
8 changed files with 74 additions and 19 deletions

View File

@@ -28,6 +28,9 @@ fn resolve_quality(quality: &str) -> Option<QualityProfile> {
frame_duration_ms: 20,
frames_per_block: 5,
}),
"studio-32k" => Some(QualityProfile::STUDIO_32K),
"studio-48k" => Some(QualityProfile::STUDIO_48K),
"studio-64k" => Some(QualityProfile::STUDIO_64K),
_ => None, // "auto" or unknown
}
}
@@ -279,6 +282,9 @@ impl CallEngine {
let new_profile = match pkt.header.codec_id {
CodecId::Opus24k => QualityProfile::GOOD,
CodecId::Opus6k => QualityProfile::DEGRADED,
CodecId::Opus32k => QualityProfile::STUDIO_32K,
CodecId::Opus48k => QualityProfile::STUDIO_48K,
CodecId::Opus64k => QualityProfile::STUDIO_64K,
CodecId::Codec2_1200 => QualityProfile::CATASTROPHIC,
CodecId::Codec2_3200 => QualityProfile {
codec: CodecId::Codec2_3200,