From: Christian Schoenebeck <schoenebeck@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: dmitry.osipenko@collabora.com,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
marcandre.lureau@redhat.com
Subject: Re: [PATCH] audio/mixeng: fix sw/hw mixup in audio_pcm_sw_init_
Date: Wed, 18 Mar 2026 09:58:45 +0100 [thread overview]
Message-ID: <6248957.lOV4Wx5bFT@weasel> (raw)
In-Reply-To: <20260318084301.653383-1-marcandre.lureau@redhat.com>
On Wednesday, 18 March 2026 09:43:01 CET marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Commit 42061a14358 ("audio/mixeng: replace redundant pcm_info fields
> with AudioFormat") accidentally changed the conv/clip function selection
> in audio_pcm_sw_init_ to use hw->info.af (the hardware voice format)
> instead of sw->info.af (the software voice format). This causes audio
> distortion when the software and hardware voices use different formats,
> as the wrong conversion functions are applied to the audio data.
>
> Fix by using sw->info.af, restoring the original behavior.
>
> Fixes: 42061a14358c ("audio/mixeng: replace redundant pcm_info fields with
> AudioFormat") Reported-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> audio/audio_template.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
Haven't tested this, but those changes (hw instead of sw) were definitely
wrong and are likely to cause misbehaviours like the reported one. I also
haven't found further similar issues, so:
Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
>
> diff --git a/audio/audio_template.h b/audio/audio_template.h
> index 228369cf9a1..f0b2458996a 100644
> --- a/audio/audio_template.h
> +++ b/audio/audio_template.h
> @@ -172,7 +172,7 @@ static int glue (audio_pcm_sw_init_, TYPE) (
> sw->empty = true;
> #endif
>
> - if (audio_format_is_float(hw->info.af)) {
> + if (audio_format_is_float(sw->info.af)) {
> #ifdef DAC
> sw->conv = mixeng_conv_float[sw->info.nchannels == 2]
> [sw->info.swap_endianness];
> @@ -187,9 +187,9 @@ static int glue (audio_pcm_sw_init_, TYPE) (
> sw->clip = mixeng_clip
> #endif
> [sw->info.nchannels == 2]
> - [audio_format_is_signed(hw->info.af)]
> + [audio_format_is_signed(sw->info.af)]
> [sw->info.swap_endianness]
> - [audio_format_to_index(hw->info.af)];
> + [audio_format_to_index(sw->info.af)];
> }
>
> sw->name = g_strdup (name);
next prev parent reply other threads:[~2026-03-18 8:59 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-18 8:43 [PATCH] audio/mixeng: fix sw/hw mixup in audio_pcm_sw_init_ marcandre.lureau
2026-03-18 8:58 ` Christian Schoenebeck [this message]
2026-03-18 13:39 ` Dmitry Osipenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6248957.lOV4Wx5bFT@weasel \
--to=schoenebeck@crudebyte.com \
--cc=dmitry.osipenko@collabora.com \
--cc=kraxel@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.