http://bugs.winehq.org/show_bug.cgi?id=21655
--- Comment #2 from Jörg Höhle hoehle@users.sourceforge.net 2011-06-13 15:49:46 CDT --- As of wine-1.3.21, the *interactive* test ../../../tools/runtest -i -P wine -M dsound.dll -T ../../.. -p dsound_test.exe.so dsound8.c hangs after the first time IEEE_FLOAT is used:
dsound8.c:629: Testing a primary buffer at 8000x24x2 (fmt=1) with a secondary buffer at 11025x16x2 ds3d8.c:337: Playing 1 second 440Hz tone at 11025x16x2 ds3d8.c:522: Test failed: The sound played for 874 ms instead of 1000 ms dsound8.c:629: Testing a primary buffer at 8000x32x1 (fmt=1) with a secondary buffer at 11025x16x2 ds3d8.c:337: Playing 1 second 440Hz tone at 11025x16x2 ds3d8.c:522: Test failed: The sound played for 874 ms instead of 1000 ms dsound8.c:629: Testing a primary buffer at 8000x32x1 (fmt=3) with a secondary buffer at 11025x16x2 ds3d8.c:337: Playing 1 second 440Hz tone at 11025x16x2
Prior to hanging, when 24 bit is tried, plain noise is produced at 8000 Hz, higher frequencies work with 24 bit samples. Commenting out solely the 32 bit tests allows the test to proceed to the end (with the same 875 ms failures as originally reported), so it's solely the 32bit samples that cause trouble.
It's really the 32bit IEEE_FLOAT that hangs (fmt=3). 32 bit integer samples play noise. Note that winecoreaudio.drv/audio.c was never updated to support IEEE_FLOAT, but I don't know if that's related.