On Mon, Dec 03, 2012 at 02:59:07PM +0100, Joerg-Cyril.Hoehle@t-systems.com wrote:
BTW, I still believe that mixing and resampling would find their best place in mmdevapi, not DSound.
Perhaps, but that's provably not what Windows does. Given a format with: dwChannelMask = (CHANNEL_BACK_LEFT | CHANNEL_BACK_RIGHT) and a physical speaker setup containing only: (CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT) dsound and mmdevapi behave differently. mmdevapi maps the BACK_X channel entirely out of the respective FRONT_X speaker. dsound splits about 2/3 of the matching channel, and 1/3 out of the other FRONT channel, so you hear both signals out of both speakers.
I think the best solution is to have dsound call into the system openal to perform multichannel mixing and 3D processing. We can start by getting dsound to have rudimentary support for those features, then plug openal in as the last step.
Andrew