Text původního návrhu (14. 7. 2016):
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.
Prostě to neumí a okecává to. Jiné projekty zvládají podporovat alsu správně.
Nicméně pravdou je, že podpora PA je podstatně jednodušší než správná podpora alsy. Mimochodem zjednodušení zvukového API pro vývojáře byl jedním z cílů LP, když PA designoval http://0pointer.de/blog/projects/guide-to-sound-apis.html
Tak v tom případě bych jako uživatel FF uvítal, pokud by své omezené zdroje nevěnovali na vývoj různých sociálních vlastností, čteček PDF a podobných kojotin, ale třeba na to, aby lépe fungovala akcelerace přes GPU apod.
Aha, tyhle věci nemůžou hipsteři nadatlovat v JS a mítingovat nad nima ve fairtrade kavárně, tak nic.
Naprosto rozumne a racionalni rozhodnuti. Odhadem tak 99% distribuci stejne PA ma, je mnohem jednodussi pro programatory, takze neni duvod proc to nepouzivat. Samozrejme i PA melo (a obcas jeste i ma) sve problemy, ale nic zasadniho - o tom konec koncu svedci fakt, kolik distribuci PA ma defaultne a funguje :) A proti tomu, co musel clovek obcas delat za totalni opicarny, aby ALSA fungovala jak ma se vsemi aplikacemi...
No a pokud se to nekomu nelibi, tak muze zmenit distribuci, nebo se stat spravcem ALSA backendu v Mozille, urcite to oceni :)
A podpora 5.1 zvuku rozhodne smysl v FF ma, urcite vetsi nez podpora dalsiho lowlevel backendu(a vubec, proc na Linuxu nepodporovat i OSS?).
To by me zajimalo, proc by meli podporovat nakej linux, kdyz ho na desktopu nikdo nepouziva a na serverech prozmenu nikdo* nema gui....
*Teda zatim, pocitam ze Xka se brzo stanou neoddelitelnou soucasti systemd.
Pricemz zajimavy na tom je i to, ze naopak vyvoj v aplikacich ktery sou narocny na vykon (coz sou ty js srackomety na webu cim dal vic) se ubira prave k lowlevel api. Njn, soudruzi z Moziily musej bejt neco extra, at to stoji co to stoji ...
Mimo jako obvykle, resp. pokus o prekrucovani :-)
Proc podporuji Linux - protoze v absolutnich cislech jsou to zajimava cisla. Jsou v absolutnich cislech zajimavy uzivatele pouzivajici minoritni operacni system a na nem minoritni ALSA only sound system? Asi tezko :)
Jinak k lowlevel API se nic moc neubira, spis naopak. Pletes si pojmy a dojmy. Lowlevel api se pouziva tam, kde je uzke hrdlo v CPU/API - napr. Vulkan ci DX12 - je uzke hrdlo browseru jeho audio api ? :) Tezko. A neni bez zajimavosti, ze spoustu funkcionality, kterou nabizi kombinace PA + ALSA (a nenabizi ALSA) jine operacni systemy maji v svem zakladnim lowlevel API :-D
Zvlastni, me u vsech aplikaci s audio vstupem/vystupem na ALSA funguje full-duplex, 5.1 i 7.1, up- i downmixing.
Kvuli jejich neschopnosti, abych instaloval pulseaudio a patlal se s nastavenim aby fungovalo jen jako proxy, bez startu demona, ktery celkem zere zdroje. Zvlast poznat na 4 roky starem notebooku pri stejne samplovaci kvalite se to skube a na ciste alse nikoliv.
To uz radsi budu exkluzivne pouzivat Chromium, ktery bez PA funguje a ALSA backend vypada ok.
Nepochopil jsi, co tim chteli rict - nikdo netvrdil, ze full duplex, 5.1 v ALSA nefunguje (to by bylo minimalne nemozne - kdyz PA hraje pres ALSU). Pointa je, ze jejich ALSA backend tyhle veci neumel, nikdo ho uz neudrzoval, byl zabuggovany. A misto spravovani ALSA backendu ho nahradili PA backendem, ktery jak tvrdi vyvojari byl mnohem jednodussi na napsani a netrpi vsemi neduhy ALSA backendu, prave proto, ze PA je mnohem jednodussi API pro vyvojare na pouziti.
A komu se nelibi rozhodnuti vyvojaru, at klidne pouziva Chrome nebo Links, je to uplne jedno. Nebo at se prihlasi jako maintainer toho ALSA backendu a fixne ho. Povinnosti mozilly to fakt neni, aby FF fungoval na kazde nestandardni konfiguraci (a telemetrie FF, majoritni distribuce, potvrzuji dostupnost PA)
Zajímalo by mě, co se "škubalo" na 4 roky starém ntb. 10 let starý HW zvládá chod PA úplně v pohodě, protože PA nemá výrazně větší nároky než alsa. Pokud musí resamplovat, používá úplně stejné knihovny jako alsí plugin rate.
Mimochodem v PA 7 je již podpora libsoxr, tedy daleko nejúspornější resampling knihovny. V rate pluginu alsy nikdy nebude, protože by se musel dost výrazně přepsat, aby s ní pracoval korektně http://blog.ivitera.com/pavel/?p=335 a nezahazoval vzorky. A mimochodem podruhé - alsí rate plugin pracuje jen v 16 bitech a sotva kdy tam někdo dodělá podporu pro 24 bitů. Měl jsem to již hotové, ale vyžaduje to float a správce alsy (správně) trval na verzi podporující i ne-float CPUs, což už bylo nad mé síly... A právě proto alsa zůstane low-level interfacem, zatímco user-space "vychytávky" jdou všechny do PA a alsa jim poskytuje nová API do driverů.