[fix](trx-server): duplicate mono SDR frames for stereo opus

Signed-off-by: Stan Grams <sjg@haxx.space>
Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-02-27 23:29:23 +01:00
parent dee165008d
commit c5f1c5308b
+14 -2
View File
@@ -517,8 +517,20 @@ fn spawn_rig_audio_stack(
loop { loop {
match sdr_rx.recv().await { match sdr_rx.recv().await {
Ok(frame) => { Ok(frame) => {
let _ = pcm_tx_clone.send(frame.clone()); let pcm_frame = match sdr_channels {
match encoder.encode_float(&frame, &mut opus_buf) { 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) => { Ok(len) => {
let pkt = Bytes::copy_from_slice(&opus_buf[..len]); let pkt = Bytes::copy_from_slice(&opus_buf[..len]);
let _ = rx_audio_tx_sdr.send(pkt); let _ = rx_audio_tx_sdr.send(pkt);