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: Christian Schoenebeck
Subject: Re: [PATCH 00/15] reduce audio playback latency
Date: Sun, 09 Jan 2022 15:17:51 +0100

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?

> Measuring audio latencies is difficult. I played a sine tone in
> the guest with Audacity and measured the time from releasing the
> left mouse button until the tone can be heard. A few seconds
> before the measurement I started playback of an audio file with
> 10 minutes of silence to fill the audio buffers. The over-all
> latency can't be used to estimate the playback latency, but it
> can be used to calculate the playback latency reduction.
> 
> The measured over-all latency with PulseAudio is around 200ms
> without these patches and around 135ms with these patches. The
> difference of 65ms agrees well with the expected value of
> 46.4ms * 2 + 15ms - 46.4ms = 61.4ms. 46.4ms * 2 is the size of
> the mixing-engine buffer ("[PATCH 14/15] paaudio: fix samples vs.
> frames mix-up" explains the factor 2), 15ms is the server side
> PulseAudio buffer size used before these patches and 46.4ms is
> the new server side PulseAudio buffer size.
> 
> Volker Rümelin (15):
>    audio: replace open-coded buffer arithmetic
>    audio: move function audio_pcm_hw_clip_out()
>    audio: add function audio_pcm_hw_conv_in()
>    audio: inline function audio_pcm_sw_get_rpos_in()
>    paaudio: increase default latency to 46ms
>    jackaudio: use more jack audio buffers
>    audio: copy playback stream in sequential order
>    audio: add pcm_ops function table for capture backend
>    audio: revert tests for pcm_ops table
>    audio: restore mixing-engine playback buffer size
>    paaudio: reduce effective playback buffer size
>    dsoundaudio: reduce effective playback buffer size
>    ossaudio: reduce effective playback buffer size
>    paaudio: fix samples vs. frames mix-up
>    sdlaudio: fix samples vs. frames mix-up
> 
>   audio/alsaaudio.c   |   1 +
>   audio/audio.c       | 194 ++++++++++++++++++++++++--------------------
>   audio/audio_int.h   |   9 +-
>   audio/coreaudio.c   |  13 +--
>   audio/dsoundaudio.c |  30 ++++---
>   audio/jackaudio.c   |   5 +-
>   audio/noaudio.c     |   1 +
>   audio/ossaudio.c    |  17 +++-
>   audio/paaudio.c     |  49 ++++++-----
>   audio/sdlaudio.c    |  21 +++--
>   audio/wavaudio.c    |   1 +
>   11 files changed, 199 insertions(+), 142 deletions(-)





reply via email to

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