[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 00/27] Virtio sound card implementation
From: |
Shreyansh Chouhan |
Subject: |
[RFC PATCH 00/27] Virtio sound card implementation |
Date: |
Thu, 29 Apr 2021 17:34:18 +0530 |
This patch series aims to implement the virtio sound card
as defined in the virtio specs (v8). The specs can be found
at the following github repo:
https://github.com/oasis-tcs/virtio-spec
This patch series is not complete yet, but here is what's
already been done:
- The device is initialized properly and is recognized
by the guest as a sound card device.
- Output stream works but the output is very noisy. (Which
is what I wanted coments on.)
What remains to be done:
- Input streams yet to be done.
- The jacks are initialized with a default config, but
they are not mapped to any streams for now.
- Channel maps are yet to be implemented.
I'd like to request some comments on the following points:
- The output from the sound card is accompanied by periodic
white noise. I do not know why this is happening. I tried
debugging it by writing the buffers to a new wav file and
sure enough the contents of the file were different at
some places, but I couldn't find what must be causing it.
(Relevant patches: #19, #20, #21 and #25.) What steps should
I take for debugging this?
- If I try and output a wav file of a different size, that
sets the period_bytes to 4004, I get an assert failure in
the object_unref function defined in qom/object.c. (Function
defined on line #681, assert on line #690.)
assert(obj->parent == NULL);
I tried taking a look at the stack trace for when this failure
happens. In the stacktrace I found out that this happened
when QEMU was trying to unmap the out_sg from the VirtQueue
element. This failure doesn't happen if I am using a different
wav file, that sets the period_bytes to something else.
(Relevant patches: #19, #20, #21 and #25.)
What could be causing this problem?
- What is the suggested way of waiting? When the driver issues
the VIRTIO_SND_PCM_STOP ctrl command I want to wait for the
buffers existing in tx vq to be consumed before closing the
stream.
Shreyansh Chouhan (27):
virtio-snd: Add virtio sound header file
virtio-snd: Add jack control structures
virtio-snd: Add PCM control structures
virtio-snd: Add chmap control structures
virtio-snd: Add device implementation structures
virtio-snd: Add PCI wrapper code for VirtIOSound
virtio-snd: Add properties for class init
virtio-snd: Add code for get config function
virtio-snd: Add code for set config function
virtio-snd: Add code for the realize function
virtio-snd: Add macros for logging
virtio-snd: Add control virtqueue handler
virtio-snd: Add VIRTIO_SND_R_JACK_INFO handler
virtio-snd: Add stub for VIRTIO_SND_R_JACK_REMAP handler
virtio-snd: Add VIRTIO_SND_R_PCM_INFO handler
virtio-snd: Add VIRITO_SND_R_PCM_SET_PARAMS handle
virtio-snd: Add VIRTIO_SND_R_PCM_PREPARE handler
virtio-snd: Add default configs to realize fn
virtio-snd: Add callback for SWVoiceOut
virtio-snd: Add VIRITO_SND_R_PCM_START handler
virtio-snd: Add VIRTIO_SND_R_PCM_STOP handler
virtio-snd: Add VIRTIO_SND_R_PCM_RELEASE handler
virtio-snd: Replaced goto with if else
virtio-snd: Add code to device unrealize function
virtio-snd: Add tx vq and handler
virtio-snd: Add event vq and a handler stub
virtio-snd: Add rx vq and stub handler
hw/audio/Kconfig | 5 +
hw/audio/meson.build | 1 +
hw/audio/virtio-snd.c | 1168 ++++++++++++++++++++++++++++++++
hw/virtio/meson.build | 1 +
hw/virtio/virtio-snd-pci.c | 72 ++
include/hw/virtio/virtio-snd.h | 393 +++++++++++
6 files changed, 1640 insertions(+)
create mode 100644 hw/audio/virtio-snd.c
create mode 100644 hw/virtio/virtio-snd-pci.c
create mode 100644 include/hw/virtio/virtio-snd.h
--
2.25.1
- [RFC PATCH 00/27] Virtio sound card implementation,
Shreyansh Chouhan <=
- [RFC PATCH 01/27] virtio-snd: Add virtio sound header file, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 02/27] virtio-snd: Add jack control structures, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 04/27] virtio-snd: Add chmap control structures, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 03/27] virtio-snd: Add PCM control structures, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 05/27] virtio-snd: Add device implementation structures, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 06/27] virtio-snd: Add PCI wrapper code for VirtIOSound, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 07/27] virtio-snd: Add properties for class init, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 08/27] virtio-snd: Add code for get config function, Shreyansh Chouhan, 2021/04/29
- [RFC PATCH 09/27] virtio-snd: Add code for set config function, Shreyansh Chouhan, 2021/04/29