On Tue, Jul 28, 2020 at 06:58:41PM +0400, Roman Bogorodskiy wrote:
Introduce a new device element "<audio>" which
allows
to map guest sound device specified using the "<sound>"
element to specific audio backend.
Example:
<sound model='ich6'>
<audio id='audio0'/>
</sound>
<audio id='audio' type='oss'>
<input dev='/dev/dsp0'/>
<output dev='/dev/dsp0'/>
</audio>
This block maps to OSS audio backend on the host using
/dev/dsp0 device for both input (recording)
and output (playback).
OSS is the only backend supported so far.
Signed-off-by: Roman Bogorodskiy <bogorodskiy(a)gmail.com>
---
docs/schemas/domaincommon.rng | 36 ++++++++
Also docs/formatdomain.html.in needs an update
src/conf/domain_capabilities.c | 4 +
src/conf/domain_conf.c | 156 ++++++++++++++++++++++++++++++++-
src/conf/domain_conf.h | 24 +++++
src/conf/virconftypes.h | 3 +
src/libvirt_private.syms | 2 +
src/qemu/qemu_command.c | 1 +
src/qemu/qemu_domain.c | 1 +
src/qemu/qemu_domain_address.c | 2 +
src/qemu/qemu_driver.c | 5 ++
src/qemu/qemu_hotplug.c | 3 +
src/qemu/qemu_validate.c | 1 +
12 files changed, 236 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 241149af24..fefd428ccd 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -85,6 +85,7 @@ typedef enum {
VIR_DOMAIN_DEVICE_MEMORY,
VIR_DOMAIN_DEVICE_IOMMU,
VIR_DOMAIN_DEVICE_VSOCK,
+ VIR_DOMAIN_DEVICE_AUDIO,
VIR_DOMAIN_DEVICE_LAST
} virDomainDeviceType;
@@ -116,6 +117,7 @@ struct _virDomainDeviceDef {
virDomainMemoryDefPtr memory;
virDomainIOMMUDefPtr iommu;
virDomainVsockDefPtr vsock;
+ virDomainAudioDefPtr audio;
} data;
};
@@ -1415,6 +1417,23 @@ struct _virDomainSoundDef {
size_t ncodecs;
virDomainSoundCodecDefPtr *codecs;
+
+ char *audioId;
+};
+
+typedef enum {
+ VIR_DOMAIN_AUDIO_TYPE_OSS,
+
+ VIR_DOMAIN_AUDIO_TYPE_LAST
+} virDomainAudioType;
+
+struct _virDomainAudioDef {
+ int type;
+
+ char *id;
+
+ /* OSS specific configuration */
+ char *inputDev, *outputDev;
Since we're expecting multiple backends, lets go straight for a union
here.
union {
struct {
char *inputDev, *outputDev;
} oss;
} backend;
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|