Po takmer ročnom vývoji bola vytvorená nová stabilná verzia multimediálneho servera PipeWire 1.6.0, ktorý nahrádza zvukový server PulseAudio a odlišuje sa od neho prídavkom nástrojov na prácu s video streamami, možnosťou spracovania zvuku s minimálnymi oneskoreniami a novým bezpečnostným modelom na správu prístupu na úrovni jednotlivých zariadení a streamov. Projekt sa predvolene používa v operačných systémoch Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE a mnohých ďalších distribúciách Linuxu. Kód je napísaný v jazyku C a je distribuovaný pod licenciou MIT.
PipeWire je založený na viacprocesorovej architektúre, ktorá umožňuje zdieľanie obsahu medzi viacerými aplikáciami. Poskytuje možnosti na spracovanie akýchkoľvek multimediálnych streamov, miešanie a presmerovanie video streamov, ako aj správu zdrojov videa, ako sú zariadenia na zachytávanie videa, webkamery alebo obsah obrazovky generovaný aplikáciami. PipeWire umožňuje spoluprácu viacerých aplikácií s webkamerou a rieši problémy s bezpečným zachytávaním obsahu obrazovky a vzdialeným prístupom k obrazovke v prostredí Wayland.
Pri použití ako zvukový servera, môže PipeWire zabezpečiť minimálne oneskorenia a poskytnúť funkčnosť, ktorá kombinuje možnosti PulseAudio a JACK, zohľadňujúc potreby profesionálneho spracovania zvuku, na ktoré PulseAudio nemohol dosiahnuť. PipeWire ponúka rozšírený bezpečnostný model, ktorý umožňuje správu prístupu na úrovni jednotlivých zariadení a konkrétnych streamov. Implementovaný prístup uľahčuje prechod zvuku a videa z izolovaných kontajnerov a do nich.
V novej verzii:
- Bol pridaný dekodér pre zvukový kodek LDAC, používaný na prenos vysokokvalitného zvuku cez Bluetooth. Na dekódovanie sa využíva knižnica libldac.
- Pridaná možnosť „bluez5-plc-spandsp“ na kompenzáciu straty paketov pri prenose zvuku cez Bluetooth, využívajúc možnosti knižnice SpanDSP.
- Pridaná bezpečná implementácia funkcií analýzy a vytvárania serializovaných objektov v formáte POD (Plain Old Data) v zdieľanej pamäti.
- Bola implementovaná možnosť prenosu informácií o podpore uzlami PipeWire prostredníctvom metadát, čo môže byť využité na synchronizáciu rozšírenej funkčnosti, ako napríklad podpora operácie RELEASE.
- Bola pridaná podpora pre pripojenie dodatočných používateľských údajov k prenosom príkazov a udalostí medzi uzlami.
- Boli implementované dodatočné pomocné funkcie na vytváranie a rozbor formátov kompresie.
- Predvolený limit na maximálny počet kanálov bol zvýšený na 128. Bola pridaná možnosť predefinovať tento limit počas kompilácie.
- Bola pridaná konfigurácia „audio.layout“ na nastavenie schémy viackanálového priestorového zvuku (napríklad „audio.layout = 5.1“) bez potreby uvedenia pozícií kanálov („audio.position = [ FL, FR, FC, LFE, SL, SR ]“).
- Bola pridaná mechanika „Capability Params“ na vyjednávanie schopností linky pred určením formátu a búferov.
- Bola pridaná podpora nových typov farebného zobrazenia (colortype) pre HDR.
- V cykloch spracovania udalostí bola implementovaná podpora zámkov s inverziou priorít, ktoré zabraňujú situáciám, keď sa vysoce prioritnému vláknu musí čakať na uvoľnenie zámku, ktorý nastavil nízko prioritný proces. Na synchronizáciu stavu medzi vláknami sú namiesto epoll a eventfd využité ľahké zámky.
- Bola pridaná podpora pre určovanie pozície kanála cez analýzu dát EDID.
- Bol zabezpečený prenos kanálov priestorového zvuku do subsystému ALSA (ktorý kanál je vpravo, ktorý vľavo atď.).
- Bolo implementovaných množstvo vylepšení týkajúcich sa Bluetooth, RTP (Real-time Transport Protocol) a AVB (Audio Video Bridging).
- Pokračovalo sa v práci na implementácii sieťového protokolu Milan na prenos multimediálnych údajov v reálnom čase.
- Do systému na zmenu vzorkovacej frekvencie (resampler) bola pridaná podpora nastaviteľných funkcií potlačenia skreslenia, ako sú Blackman a Kaiser. Na zvýšenie presnosti výpočtu fáz sa používajú pevné desatinné čísla.
- Bola poskytnutá možnosť aplikovať vo zvukových filtroch grafu uzlov FFmpeg a AI modelov na spracovanie zvuku založených na ONNX, ako je detektor hlasu Silero.
- Podpora klientov používajúcich protokol v0, používaného v raných verziách PipeWire, bola pozastavená.
- Do modulu jack-tunnel bola pridaná podpora automatického pripojenia portov.
- Pre systém streamovania ROC bola implementovaná podpora viacstopových usporiadaní.
- Bol umožnený zmenu limitov na zdroje (rlimit) prostredníctvom konfiguračného súboru.
- Pridaná vlastnosť «thread.reset-on-fork» na riadenie resetovania vlákien pri volaní fork. Pre JACK klientov je možné vypnúť resetovanie vlákien nastavením «thread.reset-on-fork=false».
- Pridaná vlajka node.exclusive, ktorá zaručuje, že port má iba jeden zdroj a jedného spotrebiteľa, čo je potrebné na realizáciu mechanizmu Explicit Sync.
- Pridaná vlajka node.reliable pre režim garantovanej dodávky.
- Do utilitky pw-cat bola pridaná podpora MIDI správ SysEx (System Exclusive, na nastavenie syntetizátorov), kontajnera midiclip a bezstratových zvukových formátov. Boli pridané možnosti na nastavenie formátov zvukových kontajnerov a kodekov, ako aj na zobrazenie zoznamu podporovaných kontajnerov, kodekov, usporiadaní priestorového zvuku a názvov kanálov.
Zdroj: opennet.ru
