Internships/ProjectIdeas/VirtioSound

From QEMU
Revision as of 15:34, 31 January 2023 by Stefanha (talk | contribs)

VirtioSound

Summary: Implement device emulation for the new virtio-sound device.

The VIRTIO specification defines a sound device and Linux has a guest driver for it, but QEMU does not emulate the virtio-sound device yet.

The goal is to implement virtio-sound in QEMU with mono and stereo playback and capture. There is unfinished code for virtio-sound playback support that you can use as a starting point. It will be necessary to clean up the code and add capture support.

As stretch goals you can implement additional functionality covered by the specification, including support for multi-channel devices (e.g. surround sound playback), channel maps, etc.

To familiarize yourself with the project idea (see links below):

  1. Review the VIRTIO sound device specification.
  2. Review the audio/audio.h QEMU audio subsystem API.
  3. Review the unfinished patches.

This project will expose you to device emulation, VIRTIO, and you'll learn how audio devices work at the hardware interface level.

Links:

Details:

  • Skill level: intermediate/advanced
  • Language: C
  • Mentor: Stefan Hajnoczi <stefanha@redhat.com>
  • Suggested by: Gerd Hoffmann <kraxel@redhat.com>