From cb150cfb8f449442625dd90eb28f44be82e09ef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 24 Jan 2025 20:21:20 +0400 Subject: [PATCH] feat(rdp): add volume support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- qemu-rdp/src/server/sound.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/qemu-rdp/src/server/sound.rs b/qemu-rdp/src/server/sound.rs index 4cdb982..9458c2d 100644 --- a/qemu-rdp/src/server/sound.rs +++ b/qemu-rdp/src/server/sound.rs @@ -101,7 +101,23 @@ impl AudioOutHandler for DBusHandler { } async fn set_volume(&mut self, id: u64, volume: Volume) { - debug!(?id, ?volume) + let inner = self.inner.lock().unwrap(); + + debug!(?id, ?volume); + + let (left, right) = if volume.mute { + (0, 0) + } else { + (volume.volume.get(0).copied().unwrap_or(0), volume.volume.get(1).copied().unwrap_or(0)) + }; + + let (left, right) = ((left as u16) * 257, (right as u16) * 257); + if let Some(sender) = inner.ev_sender.as_ref() { + let _ = sender.send(ServerEvent::Rdpsnd(RdpsndServerMessage::SetVolume { + left, + right, + })); + } } async fn write(&mut self, id: u64, mut data: Vec) {