Maarten,
I looked at part of these two patches about winmm->mmdevapi bridge and they looked very clean to me.
+ caps.dwSupport = WAVECAPS_SAMPLEACCURATE|WAVECAPS_LRVOLUME|WAVECAPS_DIRECTSOUND; AFAIK WAVECAPS_LRVOLUME never occurs alone, _VOLUME is missing.
+ if (wfx->wFormatTag == WAVE_FORMAT_EXTENSIBLE) + extra = sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX); + else + extra = 0; This seems to depend on some assumption that IAudioClient_IsFormatSupported will reject anything but WAVE_FORMAT_EXTENSIBLE and WAVE_FORMAT_PCM. You may not want to not depend on this.
+ wwo->wfx->nBlockAlign = wfx->nChannels*wfx->wBitsPerSample/8; + wwo->wfx->nAvgBytesPerSec = wfx->nSamplesPerSec*wfx->nBlockAlign; This only applies to WAVE_FORMAT_PCM (and PCM encapsulated in EXTENSIBLE).
I've attached tests that you may want to try out. I've never submitted them because they cause weird behaviour in Wine (both incorrect duration and frequencies). On native, they work fine, which shows that native ignores broken nAvgBytesPerSec and nBlockAlign.
How does your OpenAL bridge behave with them? You need WINETEST_INTERACTIVE=1 because it's essential to hear the sound.
Regards, Jörg Höhle