From 301e7298640aadeb66f917e029c751a49c90e949 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 24 Nov 2021 12:19:22 +0100 Subject: [PATCH] alsa-plugin: fix delay reporting The delay should be calculated based on the amount of samples available to the application, not the hardware. This overreported the delay. See #1697 --- pipewire-alsa/alsa-plugins/pcm_pipewire.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipewire-alsa/alsa-plugins/pcm_pipewire.c b/pipewire-alsa/alsa-plugins/pcm_pipewire.c index 45c7bc0a6..92c358e6c 100644 --- a/pipewire-alsa/alsa-plugins/pcm_pipewire.c +++ b/pipewire-alsa/alsa-plugins/pcm_pipewire.c @@ -223,7 +223,7 @@ static int snd_pcm_pipewire_delay(snd_pcm_ioplug_t *io, snd_pcm_sframes_t *delay diff = SPA_TIMESPEC_TO_NSEC(&ts) - pw->time.now; elapsed = (pw->time.rate.denom * diff) / (pw->time.rate.num * SPA_NSEC_PER_SEC); } - filled = pw->time.delay + snd_pcm_ioplug_hw_avail(io, pw->hw_ptr, io->appl_ptr); + filled = pw->time.delay + snd_pcm_ioplug_avail(io, pw->hw_ptr, io->appl_ptr); if (io->stream == SND_PCM_STREAM_PLAYBACK) *delayp = filled - SPA_MIN(elapsed, filled);