diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c index 400484cf3..d2041ac50 100644 --- a/spa/plugins/alsa/alsa-pcm.c +++ b/spa/plugins/alsa/alsa-pcm.c @@ -2015,8 +2015,8 @@ static int get_avail(struct state *state, uint64_t current_time, snd_pcm_uframes spa_log_trace_fp(state->log, "%"PRIu64" %"PRIu64" %"PRIi64, current_time, then, diff); - if (SPA_ABS(diff) < state->threshold) { - *delay += diff; + if (SPA_ABS(diff) < state->threshold * 3) { + *delay += SPA_CLAMP(diff, -state->threshold, state->threshold); state->htimestamp_error = 0; } else { if (++state->htimestamp_error > MAX_HTIMESTAMP_ERROR) {