http://bugs.winehq.org/show_bug.cgi?id=28723
--- Comment #89 from Jörg Höhle hoehle@users.sourceforge.net 2011-12-15 16:32:38 CST --- Created attachment 37981 --> http://bugs.winehq.org/attachment.cgi?id=37981 Compute mmdevapi duration & period limits
This is the 0000 patch to compute period and duration limits like native does. I'm going to submit this tomorrow (adding OSS and MacOS). It will end the if(!period) issue. It requires a rebase & editing of the remaining 3 patches.
Alexey, I'd be pleased if you could grab all my mmdevapi .exe on testbot and run them on your HDA machine with both MS OS (= with and without the alignment restriction). The good news is that I now have a good understanding of native's buffer and period size (cf. the patch in testbot), when there's no alignment restriction:
bufsize = MulDiv(duration, pwfx->nSamplesPerSec, 10000000); fragment = MulDiv(period, pwfx->nSamplesPerSec, 10000000); parts = MulDiv(bufsize, 1, fragment); // not (duration, 1, period) if(mode==AUDCLNT_SHAREMODE_SHARED) ok(gbsize == bufsize, ... else ok(gbsize == (parts < 8 ? 8 : parts) * fragment, ...