mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-09 08:38:22 +02:00
read-only mirror of https://gitlab.freedesktop.org/pipewire/wireplumber
The previous code made some invalid assumptions and was rather complicated. Rework and simplify it. The approach work as follows: 1. Once a new device gets registered, store its data in a list of pending devices. 2. Start a timer. On timeout, we check all pending devices and depulicate according to our heuristic. The timer gets reset whenever a device is added in order to avoid race conditions. 3. On timeout, add the pending devices to categories. For now: UVC cameras from the V4L2 plugin, libcamera cameras and other cameras from the V4L2 plugin. 4. Then process the different categories in order of preference and store their V4L2 device IDs in a list for each plugin. 5. Before creating a camera, check that the V4L2 device(s) it uses are not yet used by a already existing camera from the other plugin. While on it, drop support for Pipewire versions that don't report V4L2 device IDs at all. Closes https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/689 Closes https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/708 |
||
|---|---|---|
| docs | ||
| lib | ||
| modules | ||
| po | ||
| src | ||
| subprojects | ||
| tests | ||
| .editorconfig | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| LICENSE | ||
| Makefile | ||
| meson.build | ||
| meson_options.txt | ||
| NEWS.rst | ||
| README.rst | ||
| wp-uninstalled.sh | ||
WirePlumber =========== .. image:: https://gitlab.freedesktop.org/pipewire/wireplumber/badges/master/pipeline.svg :alt: Pipeline status .. image:: https://scan.coverity.com/projects/21488/badge.svg :alt: Coverity Scan Build Status .. image:: https://img.shields.io/badge/license-MIT-green :alt: License .. image:: https://img.shields.io/badge/dynamic/json?color=informational&label=tag&query=%24%5B0%5D.name&url=https%3A%2F%2Fgitlab.freedesktop.org%2Fapi%2Fv4%2Fprojects%2F2941%2Frepository%2Ftags :alt: Tag WirePlumber is a modular session / policy manager for `PipeWire <https://pipewire.org>`_ and a GObject-based high-level library that wraps PipeWire's API, providing convenience for writing the daemon's modules as well as external tools for managing PipeWire. The WirePlumber daemon implements the session & policy management service. It follows a modular design, having plugins that implement the actual management functionality. The WirePlumber Library provides API that allows you to extend the WirePlumber daemon, to write management or status tools for PipeWire (apps that don't do actual media streaming) and to write custom session managers for embedded devices. Documentation ------------- The latest version of the documentation is available online `here <https://pipewire.pages.freedesktop.org/wireplumber/>`_