Chromium has used V4L2 for cameras for many years and it works reasonably well. Modern complex cameras are no longer a simple V4L2 device. libcamera must be used instead. For Chromium in a Flatpak or Snap container it would be nice to manage camera access at runtime. Or let's have some fun and use an arbitrary video stream as a camera.
So the goal was to implement some kind of high-level camera interface. The choice of technology was easy: xdg-desktop-portal is already used for screen sharing and it has support for cameras as well. And PipeWire, the media daemon that handles the camera already supports libcamera.
I started the implementation more than a year ago and it is still ongoing. This presentation gives an overview of the technologies involved, how it fits all together and the story of the long and winding road to implement this in Chromium.
Speakers: Michael Olbrich