<span class="sg"></span><span class="sg">Marc-André,</span><br><br><br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Have you been working on a fixed point resampling/mixing patch already?
</blockquote><div><br>&nbsp;</div>I&#39;ve actually been working on pulseaudio a lot lately.&nbsp;&nbsp; Although nothing is quite ready for patches yet, here a sample of what I&#39;ve been working on:<br><br>libspeex resampling patch.&nbsp;&nbsp; I have this working in certain cases.&nbsp; Most notably the embedded case, which is S16_LE audio in 1 or 2 channels.&nbsp;&nbsp; I haven&#39;t really followed up with the libspeex guys, but I was going to wait for the resampling code API to stabilize in libspeex and be released, before I added a patch with a dependency to it.&nbsp; 
<br><br>software volume/mixing (sample-utils.c)&nbsp;&nbsp; I&#39;ve been looking and thinking about how to rewrite this for efficiency.&nbsp; I found on my embedded device CPU Utilization for from 5% to 100% whenever I have two streams with software volumes.&nbsp;&nbsp; As a temporary measure for myself, my embedded platform has some proprietary audio mixing code I am using, but this code should be cleaned up a bit.
<br><br>Audio Class Policy,&nbsp; this is really the big one and I&#39;m sure you&#39;ll be interested in with the gsmartmix stuff.&nbsp;&nbsp; I&#39;ve added the concept of audio class to all the internal streams in pulseaudio and have a module that arbitrates between streams actively preempting streams, changing volume and such.&nbsp;&nbsp; It is working pretty well right now.&nbsp;&nbsp; I can have my music turn down when sound events happen that need my attention, I can block all audio when a VOIP call comes in, etc...&nbsp; 
<br><br>Keith Preston<br></div><br>