Na zeven maanden ontwikkeling is er een nieuwe stabiele tak van de multimedi server PipeWire 1.2.0 gevormd, die de geluidsserver PulseAudio vervangt en zich onderscheidt door toevoeging van middelen voor het werken met videostromen, de mogelijkheid om geluid met minimale vertraging te verwerken en een nieuw beveiligingsmodel voor toegang op het niveau van individuele apparaten en stromen. Het project wordt ondersteund in GNOME en is standaard toegepast in Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE en vele andere Linux-distributies. De code van het project is geschreven in de programmeertaal C en is beschikbaar onder de LGPLv2.1-licentie.
PipeWire is gebaseerd op een multi-process architectuur die samenwerking van meerdere applicaties bij de toegang tot content mogelijk maakt.
Er zijn mogelijkheden voor de verwerking van alle multimedia streams, het mixen en omleiden van videostromen, evenals het beheren van video-bronnen, zoals video-opnameapparaten, webcams of inhoud van schermen die door applicaties worden weergegeven. Bijvoorbeeld, PipeWire maakt het mogelijk om meerdere applicaties samen te laten werken met een webcam en lost problemen op met veilige schermvastlegging en externe toegang tot het scherm in een Wayland-omgeving.
Bij gebruik als geluidsserver kan PipeWire minimale vertragingen bieden en functionaliteit combineren die zowel de mogelijkheden van PulseAudio als JACK omvat, met inachtneming van de behoeften van professionele geluidsverwerkingssystemen, wat PulseAudio niet bood. Bovendien biedt PipeWire een uitgebreid beveiligingsmodel dat het beheren van toegang op het niveau van individuele apparaten en specifieke stromen vergemakkelijkt, en het organiseren van geluids- en videopasstransmissie uit en naar geĆÆsoleerde containers vereenvoudigt. Een van de belangrijkste doelen is de ondersteuning van zelfvoorzienende applicaties in het Flatpak-formaat en het functioneren binnen de grafische stack op basis van Wayland.
In de nieuwe versie:
- In het model voor gegevensstroomverwerking gebaseerd op een knooppuntgrafiek is ondersteuning voor asynchrone verwerking toegevoegd, waarbij de knooppuntgrafiek niet wordt geblokkeerd bij het ontbreken van uitvoer van een bepaald knooppunt, maar doorgaat met werken met gegevens van een knooppunt die in de vorige cyclus zijn verkregen. Op deze manier kan, ten koste van een vertraging van ƩƩn cyclus, worden voorkomen dat ƩƩn knooppunt de werking van andere knooppunten in de grafiek blokkeert.
- De conceptie van groepen gesynchroniseerde knooppunten (node.sync-group) is gerealiseerd, waarmee groepen knooppunten gelijktijdig door de planner kunnen worden geactiveerd. Deze functie kan worden gebruikt voor gelijktijdige planning van de activatie van knooppunten bij het opstarten van de JACK-transport.
- De uitvoer van foutinformatie in het configuratiebestand is verbeterd; er is een vermelding toegevoegd van de locatie waar de fout in de instellingen is gemaakt (regelnummer en positie in de regel).
- Ondersteuning voor de technologie Explicit Sync is toegevoegd, waarmee applicaties de compositiemanager op basis van het Wayland-protocol kunnen informeren over de gereedheid van het afspelen van een frame op het scherm. Dit maakt het mogelijk om latenties te verminderen en te voorkomen dat grafische artefacten verschijnen. In het bijzonder lost Explicit Sync problemen op met weergaveverstoring en vastlopen op systemen met een NVIDIA GPU en ingeschakelde Wayland-ondersteuning.
- Er is een mogelijkheid geïmplementeerd om verplichte metadata te definiëren bij het onderhandelen over de bufferparameters die gebruikt worden ter ondersteuning van 'Explicit Sync'.
- Ondersteuning voor het creƫren en gebruiken van meerdere gegevensverwerkingscycli (data-loop) in de client is toegevoegd en de server. In de gegevensverwerkingscycli zijn mogelijkheden toegevoegd voor binding aan specifieke CPU-kernen en het instellen van prioriteiten.
- Het is mogelijk gemaakt om de foutopsporingsniveaus die de uitvoer van informatie in de log beheren, zonder herstart te wijzigen, met behulp van metadata.
- De logica voor het koppelen van peers (knooppunten in de gegevensstroomgrafiek die externe gegevensbronnen of -ontvangers definiƫren) is herzien.
- Patches zijn aangenomen voor de verwerking van apparaten die zijn gemarkeerd als conflicterend via ALSA UCM (Use Case Manager).
- Een snapcast-discover-module is toegevoegd voor het streamen van content naar servers SnapCast.
Bron: opennet.ru
