[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 00/15] reduce audio playback latency
|
From: |
Volker Rümelin |
|
Subject: |
[PATCH 00/15] reduce audio playback latency |
|
Date: |
Thu, 6 Jan 2022 10:21:47 +0100 |
|
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 |
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.
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(-)
--
2.31.1
- [PATCH 00/15] reduce audio playback latency,
Volker Rümelin <=
- Re: [PATCH 00/15] reduce audio playback latency, Volker Rümelin, 2022/01/06
- [PATCH 08/15] audio: add pcm_ops function table for capture backend, Volker Rümelin, 2022/01/06
- [PATCH 09/15] audio: revert tests for pcm_ops table, Volker Rümelin, 2022/01/06
- [PATCH 13/15] ossaudio: reduce effective playback buffer size, Volker Rümelin, 2022/01/06
- [PATCH 01/15] audio: replace open-coded buffer arithmetic, Volker Rümelin, 2022/01/06
- [PATCH 04/15] audio: inline function audio_pcm_sw_get_rpos_in(), Volker Rümelin, 2022/01/06