From 433a5420cbd17b0ae79b9ffb7408ab6b385041e8 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Sat, 25 Dec 2021 18:55:09 +1100 Subject: [PATCH] [client] audio: update PureSpice and add support for volume control/mute --- client/include/interface/audiodev.h | 6 ++++++ client/src/main.c | 18 ++++++++++++++++-- repos/PureSpice | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/client/include/interface/audiodev.h b/client/include/interface/audiodev.h index 9b0db6d3..7319a9a6 100644 --- a/client/include/interface/audiodev.h +++ b/client/include/interface/audiodev.h @@ -50,6 +50,12 @@ struct LG_AudioDevOps /* called when SPICE reports the audio stream has stopped */ void (*stop)(void); + + /* [optional] called to set the volume of the channels */ + void (*volume)(int channels, const uint16_t volume[]); + + /* [optional] called to set muting of the output */ + void (*mute)(bool mute); }; #define ASSERT_LG_AUDIODEV_VALID(x) \ diff --git a/client/src/main.c b/client/src/main.c index ac182a19..3a2ed2b3 100644 --- a/client/src/main.c +++ b/client/src/main.c @@ -899,14 +899,26 @@ void audioStart(int channels, int sampleRate, PSAudioFormat format, } } -void audioStop(void) +static void audioStop(void) { if (g_state.audioDev) g_state.audioDev->stop(); g_state.audioStarted = false; } -void audioData(uint8_t * data, size_t size) +static void audioVolume(int channels, const uint16_t volume[]) +{ + if (g_state.audioDev && g_state.audioDev->volume) + g_state.audioDev->volume(channels, volume); +} + +static void audioMute(bool mute) +{ + if (g_state.audioDev && g_state.audioDev->mute) + g_state.audioDev->mute(mute); +} + +static void audioData(uint8_t * data, size_t size) { if (g_state.audioDev) g_state.audioDev->play(data, size); @@ -1001,6 +1013,8 @@ static int lg_run(void) if (g_params.useSpiceAudio) spice_set_audio_cb( audioStart, + audioVolume, + audioMute, audioStop, audioData); diff --git a/repos/PureSpice b/repos/PureSpice index 3ea15697..1178cbb4 160000 --- a/repos/PureSpice +++ b/repos/PureSpice @@ -1 +1 @@ -Subproject commit 3ea156974b65d87ea9c2e21d031af2b60d79074a +Subproject commit 1178cbb400719c026749a64e2f7f7992c49140d2