diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index dd14c5601..735a55b3a 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -2400,8 +2400,9 @@ int pw_stream_get_time_n(struct pw_stream *stream, struct pw_time *time, size_t time->delay += (int64_t)(((impl->latency.min_quantum + impl->latency.max_quantum) / 2.0f) * quantum); time->delay += (impl->latency.min_rate + impl->latency.max_rate) / 2; - time->delay += ((impl->latency.min_ns + impl->latency.max_ns) / 2) * - (int64_t)time->rate.denom / (int64_t)SPA_NSEC_PER_SEC; + if (time->rate.num != 0) + time->delay += ((impl->latency.min_ns + impl->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);