Originally posted by Rubble Monkey
View Post
Alsa can manage multiple channel cards via alsamixer, but it can be pretty clunky.
The managing multiple inputs and outputs is one thing that Pulse does very right. ALSA, to my knowledge, is setup to have ONE input and ONE output and -those will not change on the fly.- Meanwhile Pulse's approach is "Everything comes into Pulse, then I check to see where it should go." You can even change an application's output during playback.
Multiple cards.. see above. Switching playback and input on the fly is something Pulse gets right.
I can't speak about handling resampling, because I'm not sure what Parent's comment was referring to. Both Alsa and pulse can do resampling though, Alsa doesn't do it "natively" though, it requires plugins.
Alsa does have dmix, which supports hardware level mixing. Pulse does not support hardware level mixing because a lot of cards don't even have hardware level mixing anymore. Note: I said a lot, SOME do, but a lot don't.
Pulse, in my experience, is very good about hotplugging. Alsa I had to setup per-device udev rules for. I'll take pulse.
No problems with Pulse and bluetooth. Debian says: https://wiki.debian.org/Bluetooth/Alsa that bluetooth is annoying with pure alsa.
Timing and latency... This is where I do have a problem with Pulse. Pulse has gotten better over the years, but they still have a latency problem from time to time. Its not constant, and it is perfectly fine 90% of the time. But every once and awhile, you'll notice a delay.
ALSA's drivers do have some pretty varied quality. This has gotten better since they began to unify a lot of them, but when Pulse came out.. oh the bugs.
OSS is all over the place. See: https://wiki.archlinux.org/index.php...sons_with_ALSA
I looked up Bluetooth specifically; FreeBSD probably has the most 'complete' OSS4 implementation, and the thread that I found (from 2013) said "There is no support for Bluetooth audio at this time." OSS does do mixing and resampling, AFAIK, but it does it in kernel, with decimals, and doing decimal math in kernel is gigantic "no no" in Linux.
Comment