diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index ea8dd9b79..477861f61 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -2481,8 +2481,9 @@ int pw_stream_get_time_n(struct pw_stream *stream, struct pw_time *time, size_t time->delay += (int64_t)(((latency->min_quantum + latency->max_quantum) / 2.0f) * quantum); time->delay += (latency->min_rate + latency->max_rate) / 2; - time->delay += ((latency->min_ns + latency->max_ns) / 2) * - (int64_t)time->rate.denom / (int64_t)SPA_NSEC_PER_SEC; + if (time->rate.num != 0) + time->delay += ((latency->min_ns + latency->max_ns) / 2) * + (int64_t)time->rate.denom / ((int64_t)SPA_NSEC_PER_SEC * time->rate.num); avail_buffers = spa_ringbuffer_get_read_index(&impl->dequeued.ring, &index); avail_buffers = SPA_CLAMP(avail_buffers, 0, (int32_t)impl->n_buffers);