<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> </div>I've actually been working on pulseaudio a lot lately. Although nothing is quite ready for patches yet, here a sample of what I've been working on:<br><br>libspeex resampling patch. I have this working in certain cases. Most notably the embedded case, which is S16_LE audio in 1 or 2 channels. I haven'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.
<br><br>software volume/mixing (sample-utils.c) I've been looking and thinking about how to rewrite this for efficiency. I found on my embedded device CPU Utilization for from 5% to 100% whenever I have two streams with software volumes. 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, this is really the big one and I'm sure you'll be interested in with the gsmartmix stuff. I'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. It is working pretty well right now. 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...
<br><br>Keith Preston<br></div><br>