qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 15/24] audio: add mixing-engine option (documentation)


From: Markus Armbruster
Subject: Re: [PATCH v4 15/24] audio: add mixing-engine option (documentation)
Date: Mon, 23 Sep 2019 15:08:20 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)

"Kővágó, Zoltán" <address@hidden> writes:

> This will allow us to disable mixeng when we use a decent backend.
>
> Disabling mixeng have a few advantages:
> * we no longer convert the audio output from one format to another, when
>   the underlying audio system would just convert it to a third format.
>   We no longer convert, only the underlying system, when needed.
> * the underlying system probably has better resampling and sample format
>   converting methods anyway...
> * we may support formats that the mixeng currently does not support (S24
>   or float samples, more than two channels)
> * when using an audio server (like pulseaudio) different sound card
>   outputs will show up as separate streams, even if we use only one
>   backend
>
> Disadvantages:
> * audio capturing no longer works (wavcapture, and vnc audio extension)
> * some backends only support a single playback stream or very picky
>   about the audio format.  In this case we can't disable mixeng.
>
> However mixeng is not removed, only made optional, so this shouldn't be
> a big concern.
>
> Signed-off-by: Kővágó, Zoltán <address@hidden>
> ---
>
> Notes:
>     Changes from v1:
>     
>     * renamed mixeng to mixing-engine
>
>  qapi/audio.json | 5 +++++
>  qemu-options.hx | 6 ++++++
>  2 files changed, 11 insertions(+)
>
> diff --git a/qapi/audio.json b/qapi/audio.json
> index 9fefdf5186..0535eff794 100644
> --- a/qapi/audio.json
> +++ b/qapi/audio.json
> @@ -11,6 +11,10 @@
>  # General audio backend options that are used for both playback and
>  # recording.
>  #
> +# @mixing-engine: use QEMU's mixing engine to mix all streams inside QEMU. 
> When
> +#                 set to off, fixed-settings must be also off. Not every 
> backend
> +#                 compatible with the off setting (default on, since 4.2)
> +#

Last sentence no verb.

Which backends are compatible?

What happens when you try the off setting with incompatible backends?

>  # @fixed-settings: use fixed settings for host input/output. When off,
>  #                  frequency, channels and format must not be
>  #                  specified (default true)
> @@ -31,6 +35,7 @@
>  ##
>  { 'struct': 'AudiodevPerDirectionOptions',
>    'data': {
> +    '*mixing-engine':  'bool',
>      '*fixed-settings': 'bool',
>      '*frequency':      'uint32',
>      '*channels':       'uint32',
> diff --git a/qemu-options.hx b/qemu-options.hx
> index bbfd936d29..395427422a 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -433,6 +433,7 @@ DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev,
>      "                specifies the audio backend to use\n"
>      "                id= identifier of the backend\n"
>      "                timer-period= timer period in microseconds\n"
> +    "                in|out.mixing-engine= use mixing engine to mix streams 
> inside QEMU\n"
>      "                in|out.fixed-settings= use fixed settings for host 
> audio\n"
>      "                in|out.frequency= frequency to use with fixed 
> settings\n"
>      "                in|out.channels= number of channels to use with fixed 
> settings\n"
> @@ -503,6 +504,11 @@ Identifies the audio backend.
>  Sets the timer @var{period} used by the audio subsystem in microseconds.
>  Default is 10000 (10 ms).
>  
> +@item in|out.mixing-engine=on|off
> +Use QEMU's mixing engine to mix all streams inside QEMU.  When off,
> +@var{fixed-settings} must be off too.  Not every backend is fully
> +compatible with the off setting.  Default is on.
> +
>  @item in|out.fixed-settings=on|off
>  Use fixed settings for host audio.  When off, it will change based on
>  how the guest opens the sound card.  In this case you must not specify



reply via email to

[Prev in Thread] Current Thread [Next in Thread]