[pulseaudio-discuss] [PATCH v2] pipe-source: suspend source when no writers connected to fifo

Georg Chini georg at chini.tk
Sat Feb 10 21:43:23 UTC 2018

On 10.02.2018 22:25, Raman Shuishniou wrote:
> 10.02.2018 23:59, Georg Chini пишет:
>> On 08.02.2018 17:58, Raman Shyshniou wrote:
>>>      Make pipe-source suspended if all writers closed fifo.
>>>      Source will be automatically unsuspended if any data will
>>>      be written to pipe and suspended again when last writer
>>>      closed fifo.
>>> ---
>>>   src/modules/module-pipe-source.c | 114 
>>> +++++++++++++++++++++++++++++++++++++--
>>>   1 file changed, 109 insertions(+), 5 deletions(-)
>> What is the motivation/use case for the patch? Normally, if there
>> are no writers, the source should deliver silence like any other
>> source without input signal.
> pipe-source module can't generate silence if no writers connected
> because it has no clock. Aactually incoming data has some clock, but
> not pipe-source itself. Use the system clock to generate silence
> is a bad idea because it may differ from incoming data clock.

Take a look at the recent patches for pipe-sink that introduced using
system-clock timing. I guess something similar should be possible
for the pipe-source. Why would it be a problem, if the timing of the
silence is slightly different from that of the writer? Different writers
may have different timing anyway, so if one writer disconnects
and another connects, timing may change.
module-loopback is able to deal with sample rate changes on the
input side and will adapt the sample rate of the output side so that
it matches the incoming rate to keep a constant latency.

> For example the loopback module connected to pipe-source without
> writers just spams messages like this:
> [alsa-sink-USB Audio] module-loopback.c: Could not peek into queue
> I can make autosuspend behaviour optional.
Making it optional is a good idea in any case.

More information about the pulseaudio-discuss mailing list