[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/11] RFC: apply volume on client stream
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 00/11] RFC: apply volume on client stream |
Date: |
Wed, 21 Sep 2011 18:10:57 +0200 |
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
- [Qemu-devel] [PATCH 00/11] RFC: apply volume on client stream,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 01/11] audio: add VOICE_VOLUME ctl, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 03/11] audio: use a nominal volume of 1^32-1, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 05/11] hw/ac97: the volume mask was not always 0x1f, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 04/11] hw/ac97: remove USE_MIXER code, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 08/11] RFC: use full PulseAudio API, largely adapted from pa_simple*, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 07/11] audio/spice: add support for volume control, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 09/11] RFC: configure: pa_simple is not needed anymore, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 06/11] hw/ac97: new support for volume control, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 10/11] RFC: allow controlling volume with PulseAudio backend, Marc-André Lureau, 2011/09/21
- [Qemu-devel] [PATCH 11/11] RFC: make mixemu mandatory, Marc-André Lureau, 2011/09/21