http://bugs.winehq.org/show_bug.cgi?id=19901
Summary: Burg Schreckenstein: OSS HW emulation plays too slow and crashes Product: Wine Version: 1.1.28 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-dsound AssignedTo: wine-bugs@winehq.org ReportedBy: hoehle@users.sourceforge.net
Often enough, an app works better in HW emulation mode than with acceleration. With Burg Schreckenstein, the opposite is true: emulation crashes.
OSS HW: intro music and game play are fine! OSS emul: music too slow (125 seconds instead of 63); assertion failure during game play: err:dsound:DSOUND_MixInBuffer length not a multiple of block size, len = 2 or 130, block size = 4 mixer.c:502: DSOUND_MixInBuffer: Assertion `dsb->buf_mixpos + len <= dsb->tmp_buffer_len' failed.
ALSA emul: like OSS emul ALSA HW: no sound at all, subtitles display too short to be readable, log: fixme:dsound:DSOUND_PerformMix Buffering too much! (20480, 0, 0, 4096) [N times]
Incidentally, the MacOS with its CoreAudio driver behaves like OSS HW emulation (same 2 symptoms). So fixing this bug might make that app playable on MacOS (as would implementing HW acceleration for Mac OSX, which is probably harder).
Using Ubuntu Intrepid without PulseAudio, with Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03).
+wave,+dsound,+winmm,+mmaux,+driver,+mixer,+tid logs of both OSS cases are attached. Hopefully the comparison side by side will reveal the fault in the logic that leads to the block size error and subsequent assertion violation. Indeed, nAvgBytesPerSec and nBlockAlign are different, but why?