Etter sju måneders utvikling er en ny stabil versjon av multimedia-serveren PipeWire 1.2.0 ferdigstilt. Den erstatter lydserveren PulseAudio og skiller seg fra denne ved å inkludere verktøy for videostrømming, muligheten for lav ventetid ved lydbehandling og en ny sikkerhetsmodell for tilgangskontroll på nivå med individuelle enheter og strømmer. Prosjektet støttes av GNOME og brukes som standard i Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE og mange andre Linux-distribusjoner. Koden er skrevet i C og distribueres under LGPLv2.1-lisensen.
PipeWire er basert på en flerprosessarkitektur som muliggjør delt tilgang til innhold fra flere applikasjoner.
Muligheter for behandling av enhver multimediastream, miksing og omdirigering av videostrømmer, samt styring av videokilder som videoopptaksutstyr, webkameraer eller innhold som vises av applikasjoner, tilbys. For eksempel gir PipeWire muligheten til å organisere samarbeid mellom flere applikasjoner med et webkamera og løser problemer med sikker skjermopptak og ekstern tilgang til skjermen i et Wayland-miljø.
Når PipeWire brukes som lydserver, kan den gi minimal ventetid og tilby funksjonalitet som kombinerer mulighetene til PulseAudio og JACK, inkludert hensyn til behovene til profesjonelle lydbehandlingssystemer, noe PulseAudio ikke kunne oppfylle. I tillegg tilbyr PipeWire en utvidet sikkerhetsmodell som gjør det enklere å administrere tilgang på nivå med individuelle enheter og spesifikke strømmer, samt forenkler overføringen av lyd og video fra isolerte containere og inn i dem. Et av hovedmålene er å støtte selvstendige applikasjoner i Flatpak-format og fungere i et grafisk miljø basert på Wayland.
I den nye versjonen:
- Støtte for asynkron behandling er lagt til i datastreambehandlingsmodellen basert på en nodediagram, hvor nodediagrammet ikke blokkeres ved mangel på utdata fra en bestemt node, men fortsetter å arbeide med data fra noden mottatt i forrige syklus. På denne måten, med en forsinkelse på ett syklus, unngår man situasjonen der en node blokkerer arbeidet til de andre nodene i diagrammet.
- Konseptet for grupper av synkroniserte noder (node.sync-group) er implementert, noe som gjør det mulig å lage grupper av noder som aktiveres samtidig av planleggeren. Funksjonen kan brukes til samtidig planlegging av aktivering av noder ved oppstart av JACK transport.
- Utdata av feilmeldinger i konfigurasjonsfilen er forbedret, det er lagt til en referanse til stedet der feilen oppsto i innstillingene (linjenummer og posisjon i linjen).
- Støtte for Explicit Sync-teknologi er lagt til, som gjør det mulig for applikasjoner å informere kompositoren basert på Wayland-protokollen om at rammeutgangen er klar for skjermen, noe som reduserer forsinkelser og eliminerer artefakter ved grafikkutgang. Spesielt løser Explicit Sync problemer med utgangsforstyrrelser og hangs på systemer med NVIDIA GPU og aktiv støtte for Wayland.
- Muligheten til å definere obligatoriske metadata ved forhandling av bufferparametere som brukes for å støtte «Explicit Sync» er implementert.
- Støtte for oppretting og bruk av flere databehandlingsløkker (data-loop) i klienten er lagt til, serveren. Databehandlingsløkker har fått muligheter for binding til bestemte CPU-kjerner og prioritering.
- Muligheten til å endre feilsøkingsnivåer som styrer utdataene i loggen uten omstart, ved hjelp av metadata, er gjort tilgjengelig.
- Logikken for å knytte noder (noder i datastream-grafen som definerer eksterne kilder eller mottakere av data) er blitt omarbeidet.
- Patcher for behandling av enheter merket som konflikterende via ALSA UCM (Use Case Manager) er akseptert.
- Modulen snapcast-discover for strømming av innhold til servere SnapСast.
Kilde: opennet.ru
