http://bugs.winehq.org/show_bug.cgi?id=28093
Jörg Höhle hoehle@users.sourceforge.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |major
--- Comment #1 from Jörg Höhle hoehle@users.sourceforge.net 2011-09-19 03:40:45 CDT --- This is a major design bug that affects many winmm applications.
It explains why winecfg's test sound clicks several times and does not produce the expected sound: underruns occur because winmm plays pong with a single 100ms buffer!
DSound apps seem not affected because they use very small writes w.r.t. GetBufferSize, so several buffers are in use.
Solving this presumably mean the end to the current nice & (too) simple code in winecoreaudio and require managing a buffer like in winealsa and wineoss.
Noteworthy: While winecfg's 44100Hz IMA_ADPCM test sound causes audible underruns, another at 11025Hz does not. This means that the CoreAudio buffer callbacks are invoked early enough for the underrun not to happen in the 11025Hz case, i.e. before the buffer's last sample is played to the speaker. Presumably CoreAudio's resampler introduces sufficient latency and buffering to prevent an audible underrun. Nevertheless, the gap is tiny: my log shows the callback happens within the last 3ms of that 100ms buffer.