From nobody Mon Feb 9 02:13:24 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1614795621; cv=none; d=zohomail.com; s=zohoarc; b=G/QNpxDgTqXsdVGyeI1ngW+IJwHL5TeYUU3rLggSZl7RDAHzsElfDA349fuydO3hHEMCwypw3F9lQ38Vfevy7/xy9fDbCAcFed1TVzQQtXwAWhXDUr7eWLbvM9IzKPXkXalNAxX+JpBMTPlAkJrPRKWMDSo6Bi1A1PtbDtmXwZE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614795621; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=K8YMuoKxqjlRNMROYR3wvipvDKsJLv+d0w0b14rYX/w=; b=GiETInYdgvPSMPLHdpkpm5mLJFcOEl9ANDgjLkAD7A8ReY4slXR06jL79y2sTntB/8ctD5NfkyID8WGMURX2iNTP+gVeqjdP5zFhmG9W/tdaYxR3jMCvUIpQpXfET68TIL5RhNTzeCljt4qgKw5M/vJotJfezJGpvxOiifX2fvU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 16147956215061003.7302228284952; Wed, 3 Mar 2021 10:20:21 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-42-lH_Z1FWcPBW8BDe1p1BMGg-1; Wed, 03 Mar 2021 13:20:15 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7609B1009618; Wed, 3 Mar 2021 18:20:06 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 462D470477; Wed, 3 Mar 2021 18:20:06 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C733418006D6; Wed, 3 Mar 2021 18:20:05 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 123IK4Ui000480 for ; Wed, 3 Mar 2021 13:20:04 -0500 Received: by smtp.corp.redhat.com (Postfix) id 0AB8260C67; Wed, 3 Mar 2021 18:20:04 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-115-145.ams2.redhat.com [10.36.115.145]) by smtp.corp.redhat.com (Postfix) with ESMTP id C622660C13; Wed, 3 Mar 2021 18:19:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1614795620; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=K8YMuoKxqjlRNMROYR3wvipvDKsJLv+d0w0b14rYX/w=; b=fIGmpNRzZZ9M231eNFi5N3cb9K2pg3lPuTovdQgw/a3phY+L5gP5AAzhr0CMlEbqtYEp1h h8zbpiojxEurV41/AYPMiVAn1aSRocsxeXnxs/Aqg8v5NP2+jWFkSDuv+8FFvZnw+LI79F 9KQzKqC+h5aeoQ05MUYsvpBCOElXGJQ= X-MC-Unique: lH_Z1FWcPBW8BDe1p1BMGg-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Subject: [libvirt PATCH 18/18] qemu: wire up support for backend specific audio settings Date: Wed, 3 Mar 2021 18:18:34 +0000 Message-Id: <20210303181834.1578756-19-berrange@redhat.com> In-Reply-To: <20210303181834.1578756-1-berrange@redhat.com> References: <20210303181834.1578756-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Signed-off-by: Daniel P. Berrang=C3=A9 --- src/qemu/qemu_command.c | 164 +++++++++++++++++- src/qemu/qemu_validate.c | 34 ++++ tests/qemuxml2argvdata/audio-alsa-best.args | 2 + .../audio-alsa-best.x86_64-latest.args | 2 +- tests/qemuxml2argvdata/audio-alsa-best.xml | 4 +- .../audio-alsa-full.x86_64-latest.args | 3 +- tests/qemuxml2argvdata/audio-alsa-full.xml | 4 +- .../audio-coreaudio-best.args | 2 + .../audio-coreaudio-best.x86_64-latest.args | 4 +- .../qemuxml2argvdata/audio-coreaudio-best.xml | 2 +- .../audio-coreaudio-full.x86_64-latest.args | 3 +- .../qemuxml2argvdata/audio-coreaudio-full.xml | 4 +- tests/qemuxml2argvdata/audio-file-best.args | 1 + .../audio-file-best.x86_64-latest.args | 2 +- tests/qemuxml2argvdata/audio-file-best.xml | 2 +- .../audio-file-full.x86_64-latest.args | 3 +- tests/qemuxml2argvdata/audio-file-full.xml | 2 +- .../audio-jack-full.x86_64-latest.args | 4 +- tests/qemuxml2argvdata/audio-jack-full.xml | 4 +- tests/qemuxml2argvdata/audio-oss-best.args | 5 + .../audio-oss-best.x86_64-latest.args | 3 +- tests/qemuxml2argvdata/audio-oss-best.xml | 4 +- .../audio-oss-full.x86_64-latest.args | 4 +- tests/qemuxml2argvdata/audio-oss-full.xml | 6 +- .../audio-pulseaudio-best.args | 4 + .../audio-pulseaudio-best.x86_64-latest.args | 7 +- .../audio-pulseaudio-best.xml | 6 +- .../audio-pulseaudio-full.err | 2 +- .../audio-pulseaudio-full.x86_64-latest.args | 4 +- .../audio-pulseaudio-full.xml | 6 +- tests/qemuxml2argvdata/audio-sdl-best.args | 1 + .../audio-sdl-best.x86_64-latest.args | 4 +- tests/qemuxml2argvdata/audio-sdl-best.xml | 2 +- .../audio-sdl-full.x86_64-latest.args | 3 +- tests/qemuxml2argvdata/audio-sdl-full.xml | 4 +- 35 files changed, 266 insertions(+), 45 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6e2294ba9a..a5a5c729b3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7615,6 +7615,40 @@ qemuBuildAudioCommonArg(virBufferPtr buf, } } =20 +static void +qemuBuildAudioALSAArg(virBufferPtr buf, + const char *prefix, + virDomainAudioIOALSA *def) +{ + if (def->dev) + virBufferAsprintf(buf, ",%s.dev=3D%s", prefix, def->dev); +} + +static void +qemuBuildAudioCoreAudioArg(virBufferPtr buf, + const char *prefix, + virDomainAudioIOCoreAudio *def) +{ + if (def->bufferCount) + virBufferAsprintf(buf, ",%s.buffer-count=3D%u", prefix, def->buffe= rCount); +} + +static void +qemuBuildAudioJackArg(virBufferPtr buf, + const char *prefix, + virDomainAudioIOJack *def) +{ + if (def->serverName) + virBufferAsprintf(buf, ",%s.server-name=3D%s", prefix, def->server= Name); + if (def->clientName) + virBufferAsprintf(buf, ",%s.client-name=3D%s", prefix, def->client= Name); + if (def->connectPorts) + virBufferAsprintf(buf, ",%s.connect-ports=3D%s", prefix, def->conn= ectPorts); + if (def->exactName) + virBufferAsprintf(buf, ",%s.exact-name=3D%s", prefix, + virTristateSwitchTypeToString(def->exactName)); +} + static void qemuBuildAudioOSSArg(virBufferPtr buf, const char *prefix, @@ -7622,6 +7656,33 @@ qemuBuildAudioOSSArg(virBufferPtr buf, { if (def->dev) virBufferAsprintf(buf, ",%s.dev=3D%s", prefix, def->dev); + if (def->bufferCount) + virBufferAsprintf(buf, ",%s.buffer-count=3D%u", prefix, def->buffe= rCount); + if (def->tryPoll) + virBufferAsprintf(buf, ",%s.try-poll=3D%s", prefix, + virTristateSwitchTypeToString(def->tryPoll)); +} + +static void +qemuBuildAudioPulseAudioArg(virBufferPtr buf, + const char *prefix, + virDomainAudioIOPulseAudio *def) +{ + if (def->name) + virBufferAsprintf(buf, ",%s.name=3D%s", prefix, def->name); + if (def->streamName) + virBufferAsprintf(buf, ",%s.stream-name=3D%s", prefix, def->stream= Name); + if (def->latency) + virBufferAsprintf(buf, ",%s.latency=3D%u", prefix, def->latency); +} + +static void +qemuBuildAudioSDLArg(virBufferPtr buf, + const char *prefix, + virDomainAudioIOSDL *def) +{ + if (def->bufferCount) + virBufferAsprintf(buf, ",%s.buffer-count=3D%u", prefix, def->buffe= rCount); } =20 static int @@ -7644,23 +7705,46 @@ qemuBuildAudioCommandLineArg(virCommandPtr cmd, break; =20 case VIR_DOMAIN_AUDIO_TYPE_ALSA: + qemuBuildAudioALSAArg(&buf, "in", &def->backend.alsa.input); + qemuBuildAudioALSAArg(&buf, "out", &def->backend.alsa.output); break; =20 case VIR_DOMAIN_AUDIO_TYPE_COREAUDIO: + qemuBuildAudioCoreAudioArg(&buf, "in", &def->backend.coreaudio.inp= ut); + qemuBuildAudioCoreAudioArg(&buf, "out", &def->backend.coreaudio.ou= tput); break; =20 case VIR_DOMAIN_AUDIO_TYPE_JACK: + qemuBuildAudioJackArg(&buf, "in", &def->backend.jack.input); + qemuBuildAudioJackArg(&buf, "out", &def->backend.jack.output); break; =20 case VIR_DOMAIN_AUDIO_TYPE_OSS: qemuBuildAudioOSSArg(&buf, "in", &def->backend.oss.input); qemuBuildAudioOSSArg(&buf, "out", &def->backend.oss.output); + + if (def->backend.oss.tryMMap) + virBufferAsprintf(&buf, ",try-mmap=3D%s", + virTristateSwitchTypeToString(def->backend.o= ss.tryMMap)); + if (def->backend.oss.exclusive) + virBufferAsprintf(&buf, ",exclusive=3D%s", + virTristateSwitchTypeToString(def->backend.o= ss.exclusive)); + if (def->backend.oss.dspPolicySet) + virBufferAsprintf(&buf, ",dsp-policy=3D%d", def->backend.oss.d= spPolicy); break; =20 case VIR_DOMAIN_AUDIO_TYPE_PULSEAUDIO: + qemuBuildAudioPulseAudioArg(&buf, "in", &def->backend.pulseaudio.i= nput); + qemuBuildAudioPulseAudioArg(&buf, "out", &def->backend.pulseaudio.= output); + + if (def->backend.pulseaudio.serverName) + virBufferAsprintf(&buf, ",server=3D%s", def->backend.pulseaudi= o.serverName); break; =20 case VIR_DOMAIN_AUDIO_TYPE_SDL: + qemuBuildAudioSDLArg(&buf, "in", &def->backend.sdl.input); + qemuBuildAudioSDLArg(&buf, "out", &def->backend.sdl.output); + if (def->backend.sdl.driver) { /* * Some SDL audio driver names are different on SDL 1.2 @@ -7679,6 +7763,8 @@ qemuBuildAudioCommandLineArg(virCommandPtr cmd, break; =20 case VIR_DOMAIN_AUDIO_TYPE_FILE: + if (def->backend.file.path) + virBufferEscapeString(&buf, ",path=3D%s", def->backend.file.pa= th); break; =20 case VIR_DOMAIN_AUDIO_TYPE_LAST: @@ -7731,16 +7817,63 @@ qemuBuildAudioCommonEnv(virCommandPtr cmd, } } =20 +static void +qemuBuildAudioALSAEnv(virCommandPtr cmd, + const char *prefix, + virDomainAudioIOALSA *def) +{ + if (def->dev) + virCommandAddEnvFormat(cmd, "%sDEV=3D%s", + prefix, def->dev); +} + +static void +qemuBuildAudioCoreAudioEnv(virCommandPtr cmd, + virDomainAudioDefPtr def) +{ + if (def->backend.coreaudio.output.bufferCount) + virCommandAddEnvFormat(cmd, "QEMU_COREAUDIO_BUFFER_COUNT=3D%u", + def->backend.coreaudio.output.bufferCount); + if (def->output.bufferLength) + virCommandAddEnvFormat(cmd, "QEMU_COREAUDIO_BUFFER_SIZE=3D%u", + def->output.bufferLength); +} + static void qemuBuildAudioOSSEnv(virCommandPtr cmd, const char *prefix, + const char *prefix2, virDomainAudioIOOSS *def) { if (def->dev) virCommandAddEnvFormat(cmd, "%sDEV=3D%s", prefix, def->dev); + if (def->tryPoll) + virCommandAddEnvFormat(cmd, "%sTRY_POLL=3D%s", prefix2, + virTristateSwitchTypeToString(def->tryPoll)= ); } =20 +static void +qemuBuildAudioPulseAudioEnv(virCommandPtr cmd, + virDomainAudioDef *def) +{ + if (def->backend.pulseaudio.input.name) + virCommandAddEnvPair(cmd, "QEMU_PA_SOURCE", + def->backend.pulseaudio.input.name); + if (def->backend.pulseaudio.output.name) + virCommandAddEnvPair(cmd, "QEMU_PA_SINK", + def->backend.pulseaudio.output.name); + + if (def->input.bufferLength) + virCommandAddEnvFormat(cmd, "QEMU_PA_SAMPLES=3D%u", + def->input.bufferLength); + + if (def->backend.pulseaudio.serverName) + virCommandAddEnvPair(cmd, "QEMU_PA_SERVER=3D%s", + def->backend.pulseaudio.serverName); +} + + static int qemuBuildAudioCommandLineEnv(virCommandPtr cmd, virDomainDefPtr def) @@ -7761,23 +7894,47 @@ qemuBuildAudioCommandLineEnv(virCommandPtr cmd, break; =20 case VIR_DOMAIN_AUDIO_TYPE_ALSA: + qemuBuildAudioALSAEnv(cmd, "QEMU_AUDIO_ADC_", &audio->backend.alsa= .input); + qemuBuildAudioALSAEnv(cmd, "QEMU_AUDIO_DAC_", &audio->backend.alsa= .output); break; =20 case VIR_DOMAIN_AUDIO_TYPE_COREAUDIO: + qemuBuildAudioCoreAudioEnv(cmd, audio); break; =20 case VIR_DOMAIN_AUDIO_TYPE_JACK: break; =20 case VIR_DOMAIN_AUDIO_TYPE_OSS: - qemuBuildAudioOSSEnv(cmd, "QEMU_OSS_ADC_", &audio->backend.oss.inp= ut); - qemuBuildAudioOSSEnv(cmd, "QEMU_OSS_DAC_", &audio->backend.oss.out= put); + qemuBuildAudioOSSEnv(cmd, "QEMU_OSS_ADC_", "QEMU_AUDIO_ADC_", + &audio->backend.oss.input); + qemuBuildAudioOSSEnv(cmd, "QEMU_OSS_DAC_", "QEMU_AUDIO_DAC_", + &audio->backend.oss.output); + + if (audio->backend.oss.input.bufferCount) + virCommandAddEnvFormat(cmd, "QEMU_OSS_NFRAGS=3D%u", + audio->backend.oss.input.bufferCount); + + if (audio->backend.oss.tryMMap) + virCommandAddEnvFormat(cmd, "QEMU_OSS_MMAP=3D%s", + virTristateSwitchTypeToString(audio->ba= ckend.oss.tryMMap)); + if (audio->backend.oss.exclusive) + virCommandAddEnvFormat(cmd, "QEMU_OSS_EXCLUSIVE=3D%s", + virTristateSwitchTypeToString(audio->ba= ckend.oss.exclusive)); + if (audio->backend.oss.dspPolicySet) + virCommandAddEnvFormat(cmd, "QEMU_OSS_POLICY=3D%d", + audio->backend.oss.dspPolicy); break; =20 case VIR_DOMAIN_AUDIO_TYPE_PULSEAUDIO: + qemuBuildAudioPulseAudioEnv(cmd, audio); break; =20 case VIR_DOMAIN_AUDIO_TYPE_SDL: + if (audio->output.bufferLength) + virCommandAddEnvFormat(cmd, "QEMU_SDL_SAMPLES=3D%u", + audio->output.bufferLength); + if (audio->backend.sdl.driver) { /* * Some SDL audio driver names are different on SDL 1.2 @@ -7796,6 +7953,9 @@ qemuBuildAudioCommandLineEnv(virCommandPtr cmd, break; =20 case VIR_DOMAIN_AUDIO_TYPE_FILE: + if (audio->backend.file.path) + virCommandAddEnvFormat(cmd, "QEMU_WAV_PATH=3D%s", + audio->backend.file.path); break; =20 case VIR_DOMAIN_AUDIO_TYPE_LAST: diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 5aaadcb82d..dc67d4c442 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -4189,6 +4189,11 @@ qemuValidateDomainDeviceDefAudio(virDomainAudioDefPt= r audio, _("setting audio buffer length is not suppo= rted with this QEMU")); return -1; } + if (audio->backend.coreaudio.input.bufferCount) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("setting audio buffer count is not suppor= ted with this QEMU")); + return -1; + } } break; =20 @@ -4201,10 +4206,32 @@ qemuValidateDomainDeviceDefAudio(virDomainAudioDefP= tr audio, break; =20 case VIR_DOMAIN_AUDIO_TYPE_OSS: + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_AUDIODEV)) { + if (audio->backend.oss.input.bufferCount !=3D + audio->backend.oss.output.bufferCount) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("setting audio buffer count is not suppor= ted with this QEMU")); + return -1; + } + } break; =20 case VIR_DOMAIN_AUDIO_TYPE_PULSEAUDIO: if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_AUDIODEV)) { + if (audio->backend.pulseaudio.input.streamName || + audio->backend.pulseaudio.output.streamName) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("setting audio stream name is not support= ed with this QEMU")); + return -1; + } + + if (audio->backend.pulseaudio.input.latency || + audio->backend.pulseaudio.output.latency) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("setting audio latency is not supported w= ith this QEMU")); + return -1; + } + if (audio->input.bufferLength !=3D audio->output.bufferLength)= { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("setting audio buffer length is not suppo= rted with this QEMU")); @@ -4220,6 +4247,13 @@ qemuValidateDomainDeviceDefAudio(virDomainAudioDefPt= r audio, _("setting audio buffer length is not suppo= rted with this QEMU")); return -1; } + + if (audio->backend.sdl.input.bufferCount || + audio->backend.sdl.output.bufferCount) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("setting audio buffer count is not suppor= ted with this QEMU")); + return -1; + } } break; =20 diff --git a/tests/qemuxml2argvdata/audio-alsa-best.args b/tests/qemuxml2ar= gvdata/audio-alsa-best.args index 4461fc670c..d6c73dfc8b 100644 --- a/tests/qemuxml2argvdata/audio-alsa-best.args +++ b/tests/qemuxml2argvdata/audio-alsa-best.args @@ -17,6 +17,8 @@ QEMU_AUDIO_DAC_VOICES=3D2 \ QEMU_AUDIO_DAC_FIXED_FREQ=3D22050 \ QEMU_AUDIO_DAC_FIXED_CHANNELS=3D4 \ QEMU_AUDIO_DAC_FIXED_FMT=3Df32 \ +QEMU_AUDIO_ADC_DEV=3D/dev/dsp0 \ +QEMU_AUDIO_DAC_DEV=3D/dev/dsp1 \ /usr/bin/qemu-system-i386 \ -name QEMUGuest1 \ -S \ diff --git a/tests/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args b/te= sts/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args index 5f84dcca72..e9898c29de 100644 --- a/tests/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args +++ b/tests/qemuxml2argvdata/audio-alsa-best.x86_64-latest.args @@ -36,7 +36,7 @@ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -audiodev id=3Daudio1,driver=3Dalsa,in.mixing-engine=3Don,in.fixed-setting= s=3Don,\ in.voices=3D1,in.frequency=3D44100,in.channels=3D2,in.format=3Ds16,\ out.mixing-engine=3Don,out.fixed-settings=3Don,out.voices=3D2,out.frequenc= y=3D22050,\ -out.channels=3D4,out.format=3Df32 \ +out.channels=3D4,out.format=3Df32,in.dev=3D/dev/dsp0,out.dev=3D/dev/dsp1 \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/audio-alsa-best.xml b/tests/qemuxml2arg= vdata/audio-alsa-best.xml index cefcc47027..1a6d5f4d9f 100644 --- a/tests/qemuxml2argvdata/audio-alsa-best.xml +++ b/tests/qemuxml2argvdata/audio-alsa-best.xml @@ -31,10 +31,10 @@ diff --git a/tests/qemuxml2argvdata/audio-alsa-full.x86_64-latest.args b/te= sts/qemuxml2argvdata/audio-alsa-full.x86_64-latest.args index 6ade7ef069..3c1b5ba6a5 100644 --- a/tests/qemuxml2argvdata/audio-alsa-full.x86_64-latest.args +++ b/tests/qemuxml2argvdata/audio-alsa-full.x86_64-latest.args @@ -36,7 +36,8 @@ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -audiodev id=3Daudio1,driver=3Dalsa,in.mixing-engine=3Don,in.fixed-setting= s=3Don,\ in.voices=3D1,in.buffer-length=3D100,in.frequency=3D44100,in.channels=3D2,\ in.format=3Ds16,out.mixing-engine=3Don,out.fixed-settings=3Don,out.voices= =3D2,\ -out.buffer-length=3D200,out.frequency=3D22050,out.channels=3D4,out.format= =3Df32 \ +out.buffer-length=3D200,out.frequency=3D22050,out.channels=3D4,out.format= =3Df32,\ +in.dev=3D/dev/dsp0,out.dev=3D/dev/dsp1 \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/audio-alsa-full.xml b/tests/qemuxml2arg= vdata/audio-alsa-full.xml index 2cd488a3a5..634b41a0f0 100644 --- a/tests/qemuxml2argvdata/audio-alsa-full.xml +++ b/tests/qemuxml2argvdata/audio-alsa-full.xml @@ -31,10 +31,10 @@ diff --git a/tests/qemuxml2argvdata/audio-coreaudio-best.args b/tests/qemux= ml2argvdata/audio-coreaudio-best.args index f8250df5cb..cc8be459f6 100644 --- a/tests/qemuxml2argvdata/audio-coreaudio-best.args +++ b/tests/qemuxml2argvdata/audio-coreaudio-best.args @@ -17,6 +17,8 @@ QEMU_AUDIO_DAC_VOICES=3D2 \ QEMU_AUDIO_DAC_FIXED_FREQ=3D22050 \ QEMU_AUDIO_DAC_FIXED_CHANNELS=3D4 \ QEMU_AUDIO_DAC_FIXED_FMT=3Df32 \ +QEMU_COREAUDIO_BUFFER_COUNT=3D42 \ +QEMU_COREAUDIO_BUFFER_SIZE=3D200 \ /usr/bin/qemu-system-i386 \ -name QEMUGuest1 \ -S \ diff --git a/tests/qemuxml2argvdata/audio-coreaudio-best.x86_64-latest.args= b/tests/qemuxml2argvdata/audio-coreaudio-best.x86_64-latest.args index 93166f27de..273655840a 100644 --- a/tests/qemuxml2argvdata/audio-coreaudio-best.x86_64-latest.args +++ b/tests/qemuxml2argvdata/audio-coreaudio-best.x86_64-latest.args @@ -35,8 +35,8 @@ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -device ide-cd,bus=3Dide.1,unit=3D0,drive=3Dlibvirt-1-format,id=3Dide0-1-0= ,bootindex=3D1 \ -audiodev id=3Daudio1,driver=3Dcoreaudio,in.mixing-engine=3Don,in.fixed-se= ttings=3Don,\ in.voices=3D1,in.frequency=3D44100,in.channels=3D2,in.format=3Ds16,\ -out.mixing-engine=3Don,out.fixed-settings=3Don,out.voices=3D2,out.frequenc= y=3D22050,\ -out.channels=3D4,out.format=3Df32 \ +out.mixing-engine=3Don,out.fixed-settings=3Don,out.voices=3D2,out.buffer-l= ength=3D200,\ +out.frequency=3D22050,out.channels=3D4,out.format=3Df32,out.buffer-count= =3D42 \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/audio-coreaudio-best.xml b/tests/qemuxm= l2argvdata/audio-coreaudio-best.xml index 8a79404fde..66c52bb24c 100644 --- a/tests/qemuxml2argvdata/audio-coreaudio-best.xml +++ b/tests/qemuxml2argvdata/audio-coreaudio-best.xml @@ -34,7 +34,7 @@ - + diff --git a/tests/qemuxml2argvdata/audio-coreaudio-full.x86_64-latest.args= b/tests/qemuxml2argvdata/audio-coreaudio-full.x86_64-latest.args index bc6c9e9241..2e8f7b6231 100644 --- a/tests/qemuxml2argvdata/audio-coreaudio-full.x86_64-latest.args +++ b/tests/qemuxml2argvdata/audio-coreaudio-full.x86_64-latest.args @@ -36,7 +36,8 @@ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -audiodev id=3Daudio1,driver=3Dcoreaudio,in.mixing-engine=3Don,in.fixed-se= ttings=3Don,\ in.voices=3D1,in.buffer-length=3D100,in.frequency=3D44100,in.channels=3D2,\ in.format=3Ds16,out.mixing-engine=3Don,out.fixed-settings=3Don,out.voices= =3D2,\ -out.buffer-length=3D200,out.frequency=3D22050,out.channels=3D4,out.format= =3Df32 \ +out.buffer-length=3D200,out.frequency=3D22050,out.channels=3D4,out.format= =3Df32,\ +in.buffer-count=3D50,out.buffer-count=3D42 \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/audio-coreaudio-full.xml b/tests/qemuxm= l2argvdata/audio-coreaudio-full.xml index 671497986e..a46db6936b 100644 --- a/tests/qemuxml2argvdata/audio-coreaudio-full.xml +++ b/tests/qemuxml2argvdata/audio-coreaudio-full.xml @@ -31,10 +31,10 @@ diff --git a/tests/qemuxml2argvdata/audio-file-best.args b/tests/qemuxml2ar= gvdata/audio-file-best.args index bd73a5b26f..22f5730c80 100644 --- a/tests/qemuxml2argvdata/audio-file-best.args +++ b/tests/qemuxml2argvdata/audio-file-best.args @@ -17,6 +17,7 @@ QEMU_AUDIO_DAC_VOICES=3D2 \ QEMU_AUDIO_DAC_FIXED_FREQ=3D22050 \ QEMU_AUDIO_DAC_FIXED_CHANNELS=3D4 \ QEMU_AUDIO_DAC_FIXED_FMT=3Df32 \ +QEMU_WAV_PATH=3Daudio.wav \ /usr/bin/qemu-system-i386 \ -name QEMUGuest1 \ -S \ diff --git a/tests/qemuxml2argvdata/audio-file-best.x86_64-latest.args b/te= sts/qemuxml2argvdata/audio-file-best.x86_64-latest.args index 546e4debe8..ff9248f002 100644 --- a/tests/qemuxml2argvdata/audio-file-best.x86_64-latest.args +++ b/tests/qemuxml2argvdata/audio-file-best.x86_64-latest.args @@ -36,7 +36,7 @@ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -audiodev id=3Daudio1,driver=3Dwav,in.mixing-engine=3Don,in.fixed-settings= =3Don,\ in.voices=3D1,in.frequency=3D44100,in.channels=3D2,in.format=3Ds16,\ out.mixing-engine=3Don,out.fixed-settings=3Don,out.voices=3D2,out.frequenc= y=3D22050,\ -out.channels=3D4,out.format=3Df32 \ +out.channels=3D4,out.format=3Df32,path=3Daudio.wav \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/audio-file-best.xml b/tests/qemuxml2arg= vdata/audio-file-best.xml index 0617dbbc0b..3bd02c3f37 100644 --- a/tests/qemuxml2argvdata/audio-file-best.xml +++ b/tests/qemuxml2argvdata/audio-file-best.xml @@ -30,7 +30,7 @@ -