From 4b5dd367782b3efe9b586e250a8a37e677fc44a6 Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Sat, 28 Feb 2026 11:33:52 +0100 Subject: [PATCH] [feat](trx-server,trx-client): raise default audio opus bitrate Co-authored-by: Codex Signed-off-by: Stan Grams --- src/trx-client/src/audio_bridge.rs | 7 ++++--- src/trx-client/src/config.rs | 6 ++++++ src/trx-server/src/config.rs | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/trx-client/src/audio_bridge.rs b/src/trx-client/src/audio_bridge.rs index f0f67cb..99602d5 100644 --- a/src/trx-client/src/audio_bridge.rs +++ b/src/trx-client/src/audio_bridge.rs @@ -232,7 +232,7 @@ fn run_capture( }; let mut encoder = opus::Encoder::new(info.sample_rate, opus_channels, opus::Application::Audio)?; - encoder.set_bitrate(opus::Bitrate::Bits(24_000))?; + encoder.set_bitrate(opus::Bitrate::Bits(cfg.bitrate_bps as i32))?; let mut opus_buf = vec![0u8; 4096]; let (sample_tx, sample_rx) = std_mpsc::sync_channel::>(64); @@ -251,8 +251,9 @@ fn run_capture( stream.play()?; info!( - "Audio bridge capture active on '{}'", - device.name().unwrap_or_else(|_| "unknown".to_string()) + "Audio bridge capture active on '{}' ({} bps)", + device.name().unwrap_or_else(|_| "unknown".to_string()), + cfg.bitrate_bps ); let tx_gain = cfg.tx_gain.max(0.0); diff --git a/src/trx-client/src/config.rs b/src/trx-client/src/config.rs index e1b9cad..ea6bd68 100644 --- a/src/trx-client/src/config.rs +++ b/src/trx-client/src/config.rs @@ -132,6 +132,8 @@ pub struct AudioBridgeConfig { pub rx_output_device: Option, /// Local input device for TX uplink capture. pub tx_input_device: Option, + /// Opus bitrate in bits per second for TX uplink capture. + pub bitrate_bps: u32, /// RX playback gain multiplier. pub rx_gain: f32, /// TX capture gain multiplier. @@ -144,6 +146,7 @@ impl Default for AudioBridgeConfig { enabled: false, rx_output_device: None, tx_input_device: None, + bitrate_bps: 192000, rx_gain: 1.0, tx_gain: 1.0, } @@ -367,6 +370,9 @@ impl ClientConfig { { return Err("[frontends.audio.bridge].tx_gain must be finite and >= 0".to_string()); } + if self.frontends.audio.bridge.bitrate_bps == 0 { + return Err("[frontends.audio.bridge].bitrate_bps must be > 0".to_string()); + } validate_tokens( "[frontends.http_json.auth].tokens", &self.frontends.http_json.auth.tokens, diff --git a/src/trx-server/src/config.rs b/src/trx-server/src/config.rs index e50c48c..b1c9706 100644 --- a/src/trx-server/src/config.rs +++ b/src/trx-server/src/config.rs @@ -267,7 +267,7 @@ impl Default for AudioConfig { sample_rate: 48000, channels: 1, frame_duration_ms: 20, - bitrate_bps: 24000, + bitrate_bps: 192000, } } }