http://bugs.winehq.org/show_bug.cgi?id=15060
Jörg Höhle hoehle@users.sourceforge.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hoehle@users.sourceforge.ne | |t
--- Comment #6 from Jörg Höhle hoehle@users.sourceforge.net 2009-10-12 11:16:58 --- Your invocation of the MCI SET command in comment #0 seems bogus to me. Did you check the return code? Correct code should be dwret = mciSendCommand(wDeviceID, MCI_SET, MCI_WAVE_SET_FORMATTAG | MCI_WAVE_SET_xyz, &mciSetParmsStruct)
BTW, I recently came across http://support.microsoft.com/?scid=kb;en-us;152180 which asks to set all wave format parameters in a single SendCommand. (oops, you found that document long before me, yet the code in comment #3 does not follow this advice).
Anyway, my own bug #20232, starting from the same MSDN example as you, looks much like a duplicate of yours -- I'm confused didn't see yours earlier. To separate I propose: - to leave mine as is, i.e. about being able to record&play; - to focus on the SET params functionality here.
The problem with SET is that Wine calls waveOpen at MCIOpen time, fixing all wave format parameters. Changing settings afterwards would mean to close and reopen the wave device (alas, there's not SetFormat in winmm), or not open it at all at MCIOpen time and delay opening until the RECORD command.
BTW, the 44000Hz you saw is from mciwave.c, as I mention in bug #20232.
Nor can it be played back with aplay, totem or xine.
That may also be explained in bug #20232, comment #1: Please check if the length of the chunk named "data" is 00000000, which is incorrect. Finally, if your interest in saving only, remove the play command from your example, as it causes additional trouble, which bug #20232 is all about.