[pulseaudio-discuss] [PATCH] pipe-sink: auto-drain the pipe on sink resume
Tanu Kaskinen
tanuk at iki.fi
Wed Feb 28 07:16:35 UTC 2018
On Mon, 2018-02-26 at 21:06 +0100, Samo Pogačnik wrote:
> Dne 26.02.2018 (pon) ob 11:49 +0200 je Tanu Kaskinen napisal(a):
> > On Sat, 2018-02-24 at 17:41 +0100, Samo Pogačnik wrote:
> > >
> > > Added option auto_drain_pipe_on_resume to enable draining any
> > > remaining
> > > data from the pipe upon every pipe-sink resume out of suspend.
> > > ---
> > > src/modules/module-pipe-sink.c | 37
> > > ++++++++++++++++++++++++++++++++++++-
> > > 1 file changed, 36 insertions(+), 1 deletion(-)
> >
> > I didn't review the patch yet, I just wanted to point out that the
> > commit message doesn't explain what problem the patch solves. What's
> > your use case?
> >
>
> When a pipe reader fails, the pipe sink fills up the pipe and starts
> dropping instead of writing new data. Old data remains in the pipe to
> be consumed by the eventually recovered or replaced reader. By each new
> drop a gap between the pipe content and new data to be written grows.
> If the sink suspends while dropping, resuming from suspend is going to
> clear the pipe and start writing new data into an empty pipe, thus
> removing the gap (old, potentially irrelevant data).
>
> I had also prepared a supplementary change (not yet posted), which
> enables the pipe to auto-leak at the consumers end, whenever a pipe is
> full. When a pipe is full, the size of the unwritten data is first read
> to make room for the repeated write. This way dropping would be
> replaced by leaking and the pipe always contains latest data
> independent of when a real consumer reader get started, stopped or
> replaced, ... However, i am not sure how to preserve content format,
> if necessary.
>
> I thought at some point, that this second change might be sufficient,
> however it makes sense (in terms of pipe content relevance and data
> processing time) to drain the whole pipe upon each resume from suspend.
Thanks for the explanation, makes sense. Can you add the information to
the commit message as well?
--
Tanu
https://liberapay.com/tanuk
https://www.patreon.com/tanuk
More information about the pulseaudio-discuss
mailing list