Hello PulseAudio people!<div><br></div><div>As part of a Google Summer of code project for Xen during this summer, I wrote a PulseAudio module that acts as the frontend part of a Xen paravirtualized audio driver. Basically what it does is push audio frames over a ring buffer placed in memory shared between different Xen domains, using Xen's interrupt-like events to notify the playback backend that audio data is available. </div>
<div><br></div><div>The driver right now works well and we are thinking of the best possible way to distribute it. Since (and correct me if I'm wrong) it's not possible to build PulseAudio modules with the usual headers provided for PulseAudio applications, we can't simply merge it with Xen's build system without the whole. We'd like to be able to build something like a pulseaudio-modules-xen package for a few common distro's, but in the most (reasonably) maintenance-free way possible.</div>
<div><br></div><div>So, what would it take to check this into PulseAudio? (and build only when the Xen headers are found)</div><div><br></div><div><div>You can find the code here:</div><div><br></div><div><a href="http://code.google.com/p/xen-audio/source/browse/#hg/frontend">http://code.google.com/p/xen-audio/source/browse/#hg/frontend</a></div>
<div><div>(ignore the xenpv-source module, doesn't really work yet)</div></div></div><div><br></div><div>The playback module was based on pipe-sink. There are definitely some mistakes in there (I'm not even close to a sound programming expert), but if it's an issue of code quality I could clean it up to an acceptable state.</div>
<div><br></div><div>Thanks,</div><div>Giorgos</div><div><br></div><div>There's a design document that describes the driver's design in detail here:</div><div><a href="https://docs.google.com/document/d/1rS8afKlCbiVAOdKYCHfRPn6ihkSnl7PZw1QMoOmC9b4">https://docs.google.com/document/d/1rS8afKlCbiVAOdKYCHfRPn6ihkSnl7PZw1QMoOmC9b4</a></div>
<div><br></div><div>For more info on how paravirtualized drivers in general work in Xen see:</div><div><a href="http://wiki.xen.org/xenwiki/XenSplitDrivers">http://wiki.xen.org/xenwiki/XenSplitDrivers</a></div><div><br></div>
<div><br></div>