Supporting two separate audio backends in Linux is duplicated effort.
I took over the platform media playback team at Mozilla a little over 3 years ago. At that point we only supported WebM/VP8/Vorbis, Ogg/Theora/Vorbis and Wave as well as MP3 on Windows and some additional codecs including MP4/H.264/AAC on a small number of Android phones. At that time most media in the browser ran in Flash.
Since then we’ve added words like MP3, MP4, H.264, VP9, Opus, AAC, HE-AAC, MSE and EME to our vocabulary. DASH and HLS are handled by site Javascript using MSE. A massive amount of effort has gone into making everything parallel so we can get as many pixels to the screen as possible. We’re working on platform specific performance improvements on Windows, Linux and Mac. We’re also doing some work to protect ourselves against driver crashes on Windows and Android.
We are seeing an explosion of interest in HTML5 video and the accompanying audio is going through libcubeb, our audio backend. We’ve added low latency support to libcubeb for WebAudio and full duplex support so we can use it directly for microphone input for WebRTC.
Our official Firefox builds on Linux support both PulseAudio and ALSA. There are a number of additional contributed backends that can be turned on at compile time, although contribution towards long-term maintenance and matching feature parity with the actively developed backends has been low. On Linux, we actively maintain the PulseAudio backend but we also approach the PulseAudio developers when we see issues in PulseAudio. The PulseAudio developers are generally good to work with.
The most problematic backend across all platforms is ALSA. It is also missing full duplex support. We are intending to add multichannel (5.1) support across all platforms and the ones that don’t make the cut will be the ALSA backend and the WinMM backend used on Windows XP.
Our ALSA backend has fallen behind in features, it is buggy and difficult to fix. PulseAudio is contrastingly low maintenance. I propose discontinuing support for ALSA in our official builds and moving it to off-by-default in our official builds.
Leaving all the ALSA code in tree gives people the opportunity to continue maintaining the ALSA backend. Re-enabling it would require bringing it up to the same standard as other backends, not only in terms of current state but also in terms of consistency of contribution.
As a long time Linux user, I want to get the most value out of our efforts on Linux. I can do that by focusing our efforts on the things that will have the greatest impact. Sometimes that requires taking a step back and deciding to do one thing well instead of two things poorly.
Just to be clear, I’m proposing we stop spending time on ALSA so we can spend that time on adding 5.1 audio support to our PulseAudio backend.
Коротко на русском: Две подсистемы звука — две проблемы. В ALSA отсутствует полнодуплексная поддержка. Мы хотим добавить многоканальную 5.1 поддержку на всех платформах, а ALSA является наиболее проблематичным бэкэндом, в нем мало фич и его сложно исправлять. PulseAudio же гораздо легче обслуживать, поэтому мы исключаяем ALSA из официальной сборки, но оставляем ее в качестве опции для компиляции. Я считаю, что мы должны прекратить тратить время на ALSA, чтобы потратить его на поддержку 5.1 в PulseAudio. Но ALSA может вернутся в основную ветку, если его доведут до вменяемой поддержки и функциональности.(c)
Перемещено Shaman007 из linux-general