This is very impressive work indeed. I have done some development around screen recording on Wayland myself and it’s been a rather painful experience. Similarly to what’s described in the blog post I have also hit quite some bugs or missing features.
What’s also interesting is that OBS directly interfaces with pipewire. The process with xdg-desktop-portal is a request for screen recording permission that opens a popup and once the user grants permission you get a file descriptor, which is a handle to a pipewire remote. That means so far there is no need to actually use the pipewire API at all.
Actually you can even use another library and let it handle the pipewire related things. This is what I did, pipewire ships with a gstreamer plugin and like that there is no need to interface with the rather unstable pipewire API directly and instead the stable API of gstreamer can be used.
As OBS doesn’t do this the devs will have to put in quite some more work to keep up to date with pipewire. But I understand why they directly interface with pipewire. Like this they can share dma bufs to display the screen faster and far more efficiently.
Interesting!