This patch series adds support to multiple audio backends. The first part of the series (until -audiodev command line option) was submitted multiple times, see http://lists.nongnu.org/archive/html/qemu-devel/2015-06/msg05037.html and http://lists.nongnu.org/archive/html/qemu-devel/2015-07/msg00920.html
Afterwards I add support to multiple backends. Audio fronteds gain a new audiodev option to specify the id of the audiodev to use. The audiodev= option is required, unless you use the old environment variable based configuration, in that case it must not used (and you can't use multiple backends). Finally I also make mixeng usage optional, it can save us some useless format converting when not needed. Also makes easier to support formats currently not supported by qemu (as only the backend has to support it, not the mixeng). For easier testing pull https://github.com/DirtYiCE/qemu.git tag audio-multi-v1. Please review. Kővágó, Zoltán (25): qapi: support implicit structs in OptsVisitor qapi: convert NumaOptions into a flat union net: remove NetLegacy struct net: use Netdev instead of NetClientOptions in client init qapi: change Netdev into a flat union qapi: reorder NetdevBase and Netdev qapi: qapi for audio backends qapi: support nested structs in OptsVisitor audio: use qapi AudioFormat instead of audfmt_e audio: -audiodev command line option audio: reduce glob_audio_state usage audio: basic support for multi backend audio audio: add audiodev properties to frontends audio: audiodev= parameters no longer optional when -audiodev present paaudio: do not create multiple connections to the same server paaudio: properly disconnect streams in fini_* audio: remove gcc specific audio_MIN, audio_MAX audio: do not run each backend in audio_run paaudio: fix playback glitches audio: remove mixeng specific code from backends audio: common rate control code for timer based outputs audio: add mixeng option (documentation) audio: make mixeng optional paaudio: get/put_buffer functions audio: split ctl_* functions into enable_* and volume_* Makefile | 4 +- audio/Makefile.objs | 3 +- audio/alsaaudio.c | 739 +++++----------- audio/audio.c | 1436 +++++++++++++++---------------- audio/audio.h | 67 +- audio/audio_int.h | 121 +-- audio/audio_legacy.c | 328 +++++++ audio/audio_pt_int.c | 173 ---- audio/audio_pt_int.h | 22 - audio/audio_template.h | 99 +-- audio/audio_win_int.c | 18 +- audio/coreaudio.c | 198 ++--- audio/dsound_template.h | 59 +- audio/dsoundaudio.c | 444 +++------- audio/mixeng.h | 11 +- audio/noaudio.c | 98 +-- audio/ossaudio.c | 589 +++++-------- audio/paaudio.c | 860 ++++++++---------- audio/rate_template.h | 2 +- audio/sdlaudio.c | 183 ++-- audio/spiceaudio.c | 283 ++---- audio/wavaudio.c | 156 +--- audio/wavcapture.c | 8 +- configure | 5 - hmp-commands.hx | 11 +- hw/arm/musicpal.c | 2 +- hw/arm/omap2.c | 2 +- hw/audio/ac97.c | 3 +- hw/audio/adlib.c | 3 +- hw/audio/cs4231a.c | 7 +- hw/audio/es1370.c | 11 +- hw/audio/gus.c | 3 +- hw/audio/hda-codec.c | 19 +- hw/audio/lm4549.c | 6 +- hw/audio/milkymist-ac97.c | 8 +- hw/audio/pcspk.c | 3 +- hw/audio/pl041.c | 1 + hw/audio/sb16.c | 15 +- hw/audio/wm8750.c | 10 +- hw/core/qdev-properties-system.c | 59 +- hw/input/tsc210x.c | 2 +- hw/net/allwinner_emac.c | 2 +- hw/net/cadence_gem.c | 2 +- hw/net/dp8393x.c | 2 +- hw/net/e1000.c | 2 +- hw/net/eepro100.c | 2 +- hw/net/etraxfs_eth.c | 2 +- hw/net/fsl_etsec/etsec.c | 2 +- hw/net/lan9118.c | 2 +- hw/net/lance.c | 2 +- hw/net/mcf_fec.c | 2 +- hw/net/milkymist-minimac2.c | 2 +- hw/net/mipsnet.c | 2 +- hw/net/ne2000-isa.c | 2 +- hw/net/ne2000.c | 2 +- hw/net/opencores_eth.c | 2 +- hw/net/pcnet-pci.c | 2 +- hw/net/rocker/rocker_fp.c | 2 +- hw/net/rtl8139.c | 2 +- hw/net/smc91c111.c | 2 +- hw/net/spapr_llan.c | 2 +- hw/net/stellaris_enet.c | 2 +- hw/net/vhost_net.c | 18 +- hw/net/virtio-net.c | 6 +- hw/net/vmxnet3.c | 2 +- hw/net/xen_nic.c | 2 +- hw/net/xgmac.c | 2 +- hw/net/xilinx_axienet.c | 2 +- hw/net/xilinx_ethlite.c | 2 +- hw/usb/dev-audio.c | 3 +- hw/usb/dev-network.c | 2 +- include/hw/qdev-properties.h | 3 + include/net/net.h | 4 +- monitor.c | 26 +- net/clients.h | 20 +- net/dump.c | 8 +- net/hub.c | 24 +- net/l2tpv3.c | 8 +- net/net.c | 129 ++- net/netmap.c | 6 +- net/slirp.c | 8 +- net/socket.c | 10 +- net/tap-win32.c | 8 +- net/tap.c | 28 +- net/vde.c | 8 +- net/vhost-user.c | 14 +- numa.c | 2 +- qapi-schema.json | 132 +-- qapi/audio.json | 268 ++++++ qapi/opts-visitor.c | 129 ++- qemu-options.hx | 237 ++++- tests/qapi-schema/qapi-schema-test.json | 9 +- tests/test-opts-visitor.c | 34 + ui/vnc.c | 29 +- ui/vnc.h | 2 + vl.c | 11 +- 96 files changed, 3553 insertions(+), 3756 deletions(-) create mode 100644 audio/audio_legacy.c delete mode 100644 audio/audio_pt_int.c delete mode 100644 audio/audio_pt_int.h create mode 100644 qapi/audio.json -- 2.4.5