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&#39;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&#39;m wrong) it&#39;s not possible to build PulseAudio modules with the usual headers provided for PulseAudio applications, we can&#39;t simply merge it with Xen&#39;s build system without the whole. We&#39;d like to be able to build something like a pulseaudio-modules-xen package for a few common distro&#39;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&#39;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&#39;m not even close to a sound programming expert), but if it&#39;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&#39;s a design document that describes the driver&#39;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>