After giving up so nicely on WASAPI and picking up a new X-Fi card from Creative with XRAM I've managed to start work on version 0.9 of the OpenAL plugin instead.
I'm not sure how XRAM will work as it's likely I'll have to buffer the entire stream and then move it into XRAM from RAM rather than streaming it in bits. On of the things I've already done today is setup a new Subversion branch for zero-copy buffering. What this means is that I no longer do my own buffering in the plugin, as data comes in we send it straight off to OpenAL. The benefit is rather obvious - we're not moving memory around or working out how much to copy and where to!
This also removes the need for internal buffers and the temporary buffer and pointer arithmetic which although worked is slower than just giving it to OpenAL!
In conclusion - gutting the source code to a minimum for speed and trying to see what we can do with XRAM. A fun weekend indeed!
Ok it's Sunday and the XRAM & buffering update is done and works! It requires a bit more polishing bit you can expect a beta tomorrow or midweek. Right now although XRAM is in there I'm not entirely sure of it's advantages as Winamp is kinda streamed (in <8KB blocks) so I may buffer that up internally into, say, 8MB blocks and put that into XRAM to optimise for latency.