diff --git a/pipewire-pulseaudio/src/internal.h b/pipewire-pulseaudio/src/internal.h index 4c9bf343a..b52e2168f 100644 --- a/pipewire-pulseaudio/src/internal.h +++ b/pipewire-pulseaudio/src/internal.h @@ -367,6 +367,7 @@ struct pa_stream { pa_timing_info timing_info; uint64_t ticks_base; + size_t queued_bytes; uint32_t direct_on_input; diff --git a/pipewire-pulseaudio/src/stream.c b/pipewire-pulseaudio/src/stream.c index eef256510..ab890c112 100644 --- a/pipewire-pulseaudio/src/stream.c +++ b/pipewire-pulseaudio/src/stream.c @@ -412,8 +412,9 @@ static void stream_control_info(void *data, uint32_t id, const struct pw_stream_ static void stream_add_buffer(void *data, struct pw_buffer *buffer) { pa_stream *s = data; - s->maxsize += buffer->buffer->datas[0].maxsize; - s->maxblock = SPA_MIN(buffer->buffer->datas[0].maxsize, s->maxblock); + buffer->size = buffer->buffer->datas[0].maxsize; + s->maxsize += buffer->size; + s->maxblock = SPA_MIN(buffer->size, s->maxblock); } static void stream_remove_buffer(void *data, struct pw_buffer *buffer) @@ -468,6 +469,7 @@ static void update_timing_info(pa_stream *s) } ti->since_underrun = 0; s->timing_info_valid = true; + s->queued_bytes = pwt.queued; pw_log_debug("stream %p: %"PRIu64" rate:%d/%d ticks:%"PRIu64" pos:%"PRIu64" delay:%"PRIi64 " read:%"PRIu64 " write:%"PRIu64" queued:%"PRIi64,