Hi Stefan,

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)
Wrong :)

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.

Cheers,
Maarten.


Reply via email to