From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: "Volker Rümelin" <vr_qemu@t-online.de>
Cc: Gerd Hoffmann <kraxel@redhat.com>,
qemu-devel@nongnu.org, Thomas Huth <huth@tuxfamily.org>
Subject: Re: [PATCH 00/15] reduce audio playback latency
Date: Sun, 09 Jan 2022 15:17:51 +0100 [thread overview]
Message-ID: <1981711.luYxhZlUWu@silver> (raw)
In-Reply-To: <cfcae86f-59c3-a2c5-76cd-1ab5e23e20f3@t-online.de>
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(-)
next prev parent reply other threads:[~2022-01-09 14:19 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-06 9:21 [PATCH 00/15] reduce audio playback latency Volker Rümelin
2022-01-06 9:23 ` [PATCH 01/15] audio: replace open-coded buffer arithmetic Volker Rümelin
2022-01-06 10:18 ` Thomas Huth
2022-01-07 12:10 ` Volker Rümelin
2022-01-06 9:23 ` [PATCH 02/15] audio: move function audio_pcm_hw_clip_out() Volker Rümelin
2022-01-07 13:30 ` Philippe Mathieu-Daudé
2022-01-06 9:23 ` [PATCH 03/15] audio: add function audio_pcm_hw_conv_in() Volker Rümelin
2022-01-06 9:23 ` [PATCH 04/15] audio: inline function audio_pcm_sw_get_rpos_in() Volker Rümelin
2022-01-06 9:23 ` [PATCH 05/15] paaudio: increase default latency to 46ms Volker Rümelin
2022-01-06 9:23 ` [PATCH 06/15] jackaudio: use more jack audio buffers Volker Rümelin
2022-01-06 9:23 ` [PATCH 07/15] audio: copy playback stream in sequential order Volker Rümelin
2022-01-06 9:23 ` [PATCH 08/15] audio: add pcm_ops function table for capture backend Volker Rümelin
2022-01-06 9:23 ` [PATCH 09/15] audio: revert tests for pcm_ops table Volker Rümelin
2022-01-13 9:43 ` Gerd Hoffmann
2022-01-06 9:23 ` [PATCH 10/15] audio: restore mixing-engine playback buffer size Volker Rümelin
2022-01-06 9:23 ` [PATCH 11/15] paaudio: reduce effective " Volker Rümelin
2022-01-06 9:23 ` [PATCH 12/15] dsoundaudio: " Volker Rümelin
2022-01-06 9:23 ` [PATCH 13/15] ossaudio: " Volker Rümelin
2022-01-07 13:42 ` Philippe Mathieu-Daudé
2022-01-06 9:23 ` [PATCH 14/15] paaudio: fix samples vs. frames mix-up Volker Rümelin
2022-01-06 9:23 ` [PATCH 15/15] sdlaudio: " Volker Rümelin
2022-01-06 9:48 ` [PATCH 00/15] reduce audio playback latency Volker Rümelin
2022-01-09 14:17 ` Christian Schoenebeck [this message]
2022-01-09 17:06 ` Volker Rümelin
2022-01-10 13:11 ` Christian Schoenebeck
2022-01-10 21:50 ` Volker Rümelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1981711.luYxhZlUWu@silver \
--to=qemu_oss@crudebyte.com \
--cc=huth@tuxfamily.org \
--cc=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=vr_qemu@t-online.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).