Hi, The qemu volume control experience could be improved. Without mixemu, the volume control has no effect. A volume applet will just feel broken (except in some cases where software volume is applied on guest side, with HDA/Windows7 for example).
And a few other problems: - the guest should have a full-range hw volume control over actual audio device. See https://bugzilla.redhat.com/show_bug.cgi?id=482089 - one volume should rule them all (no need to control guest, stream and client volumes separately) - the client volume should be set to match the guest on connection, ex: volume and mute should be restored - backend should hopefully be better at applying volume effect (PulseAudio rely on HW as much as possible, and then optimized routines) - ideally, we would sync both ways guest <-> client, that would probably require guest agent helper to be notified on update The flat-volume logic of PulseAudio (and Windows) ensures a stream get a full-range volume control. Thus, the "guest volume" can rely on its "client stream volume" to have control over the full volume range. I propose an audio backend claiming VOICE_VOLUME_CAP should handle VOICE_VOLUME messages and apply the volume/mute received. In this case mixeng_clear / mixeng_volume aren't applied. I modified the PA backend as a proof of concept (I had to drop the pa_simple API, as I can't see how to modify a stream volume otherwise). Spice and spice-gtk client have already been supporting volume control for a while, but qemu part is the missing bit. Marc-André Lureau (11): audio: add VOICE_VOLUME ctl audio: don't apply volume effect if backend has VOICE_VOLUME_CAP audio: use a nominal volume of 1^32-1 hw/ac97: remove USE_MIXER code hw/ac97: the volume mask was not always 0x1f hw/ac97: new support for volume control audio/spice: add support for volume control RFC: use full PulseAudio API, largely adapted from pa_simple* RFC: configure: pa_simple is not needed anymore RFC: allow controlling volume with PulseAudio backend RFC: make mixemu mandatory audio/audio.c | 25 +++- audio/audio_int.h | 6 + audio/audio_template.h | 2 + audio/mixeng.c | 6 - audio/paaudio.c | 452 +++++++++++++++++++++++++++++++++++++++++++----- audio/spiceaudio.c | 43 +++++ configure | 14 +-- hw/ac97.c | 141 ++++++---------- hw/hda-audio.c | 4 - 9 files changed, 533 insertions(+), 160 deletions(-) -- 1.7.6.2