Firefox 116 Should Have Experimental PipeWire Camera Support
phoronix.com
phoronix.com
For context as to why it's not getting hate: the alternative is Pulseaudio (another RH project, headed by Poettering who is now at Microsoft incidentally) which was eggergiously difficult to configure, heavy and seemed to dominate any system that tried to interface with it even slightly.
The same exact concerns that people levy towards systemd and GNOME.
Pipewire is light, interfaces with programs on their terms and seems to follow the philosophy that "it's just a tool" meaning that it should not be something you have to care about as an application developer or as a user.
I have a lot of respect for that.
I can't imagine giving better praise for a piece of software.
Honestly, it fell under "just worked" for me. One time I had been reading about PA using too much CPU, so I checked and indeed it was using a reasonable amount of processing power "just" to feed data from the media player to ALSA. So I tried turning it off, and the media player used more CPU to play audio direct to ALSA without PA than both the media player and PA running together.
I never used onboard audio, always had some higher end card with more resolution than a bog standard on board audio chip, and PA struggled to deal with them for a long time.
Also if the daemon crashed or needed a restart, it was a dance of restarting with exacting order and other details.
Pipewire is just invisible. It works the way it should and doesn't bend the system to fit in.
Pipewire also doesn't need to bend the system to fit in, because the system is already the right shape.
(And I'm perennially annoyed that my work Mac won't upmix to 5.1. I've got the speakers, why only use two of them?)
On the other hand, I used multichannel audio since the last 20 years or so, on Linux, and it always worked with what I have. First with Live and Audigy, then with an Asus card.
No, pipewire is much more gentle on how it handles and takes the streams from other applications. It doesn't make an heavy-handed attempt to make it is also replacing ALSA and drivers at the same time. It's a much thinner layer and works what it should do. Most importantly it doesn't alter the streams it goes through it.
(Sorry, but upmixing a good stereo sound source to 5.1 is just butchering the sound. The resulting sound stage is an abomination of what it should be. For a musically inclined person (read: ex-orchestra player), it's just torture. It's so wrong on so many levels.)
There's a popular narrative of "linux enthusiasts hate anything that's new"; you hear this a lot from people defending Pulseaudio and SystemD from "the trolls". It was never true. People love new things when the new thing solves their problems, and hate the new thing when it introduces new problems. The haters narrative is little more than cope; a way for the authors of buggy software to rationalize the negative response to their software.
An actual OS that constitutes a "good audio stack" would be able to provide hard realtime (i.e. formally guaranteed maximum latencies), like seL4 does.
Linux-rt is just probabilistic. It behaves much better than mainline, but latency could spike anytime.
More specifically, it's fully compatible with PulseAudio/JACK/ALSA and is capable of completely replacing them while still providing the benefits of what it's replacing. It's a complete joy to work with too, especially if you've ever experienced the nightmare that is getting your pro-audio JACK setup working nicely with pulse.
After restarting Firefox, visit the Mozilla GUM test page https://mozilla.github.io/webrtc-landing/gum_test.html and you should see a different popup asking for permission.
Doesn't Firefox just chuck video at the OS, and the OS picks it up via pipewire/other and displays it on screen?
I think this is also key for getting libcamera in the mix.
And pipewire is phenomenal, I assume this opens the door for video transformations, a+v effects, etc. I'm quite excited about it.
People have been using a out of tree loopback video kernel driver for these things which is hard to use and hacky and slow.
So you end up with a bunch of kernel interfaces for hardware-accelerated video transforms (many driver-specific), a few competing userspace APIs (gstreamer, vulkan extensions, vaapi, vdpau, etc), zero-copy kernel buffer APIs, the list goes on. You end up with something like Pipewire just to abstract over the complexity.