Nakon gotovo godine dana razvoja, formirana je nova stabilna verzija multimedijskog servera PipeWire 1.6.0, koji je zamijenio audio server PulseAudio i razlikuje se od njega po dodavanju alata za rad s video streamovima, mogućnosti obrade zvuka s minimalnim kašnjenjima te novom sigurnosnom modelu za upravljanje pristupom na razini pojedinih uređaja i streamova. Projekt se po defaultu koristi u Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE i mnogim drugim Linux distribucijama. Kod je napisan u programskom jeziku C i distribuira se pod MIT licencom.
PipeWire se temelji na višekratnoj arhitekturi koja omogućuje zajednički pristup sadržaju više aplikacija. Pruža mogućnosti obrade svih multimedijskih streamova, miješanja i preusmjeravanja video streamova, kao i upravljanja izvorima videa, poput uređaja za snimanje videa, web-kamera ili sadržaja ekrana koji proizvode aplikacije. PipeWire omogućuje suradnju više aplikacija s web-kamerom i rješava probleme sigurnog snimanja sadržaja ekrana i daljinskog pristupa ekranu unutar okruženja Wayland.
Kada se koristi kao audio poslužitelja, PipeWire može osigurati minimalna kašnjenja i pružiti funkcionalnost koja kombinira mogućnosti PulseAudio i JACK, uzimajući u obzir potrebe profesionalnih audio sustava, što PulseAudio nije mogao ostvariti. PipeWire nudi napredni sigurnosni model koji omogućuje upravljanje pristupom na razini pojedinih uređaja i specifičnih streamova. Implementirani model pristupa olakšava prosljeđivanje zvuka i videa iz izoliranih kontejnera i prema njima.
U novoj verziji:
- Dodavan je dekoder za audio kodek LDAC, korišten za prijenos visokokvalitetnog zvuka putem Bluetootha. Za dekodiranje koristi se knjižnica libldac.
- Dodana je opcija „bluez5-plc-spandsp“ za kompenzaciju gubitka paketa prilikom prijenosa zvuka putem Bluetootha, koristeći mogućnosti knjižnice SpanDSP.
- Dodana je sigurna implementacija funkcija za parsiranje i kreiranje serijaliziranih objekata u formatu POD (Plain Old Data) u zajedničkoj memoriji.
- Implementirana je mogućnost prijenosa informacija o podršci od strane PipeWire čvorova putem metapodataka za dodatne mogućnosti (features), što se može koristiti za usklađivanje korištenja proširenih funkcionalnosti, poput podrške za operaciju RELEASE.
- Dodana je podrška za pridruživanje dodatnih korisničkih podataka u naredbe i događaje koji se prenose između čvorova.
- Implementirane su dodatne pomoćne funkcije za izradu i analizu formata kompresije.
- Zadani limit za maksimalan broj kanala povećan je na 128. Dodana je mogućnost nadjačavanja ovog limita tijekom kompilacije.
- Dodana je postavka "audio.layout" za postavljanje sheme višekanalnog prostornog zvuka (na primjer, "audio.layout = 5.1") bez potrebe za navođenjem pozicija kanala ("audio.position = [ FL, FR, FC, LFE, SL, SR ]").
- Dodan je mehanizam "Capability Params" za usklađivanje mogućnosti veze prije određivanja formata i bafera.
- Dodana je podrška za nove vrste prikaza boja (colortype) za HDR.
- U ciklusima obrade događaja implementirana je podrška za zaključavanja s obratnim prioritetima, sprječavajući situacije kada viši prioritetni tok mora čekati na otpuštanje zaključavanja koje je postavio niži prioritetni tok. Za usklađivanje stanja između tokova umjesto epoll i eventfd korištena su lagana zaključavanja.
- Dodana je podrška za određivanje pozicije kanala putem analize EDID podataka.
- Osigurana je transmisija u ALSA podnositelj kanala prostornog zvuka (koji kanal je desno, koji lijevo itd.).
- Uneseni su mnogi poboljšanja vezani uz Bluetooth, RTP (Real-time Transport Protocol) i AVB (Audio Video Bridging).
- Nastavljeno je rad na implementaciji mrežnog protokola Milan za prijenos multimedijskih podataka u stvarnom vremenu.
- Sistemu za promjenu frekvencije uzorkovanja (resampler) dodana je podrška za prilagodljive funkcije suzbijanja izobličenja, poput Blackman i Kaiser. Za povećanje točnosti proračuna faza korišteni su izračuni s fiksnom zarezom.
- Omogućena je primjena u grafu čvorova zvučnih filtera FFmpeg i AI modela za obradu zvuka temeljenog na ONNX, poput detektora glasa Silero.
- Prekinuta je podrška za klijente koji koriste protokol v0, korišten u ranim verzijama PipeWire.
- Modul jack-tunnel sada podržava automatsko povezivanje portova.
- Za ROC sustav streaminga implementirana je podrška za višestazne rasporede.
- Omogućena je promjena ograničenja resursa (rlimit) putem konfiguracijske datoteke.
- Dodana je opcija «thread.reset-on-fork» za kontrolu resetiranja niti prilikom poziva fork. Za JACK klijente, kako bi se ponovilo ponašanje JACK-a, resetiranje niti može se onemogućiti postavljanjem «thread.reset-on-fork=false».
- Dodana je oznaka node.exclusive koja jamči da port ima samo jedan izvor i jednog potrošača, što je potrebno za implementaciju mehanizma Explicit Sync.
- Dodana je oznaka node.reliable za način garantirane dostave.
- U alat pw-cat dodana je podrška za MIDI poruke SysEx (System Exclusive, za podešavanje sintesajzera), midiclip kontejner i nekomprimirane audio formate. Dodane su opcije za postavljanje formata audio kontejnera i kodeka, kao i pregled popisa podržanih kontejnera, kodeka, rasporeda prostornog zvuka i imena kanala.
Izvor: opennet.ru
