[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


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

  - 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

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(-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]