Efter næsten et års udvikling er en ny stabil gren af PipeWire 1.6.0-multimedieserveren blevet udgivet. Den erstatter PulseAudio-lydserveren og har videostreamingfunktioner, lydbehandling med lav latenstid og en ny sikkerhedsmodel til adgangskontrol på enheds- og streamniveau. Projektet understøttes native på Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE og mange andre Linux-distributioner. Koden er skrevet i C og distribueret under MIT-licensen.
PipeWire er baseret på en multiprocesarkitektur, der muliggør indholdsdeling på tværs af flere applikationer. Den giver mulighed for at behandle alle multimediestrømme, mikse og omdirigere videostrømme og administrere videokilder såsom videooptagelsesenheder, webkameraer eller indhold på applikationsskærme. PipeWire muliggør samarbejde mellem flere applikationer og et webcam og løser udfordringerne med sikker skærmoptagelse og fjernadgang til skærme i et Wayland-miljø.
Når den bruges som lyd serverPipeWire kan tilbyde minimal latenstid og funktionalitet, der kombinerer PulseAudio og JACKs muligheder og imødekommer behovene hos professionelle lydbehandlingssystemer ud over, hvad PulseAudio kan tilbyde. PipeWire tilbyder en avanceret sikkerhedsmodel, der muliggør adgangskontrol på enheds- og streamniveau. Denne adgangsmodel forenkler lyd- og videorouting til og fra isolerede containere.
I den nye version:
- Der er tilføjet en dekoder til LDAC-lydcodec'en, der bruges til at transmittere lyd i høj kvalitet via Bluetooth. libldac-biblioteket bruges til dekodning.
- Tilføjet indstillingen "bluez5-plc-spandsp" for at kompensere for pakketab ved transmission af lyd via Bluetooth ved hjælp af SpanDSP-bibliotekets funktioner.
- Tilføjet sikker implementering af funktioner til parsing og oprettelse af serialiserede objekter i POD-format (Plain Old Data) i delt hukommelse.
- Muligheden for at overføre information om PipeWire-noders understøttelse af yderligere funktioner via metadata er blevet implementeret, hvilket kan bruges til at synkronisere brugen af udvidet funktionalitet, såsom understøttelse af RELEASE-operationen.
- Tilføjet understøttelse af at tilknytte yderligere brugerdata til kommandoer og begivenheder, der sendes mellem noder.
- Yderligere hjælpefunktioner til oprettelse og parsing af komprimeringsformater er blevet implementeret.
- Standardgrænsen for det maksimale antal kanaler er blevet øget til 128. Muligheden for at tilsidesætte denne grænse under kompilering er blevet tilføjet.
- Tilføjet indstilling "audio.layout" til indstilling af layout for flerkanals surround sound (f.eks. "audio.layout = 5.1") uden at skulle angive kanalpositioner ("audio.position = [FL, FR, FC, LFE, SL, SR]").
- Tilføjet en "Kapabilitetsparametre"-mekanisme til at forhandle linkfunktioner, før format og buffere defineres.
- Tilføjet understøttelse af nye farvetyper til HDR.
- Hændelsesbehandlingsløkker understøtter nu prioriterede inversionslåse, hvilket forhindrer situationer, hvor en tråd med høj prioritet skal vente på, at en lås, der holdes af en tråd med lav prioritet, frigives. Letvægtslåse bruges i stedet for epoll og eventfd til at synkronisere tilstand mellem tråde.
- Tilføjet understøttelse af bestemmelse af kanalposition ved at analysere EDID-data.
- Transmissionen af et surround sound-kanalkort (hvilken kanal er til højre, hvilken er til venstre osv.) til ALSA-undersystemet er sikret.
- Der er foretaget mange forbedringer relateret til Bluetooth, RTP (Real-time Transport Protocol) og AVB (Audio Video Bridging).
- Arbejdet med implementeringen af Milan-netværksprotokollen til transmission af multimediedata i realtid fortsatte.
- Resampleren understøtter nu brugerdefinerede funktioner til reduktion af forvrængning, såsom Blackman og Kaiser. Fixed-point-beregninger bruges nu til at forbedre nøjagtigheden af faseberegninger.
- Muligheden for at bruge FFmpeg-lydfiltre og ONNX-baserede AI-modeller til lydbehandling, såsom Silero-stemmedetektoren, i nodegrafen er blevet introduceret.
- Support til klienter, der bruger v0-protokollen, som blev brugt i tidligere versioner af PipeWire, er udgået.
- Jack-tunnel-modulet er blevet opdateret til at understøtte automatisk portforbindelse.
- Understøttelse af multi-track layouts er blevet implementeret til ROC-streamingsystemet.
- Muligheden for at ændre ressourcegrænser (rlimit) via en konfigurationsfil er blevet tilgængelig.
- Tilføjede egenskaben "thread.reset-on-fork" for at styre trådnulstilling ved forkling. For JACK-klienter kan trådnulstilling deaktiveres ved at indstille "thread.reset-on-fork=false" for at replikere JACKs opførsel.
- Tilføjet node.exclusive-flaget, som sikrer, at en port kun har én kilde og én forbruger, hvilket er nødvendigt for at implementere Explicit Sync-mekanismen.
- Tilføjet node.reliable-flag for garanteret leveringstilstand.
- pw-cat-værktøjet understøtter nu MIDI SysEx (System Exclusive, til konfiguration af synthesizere), midiclips-containeren og ukomprimerede lydformater. Der er tilføjet muligheder for at indstille lydcontainer- og codec-formater samt visning af en liste over understøttede containere, codecs, surround sound-layouts og kanalnavne.
Kilde: opennet.ru
