mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-05 13:30:02 -05:00
spa: improve draining
Make a new DRAINED status. Place the DRAINED status on an input IO when a stream is out of buffers and draining. All nodes that don't have HAVE_DATA on the input io need to copy it to the output io and return the status. This makes sure the DRAINED is forwarded and nodes return DRAINED from _process() DRAINED on the resampler flushes out the last queued samples and then forwards the DRAINED in the next iteration. Emit a new drained signal from the context when a node returns DRAINED. Use this to trigger the drained signal in the stream.
This commit is contained in:
parent
029f431418
commit
b18dacde9a
10 changed files with 46 additions and 42 deletions
|
|
@ -1084,7 +1084,7 @@ static int impl_node_process(void *object)
|
|||
if (SPA_UNLIKELY(i == 0))
|
||||
res |= r & SPA_STATUS_NEED_DATA;
|
||||
if (SPA_UNLIKELY(i == this->n_nodes-1))
|
||||
res |= r & SPA_STATUS_HAVE_DATA;
|
||||
res |= r & (SPA_STATUS_HAVE_DATA | SPA_STATUS_DRAINED);
|
||||
}
|
||||
if (res & SPA_STATUS_HAVE_DATA)
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue