<div dir="auto"><div><br><div class="gmail_extra"><br><div class="gmail_quote">Le 11 déc. 2017 6:18 PM, "Charlie Laub" <<a href="mailto:charleslaub@sbcglobal.net">charleslaub@sbcglobal.net</a>> a écrit :<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72"><div class="m_9034612800434417672WordSection1"><p style="margin:0in;margin-bottom:.0001pt">I have written a text-based, interactive gstreamer application to stream audio across my LAN from a "music server" computer to multiple "client" computers. More info and code here:<u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt"><a href="http://audio.claub.net/GSASysCon.html" target="_blank">http://audio.claub.net/<wbr>GSASysCon.html</a><u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt">My question is about the client side of this system. <u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt"><u></u> <u></u></p><p style="margin:0in;margin-bottom:.0001pt">The client computers are located in/at/near active loudspeakers and I have been passing gstreamer’s audio output, via an alsa loopback, to another program (ecasound) that performs routing and implements LADSPA plugins. This comprises audio DSP and the crossover for the loudspeaker system. <u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt"><u></u> <u></u></p><p style="margin:0in;margin-bottom:.0001pt">When testing some recent single board computers, the OS releases came without the alsa loopback. Despite trying other ways to pass audio between gstreamer and ecasound on the client I have not been able to duplicate the low-latency performance of the loopback, which has created a roadblock for me. But just recently I learned that gstreamer is able to implement LADSPA plugins, including LADSPA plugins that are external to gstreamer (I wrote my own). This means that I could possibly implement the “DSP crossover” functionality right in gstreamer itself and I would no longer need to rely on the alsa loopback (or ecasound). To do this I need to duplicate ecasound’s routing functions, and its time alignment of the various channels obtained by splitting the input. <u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt"><u></u> <u></u></p><p style="margin:0in;margin-bottom:.0001pt">Currently in ecasound, each input channel (e.g. mono or L&R stereo) is duplicated N times (once per band of the loudspeaker crossover system), a varying number of LADSPA filters are applied to each channel. There may be other operations like merging/mxing channels, etc. At the end of the process all channels are output via a multichannel DAC. I understand that in gstreamer I can use 'deinterleave' and 'tee' to copy/split the input channels. My concern is that varying latency will result depending on how many LADSPA filters are applied to each of the N channels. Each LADSPA filter has some finite processing overhead and this overhead varies by filter type and will change depending on the computing hardware employed. <u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt"><u></u> <u></u></p><p style="margin:0in;margin-bottom:.0001pt">How do I properly interleave the channels back together after applying an arbitrary number of LADSPA filters and other operations to each channel so that the timing is correct? Should I employ a multiqueue just prior to interleave? What other approaches are needed so that the N channels remain properly synchronized?</p></div></div></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">As long as the segment and timestamp are carried (should be handled by the ladspa wrapper plugin) you can later recombine the output with audiointerleave a rewrite of interleave that do proper synchronization. Note that ladspa (same for lv2) wrappers might not cover 100% of the existing filters, I would recommend to tests your filters individually first to make sure they work. If not, ping us again ;-)</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72"><div class="m_9034612800434417672WordSection1"><p style="margin:0in;margin-bottom:.0001pt"><u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt"><u></u> <u></u></p><p style="margin:0in;margin-bottom:.0001pt">If I am able to migrate from alsa_loopback+ecasound to running everything via gstreamer that will streamline and improve the application in many ways. Any advice and guidance to that end is appreciated. <font color="#888888"><u></u><u></u></font></p><font color="#888888"><p style="margin:0in;margin-bottom:.0001pt"><u></u> <u></u></p><p style="margin:0in;margin-bottom:.0001pt">-Charlie<u></u><u></u></p><p style="margin:0in;margin-bottom:.0001pt"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p></font></div></div><br>______________________________<wbr>_________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.<wbr>freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/gstreamer-<wbr>devel</a><br>
<br></blockquote></div><br></div></div></div>