Hi

On Thu, Aug 6, 2015 at 8:28 PM, Kővágó, Zoltán <dirty.ice...@gmail.com> wrote:
> 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.
>

Since the setting is so complicated, shouldn't it be a OnOffAuto? and
let the backend decide what's best for the user?

> However mixeng is not removed, only made optional, so this shouldn't be
> a big concern.
>
> Signed-off-by: Kővágó, Zoltán <dirty.ice...@gmail.com>
> ---
>  qapi/audio.json | 5 +++++
>  qemu-options.hx | 6 ++++++
>  2 files changed, 11 insertions(+)
>
> diff --git a/qapi/audio.json b/qapi/audio.json
> index b57b215..0216a10 100644
> --- a/qapi/audio.json
> +++ b/qapi/audio.json
> @@ -184,6 +184,10 @@
>  #
>  # General audio backend options that are used for both playback and 
> recording.
>  #
> +# @mixeng: #optional 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)
> +#
>  # @fixed-settings: #optional use fixed settings for host input/output.  When
>  #                  off, frequency, channels and format must not be specified
>  #                  (default on)
> @@ -207,6 +211,7 @@
>  ##
>  { 'struct': 'AudiodevPerDirectionOptions',
>    'data': {
> +    '*mixeng':         'bool',
>      '*fixed-settings': 'bool',
>      '*frequency':      'int',
>      '*channels':       'int',
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 60a3563..bd922bf 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -329,6 +329,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.mixeng= use mixeng 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"
> @@ -397,6 +398,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.mixeng=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
> --
> 2.4.5
>
>



-- 
Marc-André Lureau

Reply via email to