qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 00/15] reduce audio playback latency


From: Volker Rümelin
Subject: Re: [PATCH 00/15] reduce audio playback latency
Date: Mon, 10 Jan 2022 22:50:36 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1

Am 10.01.22 um 14:11 schrieb Christian Schoenebeck:
On Sonntag, 9. Januar 2022 18:06:44 CET Volker Rümelin wrote:
On Donnerstag, 6. Januar 2022 10:21:47 CET Volker Rümelin wrote:
This patch series reduces the playback latency for audio backends,
in some cases significantly. For PulseAudio, the audio buffer is
also moved from the QEMU side to the PulseAudio server side. This
improves the drop-out safety for PulseAudio.

I actually measured the latency reduction with the PulseAudio
backend. For the test I used my Linux host configured to play
audio with PulseAudio. The guest was a Linux guest, also
configured to use PulseAudio.
I haven't reviewed all the patches yet, but from what I read so far, does
that mean the additional 3rd buffer is solely for PulseAudio, so for JACK
and other backends these changes would overall be a degradation, wouldn't
they?
No, nothing changes for JACK and it's an improvement for all the other
backends where I added a buffer_get_free function. The important changes
are in [PATCH 10/15] audio: restore mixing-engine playback buffer size.
That patch tries to keep the mixing-engine buffer empty at the end of
audio_run_out().

I couldn't reduce the playback latency for JACK, because the JACK audio
buffers are already very small and any further reduction introduces
playback glitches on my system.
And that's actually my concern. A split 2 buffers -> 3 buffers while
(approximately) retaining overall latency increases the chance of dropouts.

No, the 3 * 512 frames JACK buffer improves dropout safety compared to a 2 * 512 frames buffer. Before my patches I could sometimes hear glitches when I switched from and to the QEMU GTK window. With the change to a 3 * 512 frames JACK buffer, audio playback is glitch free and it comes without additional playback latency.


For PulseAudio there is no additional buffer. I only increased the size
of the server side buffer from 15ms to 46,4ms and added a
buffer_get_free function. Before this patch series a few ten ms after
playback started the mixing-engine buffer was full which added 2 *
46,4ms to the playback latency. With these patches the mixing-engine
buffer is empty. This looks like the buffer in use was moved from the
mixing-engine to the PulseAudio server side.





reply via email to

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