[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(-)
- [PATCH 07/15] audio: copy playback stream in sequential order, (continued)
- [PATCH 07/15] audio: copy playback stream in sequential order, Volker Rümelin, 2022/01/06
- [PATCH 02/15] audio: move function audio_pcm_hw_clip_out(), Volker Rümelin, 2022/01/06
- [PATCH 06/15] jackaudio: use more jack audio buffers, Volker Rümelin, 2022/01/06
- [PATCH 14/15] paaudio: fix samples vs. frames mix-up, Volker Rümelin, 2022/01/06
- [PATCH 10/15] audio: restore mixing-engine playback buffer size, Volker Rümelin, 2022/01/06
- [PATCH 05/15] paaudio: increase default latency to 46ms, Volker Rümelin, 2022/01/06
- [PATCH 15/15] sdlaudio: fix samples vs. frames mix-up, Volker Rümelin, 2022/01/06
- [PATCH 03/15] audio: add function audio_pcm_hw_conv_in(), Volker Rümelin, 2022/01/06
- [PATCH 11/15] paaudio: reduce effective playback buffer size, Volker Rümelin, 2022/01/06
- Re: [PATCH 00/15] reduce audio playback latency,
Christian Schoenebeck <=