This series of patches adds a new -audiodev command line option to specify audio subsytem parameters instead of environment variables. This will later allow us to specify multiple audio backends. The syntax is something like this: -audiodev driver_name,property=value,... like: -audiodev alsa,frequency=8000,channels=1
The first commit adds a qapi Audiodev struct that describes the audio backend options. The next 4 commits are some miscellaneous additions that are needed by the last commit which finally adds the -audiodev option. For users with esoteric platforms or needs please check I did not break anything accidentally. For easier testing, pull https://github.com/DirtYiCE/qemu.git tag audio-cmdline-v2. Please review. --- Changes from v1: * updated to master, removed commits already merged * now every time-related option takes usecs * some small fixes Kővágó, Zoltán (6): qapi: qapi for audio backends qapi: support nested structs in OptsVisitor opts: do not print separator before first item in qemu_opts_print qapi: AllocVisitor audio: use qapi AudioFormat instead of audfmt_e audio: -audiodev command line option Makefile | 4 +- audio/Makefile.objs | 2 +- audio/alsaaudio.c | 337 +++++--------- audio/audio.c | 798 ++++++++++---------------------- audio/audio.h | 34 +- audio/audio_int.h | 7 +- audio/audio_legacy.c | 328 +++++++++++++ audio/audio_template.h | 13 +- audio/audio_win_int.c | 18 +- audio/coreaudio.c | 49 +- audio/dsound_template.h | 6 +- audio/dsoundaudio.c | 60 +-- audio/noaudio.c | 3 +- audio/ossaudio.c | 183 +++----- audio/paaudio.c | 109 ++--- audio/sdlaudio.c | 50 +- audio/spiceaudio.c | 11 +- audio/wavaudio.c | 76 +-- audio/wavcapture.c | 2 +- block.c | 2 +- hw/arm/omap2.c | 2 +- hw/audio/ac97.c | 2 +- hw/audio/adlib.c | 2 +- hw/audio/cs4231a.c | 6 +- hw/audio/es1370.c | 4 +- hw/audio/gus.c | 2 +- hw/audio/hda-codec.c | 18 +- hw/audio/lm4549.c | 6 +- hw/audio/milkymist-ac97.c | 2 +- hw/audio/pcspk.c | 2 +- hw/audio/sb16.c | 14 +- hw/audio/wm8750.c | 4 +- hw/input/tsc210x.c | 2 +- hw/usb/dev-audio.c | 2 +- include/qapi/alloc-visitor.h | 18 + qapi-schema.json | 3 + qapi/Makefile.objs | 1 + qapi/alloc-visitor.c | 62 +++ qapi/audio.json | 223 +++++++++ qapi/opts-visitor.c | 144 ++++-- qemu-options.hx | 218 ++++++++- tests/qapi-schema/qapi-schema-test.json | 9 +- tests/test-opts-visitor.c | 34 ++ ui/vnc.c | 14 +- util/qemu-option.c | 5 +- vl.c | 9 +- 46 files changed, 1627 insertions(+), 1273 deletions(-) create mode 100644 audio/audio_legacy.c create mode 100644 include/qapi/alloc-visitor.h create mode 100644 qapi/alloc-visitor.c create mode 100644 qapi/audio.json -- 2.4.3