qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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(-)




  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).