Skip to content
jean-edouard edited this page Nov 24, 2014 · 5 revisions

Sound in OpenXT

In OpenXT, the VM sound is driven by QEMU.
An Intel HDA card is emulated for each guests, except for Windows XT guests that get an ac97. There's a patch in both cards emulation code to handle the platform policy used to disable sound recording.

Without stubdomains

The sound goes directly from QEMU to ALSA in dom0, using the code in alsaaudio.c.

The sound ends up being very choppy, because of the slowness of ALSA.
Previously, a patch was applied to QEMU to move sound to a separate thread to fix this issue. This patch is now commented out in the patchqueue, as it's suspected to cause issues (QEMU is not supposed to have threads). More recently, using HRTIMERS in dom0 for sound (CONFIG_SND_TIMER=y) have been found to be a good workaround for that issue.

With stubdomains

alsaaudio.c has a patch to make the sound follow a different path when using a stubdomain. Audio is then sent to a daemon in dom0 (audio_helper), using V4V. The audio helper then takes care of the communication with ALSA, which relieves QEMU and prevents any major "choppyness".

Remaining issues

  • As pointed out in OXT-13, the HDA code currently used in the OpenXT QEMU (that seems to be a backport) doesn't seem to support simultaneous input and output. (launching a sound recorder breaks sound playback). This could get fixed by simply upgrading QEMU.
  • Also from OXT-13, there are some issues with input/output handling on some desktops.