From c5f1c5308bf2b3e85d64548d4e0a92967460f8af Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Fri, 27 Feb 2026 23:29:23 +0100 Subject: [PATCH] [fix](trx-server): duplicate mono SDR frames for stereo opus Signed-off-by: Stan Grams Co-authored-by: OpenAI Codex Signed-off-by: Stan Grams --- src/trx-server/src/main.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/trx-server/src/main.rs b/src/trx-server/src/main.rs index bf218d4..221ef9b 100644 --- a/src/trx-server/src/main.rs +++ b/src/trx-server/src/main.rs @@ -517,8 +517,20 @@ fn spawn_rig_audio_stack( loop { match sdr_rx.recv().await { Ok(frame) => { - let _ = pcm_tx_clone.send(frame.clone()); - match encoder.encode_float(&frame, &mut opus_buf) { + let pcm_frame = match sdr_channels { + 1 => frame, + 2 => { + let mut stereo = Vec::with_capacity(frame.len() * 2); + for sample in frame { + stereo.push(sample); + stereo.push(sample); + } + stereo + } + _ => unreachable!("validated above"), + }; + let _ = pcm_tx_clone.send(pcm_frame.clone()); + match encoder.encode_float(&pcm_frame, &mut opus_buf) { Ok(len) => { let pkt = Bytes::copy_from_slice(&opus_buf[..len]); let _ = rx_audio_tx_sdr.send(pkt);