diff --git a/spa/plugins/audioconvert/audioconvert.c b/spa/plugins/audioconvert/audioconvert.c index 9e044dba5..7c62cdee2 100644 --- a/spa/plugins/audioconvert/audioconvert.c +++ b/spa/plugins/audioconvert/audioconvert.c @@ -2642,9 +2642,10 @@ static int impl_node_process(void *object) spa_log_trace_fp(this->log, "%p: no output buffer", this); } } - resample_update_rate_match(this, resample_passthrough, + if (resample_update_rate_match(this, resample_passthrough, max_out - this->out_offset, - max_in - this->in_offset); + max_in - this->in_offset) > 0) + res |= SPA_STATUS_NEED_DATA; return res; } diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index f35de287e..3d5443a4f 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -1061,6 +1061,10 @@ again: pw_log_trace_fp("%p: no more buffers %p", stream, io); ask_more = true; } + } else { + ask_more = !impl->process_rt && + queue_is_empty(impl, &impl->queued) && + !queue_is_empty(impl, &impl->dequeued); } copy_position(impl, impl->queued.outcount);