PipeWire Under the Hood
venam.nixers.net
venam.nixers.net
"PipeWire is a media processing graph, this might not ring a bell so let me rephrase. PipeWire is a daemon that provides the equivalent of shell pipes but for media: audio and video."
I've so many projects that still made no sense after reading the ABOUT or README, this one does a nice job of explaining.
This is how screensharing through xdg-desktop-portal (linked in my sibling comments) works. The xdp implementation gets screencapture frames from the compositor and pushes them into pipewire, and the screensharing application (browser, etc) pulls the frames from pipewire.
This isn't new; DirectShow on Windows, and its successor Media Foundation, are also based on graphs. Put "windows graphedit" and "windows topoedit" in an image search engine for examples.
If the application can use v4l devices directly (I think this includes all ffmpeg players such as mpv) or can output a video stream somewhere, then it might make sense to also add a pipewire backend there. Maybe somebody will make this easy by adding a pipewire encoder/decoder to ffmpeg? Then the applications won't have to do much at all to support this. If the application uses gstreamer, you may already be able to get it to work automatically by using pipewiresink/pipewiresrc.
wtay has mentioned that PipeWire will be able to allow for system-wide video synthesis; https://youtu.be/PIgPIrYq-Pc
I'd be curious if any pros can comment on whether it's achieved that, and how it measures up to jack.
It's silly how much easier it is to setup. No changes needed and your qjackctl / Carla / ... will show all applications. You can connect your browser, guitarx, ardour, reaper channels as you please - whether they're jack-aware or not.
I really like jack once I got how to get a running setup. The only problem is that some software doesn't natively support it
It is very early though and lacks documentation like the article posted above says. Wouldn't recommend for everyone yet, but sure it is nice to see almost no issues in a project that is still on its early stages.
Looks like it is super easy with Nix but I've not yet had success on Ubuntu.
It took a bit of hacking but it was most likely the mess I created earlier (half-way through I realized I had some leftovers from when I tried to build it manually some time ago).
In the end I managed to remove all traces of PipeWire from my system and followed some tutorial which referenced above PPA, without any further problems.
This craziness is now on C as well?
Next we will be shipping C interpreters, as linkers and compilers are too complicated to use.
But both approaches are preferable to complicated libraries that are hard to build and force the use of a certain build framework.