From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: "Gerd Hoffmann" <kraxel@redhat.com>,
"Volker Rümelin" <vr_qemu@t-online.de>
Cc: "Thomas Huth" <thuth@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@gmail.com>,
qemu-devel@nongnu.org
Subject: Re: [PATCH 01/11] audio: log unimplemented audio device sample rates
Date: Sun, 18 Dec 2022 21:26:16 +0100 [thread overview]
Message-ID: <3246935.mafvd9ugAF@silver> (raw)
In-Reply-To: <20221218171539.11193-1-vr_qemu@t-online.de>
On Sunday, December 18, 2022 6:15:29 PM CET Volker Rümelin wrote:
> Some emulated audio devices allow guests to select very low
> sample rates that the audio subsystem doesn't support. The lowest
> supported sample rate depends on the audio backend used and in
> most cases can be changed with various -audiodev arguments. Until
> now, the audio_bug function emits an error message similar to the
> following error message
>
> A bug was just triggered in audio_calloc
> Save all your work and restart without audio
> I am sorry
> Context:
> audio_pcm_sw_alloc_resources_out passed invalid arguments to
> audio_calloc
> nmemb=0 size=16 (len=0)
> audio: Could not allocate buffer for `ac97.po' (0 samples)
>
> and the audio subsystem continues without sound for the affected
> device.
>
> The fact that the selected sample rate is not supported is not a
> guest error. Instead of displaying an error message, the missing
> audio support is now logged. Simply continuing without sound is
> correct, since the audio stream won't transport anything
> reasonable at such high resample ratios anyway.
>
> The AUD_open_* functions return NULL like before. The opened
> audio device will not be registered in the audio subsystem and
> consequently the audio frontend callback functions will not be
> called. The AUD_read and AUD_write functions return early in this
> case. This is necessary because, for example, the Sound Blaster 16
> emulation calls AUD_write from the DMA callback function.
>
> Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
> ---
> audio/audio.c | 1 +
> audio/audio_template.h | 13 +++++++++++++
> 2 files changed, 14 insertions(+)
>
> diff --git a/audio/audio.c b/audio/audio.c
> index d849a94a81..f6b420688d 100644
> --- a/audio/audio.c
> +++ b/audio/audio.c
> @@ -31,6 +31,7 @@
> #include "qapi/qobject-input-visitor.h"
> #include "qapi/qapi-visit-audio.h"
> #include "qemu/cutils.h"
> +#include "qemu/log.h"
> #include "qemu/module.h"
> #include "qemu/help_option.h"
> #include "sysemu/sysemu.h"
> diff --git a/audio/audio_template.h b/audio/audio_template.h
> index 720a32e57e..bfa94b4d22 100644
> --- a/audio/audio_template.h
> +++ b/audio/audio_template.h
> @@ -115,6 +115,19 @@ static int glue (audio_pcm_sw_alloc_resources_, TYPE) (SW *sw)
> #else
> samples = (int64_t)sw->HWBUF->size * sw->ratio >> 32;
> #endif
> + if (samples == 0) {
> + HW *hw = sw->hw;
> + size_t f_fe_min;
> +
> + /* f_fe_min = ceil(1 [frames] * f_be [Hz] / size_be [frames]) */
> + f_fe_min = (hw->info.freq + HWBUF->size - 1) / HWBUF->size;
> + qemu_log_mask(LOG_UNIMP,
> + AUDIO_CAP ": The guest selected a " NAME " sample rate"
> + " of %d Hz for %s. Only sample rates >= %zu Hz are"
> + " supported.\n",
> + sw->info.freq, sw->name, f_fe_min);
> + return -1;
You probably want to `sw->buf = NULL;` before returning here, or adjust the
condition for the error message below.
The other thing that puzzles me, in error case these template functions return
-1, which would then be feed to g_malloc*()?
> + }
>
> sw->buf = audio_calloc(__func__, samples, sizeof(struct st_sample));
> if (!sw->buf) {
>
next prev parent reply other threads:[~2022-12-18 20:27 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-18 17:13 [PATCH 00/11] audio: more improvements Volker Rümelin
2022-12-18 17:15 ` [PATCH 01/11] audio: log unimplemented audio device sample rates Volker Rümelin
2022-12-18 20:26 ` Christian Schoenebeck [this message]
2022-12-19 7:22 ` Volker Rümelin
2022-12-19 13:38 ` Christian Schoenebeck
2022-12-18 17:15 ` [PATCH 02/11] audio: don't show unnecessary error messages Volker Rümelin
2022-12-18 17:20 ` Philippe Mathieu-Daudé
2022-12-18 17:15 ` [PATCH 03/11] audio: rename hardware store to backend Volker Rümelin
2022-12-29 9:39 ` Thomas Huth
2022-12-18 17:15 ` [PATCH 04/11] audio: remove unused #define AUDIO_STRINGIFY Volker Rümelin
2022-12-18 17:31 ` Philippe Mathieu-Daudé
2022-12-29 9:39 ` Thomas Huth
2022-12-18 17:15 ` [PATCH 05/11] audio/mixeng: use g_new0() instead of audio_calloc() Volker Rümelin
2022-12-18 20:56 ` Richard Henderson
2022-12-18 17:15 ` [PATCH 06/11] audio/alsaaudio: " Volker Rümelin
2022-12-18 17:24 ` Philippe Mathieu-Daudé
2022-12-18 20:57 ` Richard Henderson
2022-12-18 17:15 ` [PATCH 07/11] audio/audio_template: use g_malloc0() to replace audio_calloc() Volker Rümelin
2022-12-18 17:26 ` Philippe Mathieu-Daudé
2022-12-18 17:39 ` Volker Rümelin
2022-12-18 20:05 ` Christian Schoenebeck
2022-12-18 20:34 ` Philippe Mathieu-Daudé
2023-01-16 8:58 ` Daniel P. Berrangé
2023-01-17 7:05 ` Volker Rümelin
2022-12-18 17:15 ` [PATCH 08/11] audio/audio_template: use g_new0() " Volker Rümelin
2022-12-18 21:02 ` Richard Henderson
2023-01-16 9:03 ` Daniel P. Berrangé
2023-01-17 7:02 ` Volker Rümelin
2022-12-18 17:15 ` [PATCH 09/11] audio: remove audio_calloc() function Volker Rümelin
2022-12-18 17:29 ` Philippe Mathieu-Daudé
2022-12-18 17:15 ` [PATCH 10/11] alsaaudio: change default playback settings Volker Rümelin
2022-12-21 11:03 ` Christian Schoenebeck
2022-12-26 15:08 ` Volker Rümelin
2022-12-26 15:37 ` Volker Rümelin
2022-12-28 13:52 ` Christian Schoenebeck
2022-12-29 9:08 ` Volker Rümelin
2022-12-30 9:01 ` Volker Rümelin
2022-12-30 14:05 ` Christian Schoenebeck
2022-12-18 17:15 ` [PATCH 11/11] alsaaudio: reintroduce default recording settings Volker Rümelin
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=3246935.mafvd9ugAF@silver \
--to=qemu_oss@crudebyte.com \
--cc=kraxel@redhat.com \
--cc=marcandre.lureau@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
--cc=vr_qemu@t-online.de \
/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.