mirror of https://github.com/xemu-project/xemu.git
audio: extend -audio to allow creating a default backend
If "-audio BACKEND" is used without a model, the resulting backend will be used whenever the audiodev property is not specified. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
8f527a3c0d
commit
1ebdbff4c3
|
@ -1820,7 +1820,7 @@ bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp)
|
|||
card->state = audio_init(NULL, errp);
|
||||
if (!card->state) {
|
||||
if (!QSIMPLEQ_EMPTY(&audiodevs)) {
|
||||
error_append_hint(errp, "Perhaps you wanted to set audiodev=%s?\n",
|
||||
error_append_hint(errp, "Perhaps you wanted to use -audio or set audiodev=%s?\n",
|
||||
QSIMPLEQ_FIRST(&audiodevs)->dev->id);
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -728,20 +728,22 @@ ERST
|
|||
|
||||
|
||||
DEF("audio", HAS_ARG, QEMU_OPTION_audio,
|
||||
"-audio [driver=]driver[,prop[=value][,...]]\n"
|
||||
" specifies default audio backend when `audiodev` is not\n"
|
||||
" used to create a machine or sound device;"
|
||||
" options are the same as for -audiodev\n"
|
||||
"-audio [driver=]driver,model=value[,prop[=value][,...]]\n"
|
||||
" specifies the audio backend and device to use;\n"
|
||||
" apart from 'model', options are the same as for -audiodev.\n"
|
||||
" use '-audio model=help' to show possible devices.\n",
|
||||
QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-audio [driver=]driver,model=value[,prop[=value][,...]]``
|
||||
This option is a shortcut for configuring both the guest audio
|
||||
hardware and the host audio backend in one go.
|
||||
The driver option is the same as with the corresponding ``-audiodev`` option below.
|
||||
The guest hardware model can be set with ``model=modelname``.
|
||||
|
||||
Use ``driver=help`` to list the available drivers,
|
||||
and ``model=help`` to list the available device types.
|
||||
``-audio [driver=]driver[,model=value][,prop[=value][,...]]``
|
||||
If the ``model`` option is specified, ``-audio`` is a shortcut
|
||||
for configuring both the guest audio hardware and the host audio
|
||||
backend in one go. The guest hardware model can be set with
|
||||
``model=modelname``. Use ``model=help`` to list the available
|
||||
device types.
|
||||
|
||||
The following two example do exactly the same, to show how ``-audio``
|
||||
can be used to shorten the command line length:
|
||||
|
@ -750,6 +752,17 @@ SRST
|
|||
|
||||
|qemu_system| -audiodev pa,id=pa -device sb16,audiodev=pa
|
||||
|qemu_system| -audio pa,model=sb16
|
||||
|
||||
If the ``model`` option is not specified, ``-audio`` is used to
|
||||
configure a default audio backend that will be used whenever the
|
||||
``audiodev`` property is not set on a device or machine. In
|
||||
particular, ``-audio none`` ensures that no audio is produced even
|
||||
for machines that have embedded sound hardware.
|
||||
|
||||
In both cases, the driver option is the same as with the corresponding
|
||||
``-audiodev`` option below. Use ``driver=help`` to list the available
|
||||
drivers.
|
||||
|
||||
ERST
|
||||
|
||||
DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev,
|
||||
|
|
11
system/vl.c
11
system/vl.c
|
@ -2935,7 +2935,7 @@ void qemu_init(int argc, char **argv)
|
|||
break;
|
||||
case QEMU_OPTION_audio: {
|
||||
bool help;
|
||||
char *model;
|
||||
char *model = NULL;
|
||||
Audiodev *dev = NULL;
|
||||
Visitor *v;
|
||||
QDict *dict = keyval_parse(optarg, "driver", &help, &error_fatal);
|
||||
|
@ -2948,22 +2948,25 @@ void qemu_init(int argc, char **argv)
|
|||
if (!qdict_haskey(dict, "id")) {
|
||||
qdict_put_str(dict, "id", "audiodev0");
|
||||
}
|
||||
if (!qdict_haskey(dict, "model")) {
|
||||
error_setg(&error_fatal, "Parameter 'model' is missing");
|
||||
}
|
||||
if (qdict_haskey(dict, "model")) {
|
||||
model = g_strdup(qdict_get_str(dict, "model"));
|
||||
qdict_del(dict, "model");
|
||||
if (is_help_option(model)) {
|
||||
show_valid_soundhw();
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
v = qobject_input_visitor_new_keyval(QOBJECT(dict));
|
||||
qobject_unref(dict);
|
||||
visit_type_Audiodev(v, NULL, &dev, &error_fatal);
|
||||
visit_free(v);
|
||||
if (model) {
|
||||
audio_define(dev);
|
||||
select_soundhw(model, dev->id);
|
||||
g_free(model);
|
||||
} else {
|
||||
audio_define_default(dev, &error_fatal);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case QEMU_OPTION_h:
|
||||
|
|
Loading…
Reference in New Issue