qemu/hw/audio
Manos Pitsidianakis 18a752810f virtio-sound: implement audio output (TX)
Handle output IO messages in the transmit (TX) virtqueue.

It allocates a VirtIOSoundPCMBuffer for each IO message and copies the
data buffer to it. When the IO buffer is written to the host's sound
card, the guest will be notified that it has been consumed.

The lifetime of an IO message is:

1. Guest sends IO message to TX virtqueue.
2. QEMU adds it to the appropriate stream's IO buffer queue.
3. Sometime later, the host audio backend calls the output callback,
   virtio_snd_pcm_out_cb(), which is defined with an AUD_open_out()
   call. The callback gets an available number of bytes the backend can
   receive. Then it writes data from the IO buffer queue to the backend.
   If at any time a buffer is exhausted, it is returned to the guest as
   completed.
4. If the guest releases the stream, its buffer queue is flushed by
   attempting to write any leftover data to the audio backend and
   releasing all IO messages back to the guest. This is how according to
   the spec the guest knows the release was successful.

Based-on: 5a2f350eec
Signed-off-by: Igor Skalkin <Igor.Skalkin@opensynergy.com>
Signed-off-by: Anton Yakovlev <Anton.Yakovlev@opensynergy.com>
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <b7c6fc458c763d09a4abbcb620ae9b220afa5b8f.1698062525.git.manos.pitsidianakis@linaro.org>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2023-11-07 03:39:10 -05:00
..
ac97.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
ac97.h hw/audio/ac97: Split off some definitions to a header 2023-02-27 22:29:02 +01:00
adlib.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
asc.c asc: generate silence if FIFO empty but engine still running 2023-10-06 10:33:43 +02:00
cs4231.c hw: Replace anti-social QOM type names 2021-03-19 15:18:43 +01:00
cs4231a.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
es1370.c hw/audio/es1370: trace lost interrupts 2023-10-10 12:31:05 +00:00
fmopl.c audio: spelling fixes 2023-09-08 13:08:52 +03:00
fmopl.h audio: spelling fixes 2023-09-08 13:08:52 +03:00
gus.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
gusemu.h audio: GUSsample is int16_t 2017-05-04 09:16:05 +02:00
gusemu_hal.c audio: spelling fixes 2023-09-08 13:08:52 +03:00
gusemu_mixer.c hw/audio/gus: Fix registers 32-bit access 2020-06-19 11:20:09 +02:00
gustate.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
hda-codec-common.h hda-codec: make mixemu selectable at runtime 2013-09-24 10:29:34 +02:00
hda-codec.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
intel-hda-defs.h audio: spelling fixes 2023-09-08 13:08:52 +03:00
intel-hda.c hw/audio: Simplify hda audio init 2023-09-22 16:30:07 +02:00
intel-hda.h hw/audio: Simplify hda audio init 2023-09-22 16:30:07 +02:00
Kconfig Add virtio-sound device stub 2023-11-07 03:39:10 -05:00
lm4549.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
lm4549.h hw/audio/lm4549: Add errp error reporting to init function 2023-09-22 16:30:07 +02:00
marvell_88w8618.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
meson.build Add virtio-sound-pci device 2023-11-07 03:39:10 -05:00
pcspk.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
pl041.c hw/audio/lm4549: Add errp error reporting to init function 2023-09-22 16:30:07 +02:00
pl041.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
pl041.hx hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
sb16.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
soundhw.c hw/audio/soundhw: Clean up global variable shadowing 2023-10-06 13:16:57 +02:00
trace-events virtio-sound: implement audio output (TX) 2023-11-07 03:39:10 -05:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
via-ac97.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00
virtio-snd-pci.c Add virtio-sound-pci device 2023-11-07 03:39:10 -05:00
virtio-snd.c virtio-sound: implement audio output (TX) 2023-11-07 03:39:10 -05:00
wm8750.c audio: propagate Error * out of audio_init 2023-10-03 10:29:40 +02:00