From: Volker Rümelin Date: Thu, 15 May 2025 05:44:25 +0000 (+0200) Subject: audio: fix size calculation in AUD_get_buffer_size_out() X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ccb4fec0e5f233cb61a83b3af59ae11716ea06c0;p=thirdparty%2Fqemu.git audio: fix size calculation in AUD_get_buffer_size_out() The buffer size calculated by AUD_get_buffer_size_out() is often incorrect. sw->hw->samples * sw->hw->info.bytes_per_frame is the size of the mixing engine buffer in audio frames multiplied by the size of one frame of the audio backend. Due to resampling or format conversion, the size of the frontend buffer can differ significantly. Return the correct buffer size when the mixing engine is used. Reviewed-by: Marc-André Lureau Signed-off-by: Volker Rümelin Message-Id: <20250515054429.7385-3-vr_qemu@t-online.de> --- diff --git a/audio/audio.c b/audio/audio.c index 70ef22b1a4..3f5baf0cc6 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -909,6 +909,10 @@ int AUD_get_buffer_size_out(SWVoiceOut *sw) return 0; } + if (audio_get_pdo_out(sw->s->dev)->mixing_engine) { + return sw->resample_buf.size * sw->info.bytes_per_frame; + } + return sw->hw->samples * sw->hw->info.bytes_per_frame; }