On 02/11/2018 12:43 AM, Georg Chini wrote: > 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. > I seen the last patches for pipe-sink module. I think there is no reason to generate silence in pipe-source module with system clock. The source outputs will do read zeros (resample, convert) - just a waste of cpu time. >> >> 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. I'll make a v3 version with option to enable autosuspend behaviour