On Jul 2, 2014, at 1:13 PM, Ken Thomases wrote:
My second thought is that's exactly what the GetBuffer() / ReleaseBuffer() scheme is about. I think that Core Audio should map pretty cleanly to DirectSound. It should not be necessary to use a wrap buffer or a temp buffer. It should be possible to preallocate all buffers at the right size during Initialize (you can query the device, audio unit, and converter for the information necessary to compute the buffer size). We should be able to return the actual "device" period. It should be possible to avoid copying audio data.
Just to be clear, I'm not suggesting that an overhaul on these lines must be done before anything can get done. I do think it's important to get the resampling operation to happen outside of the spin lock. The above is one possible approach to achieving that.
-Ken