http://bugs.winehq.org/show_bug.cgi?id=14717
--- Comment #178 from Alexey Loukianov mooroon2@mail.ru 2011-10-19 09:04:35 CDT --- (In reply to comment #176)
Indeed, no resampler is needed in wine, and no software mixing layer, either. This is the job of the underlying platform such as ALSA. Any desktop audio platform that doesn't provide these capabilities is nowadays considered broken, or can be augmented with pulseaudio or ESD, and thus wine should not cater for it. Yes, this will kill direct output to "hw:X" ALSA devices.
Em, correct me if I'm wrong, but the last time I had been looking into Wine sources there were function called something like DSOUND_MixToTemporary which contained zero-order hold resampler implemented as a part of it. If I got your idea right you propose to get rid of it altogether and simply rely of the mixing done upstream at the ALSA plugins level (or ever further upstream at pulse). I'm not aware about capabilities of the older version of OSS (v3) but what if it is not capable of resampling stream to a desired frequency (and to do the mixing of multiple streams)? What about OSS v4 and Core Audio, do they provide the required functionality?
Legacy support also is a concern here. PulseAudio in unavailable or is in a very buggy state on older long-term-support distros like RHEL5. Implementing Wine in a way that those systems would be left behind might be an issue.
Another thing that might be con for having resampler in Wine is that it would allow to more closely mimic Windows behavior, including latency concerns, buffer roll-backs, advertised buffer draw rate which is many cases is happening in chunks holding about 10ms of audio data, e.t.c.
Actually the question about should there be resampler in wine or not is a matter of drawbacks. We need someone who is well-aware of current Wine sound-related codebase, who knows all the details about ALSA/OSSv3/OSSv4/CoreAudio capabilities and intimate details about how does this things work on different Windows versions to judge the maintenance burden and possible drawback if Wine would go either ways. Andrew seems to be just the right person to do it - he knows a lot, he had done a lot of work on Wine like successfully reimplementing winmm over mmdevapi, e.t.c., e.t.c.
In case someone would happen to ask me, personally I "feel" that having good resampler in wine might be a better idea than to relying on upstream subsystems. But I hadn't had any experience with low-level Windows sound programming (except for ASIO but that's totally another beast) for last five years so my "feelings" might be safely ignored.