Wine sound discussion summary
m.b.lankhorst at gmail.com
Tue Dec 8 10:25:48 CST 2009
Stefan Dösinger schreef:
> Am 08.12.2009 um 13:06 schrieb Robert Reif:
>> Yes, a single ring buffer for all the software mixed direct
>> sound buffers. A good driver implementation would
>> have a ring buffer for every direct sound buffer. Therefore
>> no requirement for any software mixing. That path is in
>> the direct sound dll now but is not used because no
>> driver supports it. In fact, when you rewrite the dll, you
>> should be removing all existing code paths excepts this one.
> Maarten please correct me if I am wrong, but I think the reason why the Alsa driver does its own mixing is because Alsa does sample rate and similar conversions only when NOT using the mmap API. So you either get Alsa-side mixing or fast access using mmap. Back it the days it was considered that mixing ourselves and then using mmap was faster than not using mmap and then let Alsa mix things(which happens in Software as well in most cases)
Alsa doesn't allow you to specify buffer sizes, or granularity.
Furthermore rate resampling in alsa results in horrible things
happening, you cannot set a alsa buffer in looping mode reliably, and if
you could you cannot randomly access its memory, furthermore buffer
notications don't work, and you cannot set per stream volume.. I
probably missed a few other reasons but those are the biggest ones.
More information about the wine-devel