Po téměř roce vývoje byla vytvořena nová stabilní větev multimediálního serveru PipeWire 1.6.0, který nahradil zvukový server PulseAudio a od něj se liší přidáním prostředků pro práci s video streamy, možností zpracování zvuku s minimálními zpožděními a novým bezpečnostním modelem pro řízení přístupu na úrovni jednotlivých zařízení a streamů. Projekt je ve výchozím nastavení používán v Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE a mnoha dalších distribucích Linuxu. Kód je napsán v jazyce C a je distribuován pod licencí MIT.
PipeWire je založen na vícestupňové architektuře, která umožňuje sdílený přístup k obsahu několika aplikací. Nabízí možnosti pro zpracování jakýchkoli multimediálních streamů, míchání a přesměrování video streamů, stejně jako řízení zdrojů videa, jako jsou zařízení pro zachytávání videa, webkamery nebo výstup z aplikací na obrazovce. PipeWire umožňuje organizovat spolupráci několika aplikací s webkamerou a řeší problémy s bezpečným zachycováním obsahu obrazovky a vzdáleným přístupem k obrazovce v prostředí Wayland.
Při použití jako zvukový serveru, může PipeWire zajistit minimální latence a poskytnout funkcionalitu, která kombinuje možnosti PulseAudio a JACK, zohledňující potřeby systémů profesionálního zpracování zvuku, na které PulseAudio nemohl pomýšlet. PipeWire nabízí rozšířený bezpečnostní model, který umožňuje řízení přístupu na úrovni jednotlivých zařízení a konkrétních streamů. Realizovaný model přístupu usnadňuje přesměrování zvuku a videa z izolovaných kontejnerů a do nich.
V nové verzi:
- Byl přidán dekodér pro zvukový kodek LDAC, který se používá pro přenos vysoce kvalitního zvuku přes Bluetooth. K dekódování byla použita knihovna libldac.
- Byla přidána možnost „bluez5-plc-spandsp“ pro kompenzaci ztráty paketů při přenosu zvuku přes Bluetooth, využívající možnosti knihovny SpanDSP.
- Byla přidána bezpečná implementace funkcí pro analýzu a vytváření serializovaných objektů ve formátu POD (Plain Old Data) v sdílené paměti.
- Byla implementována možnost přenášení informací o podporovaných funkcích uzly PipeWire prostřednictvím metadat, což může být využito pro synchronizaci pokročilé funkčnosti, jako je podpora operace RELEASE.
- Byla přidána podpora připojení dalších uživatelských dat k příkazům a událostem přenášeným mezi uzly.
- Byly implementovány další pomocné funkce pro vytváření a analýzu kompresních formátů.
- Výchozí limit pro maximální počet kanálů byl zvýšen na 128. Byla přidána možnost přepsat tento limit během kompilace.
- Byla přidána konfigurace 'audio.layout' pro nastavení schématu víc kanálového prostorového zvuku (například, 'audio.layout = 5.1') bez nutnosti vyjmenovávat pozice kanálů ('audio.position = [ FL, FR, FC, LFE, SL, SR ]').
- Byl přidán mechanismus 'Capability Params' pro dohodu o schopnostech linky ve fázi před určením formátu a bufferů.
- Byla přidána podpora nových typů barevného zobrazení (colortype) pro HDR.
- V cyklech zpracování událostí byla implementována podpora zámků s inverzí priorit, které zabraňují situacím, kdy se vlákno s vysokou prioritou musí čekat na uvolnění zámku, který nastavil nízkoprioritní tok. Pro synchronizaci stavu mezi vlákny byly použity lehké zámky místo epoll a eventfd.
- Byla přidána podpora pro určení pozice kanálu prostřednictvím analýzy dat EDID.
- Byl zajištěn přenos v subsystému ALSA mapy kanálů prostorového zvuku (který kanál je vpravo, který vlevo atd.).
- Bylo provedeno mnoho vylepšení souvisejících s Bluetooth, RTP (Real-time Transport Protocol) a AVB (Audio Video Bridging).
- Pokračuje práce na realizaci síťového protokolu Milan pro přenos multimediálních dat v reálném čase.
- Do systému měnění vzorkovací frekvence (resampler) byla přidána podpora přizpůsobitelných funkcí potlačení zkreslení, jako jsou Blackman a Kaiser. Pro zvýšení přesnosti výpočtů fáze byly využity výpočty s pevnou řádovou čárkou.
- Byla poskytnuta možnost použití grafu uzlů zvukových filtrů FFmpeg a AI modelů pro zpracování zvuku založených na ONNX, jako je detektor hlasu Silero.
- Podpora klientů používajících protokol v0, který byl používán ve starších verzích PipeWire, byla ukončena.
- Do modulu jack-tunnel byla přidána podpora automatického připojení portů.
- Pro systém streamování ROC byla implementována podpora vícestopých rozložení.
- Byla umožněna změna limitů na zdroje (rlimit) přes konfigurační soubor.
- Bylo přidáno vlastnost „thread.reset-on-fork“ pro řízení resetování vláken při volání fork. Pro klienty JACK je možné chování JACK opakovat tím, že se resetování vláken vypne nastavením „thread.reset-on-fork=false“.
- Byla přidána vlajka node.exclusive, která zaručuje, že port má pouze jeden zdroj a jednoho spotřebitele, což je nezbytné pro realizaci mechanismu Explicit Sync.
- Byla přidána vlajka node.reliable pro režim garantované dodávky.
- Do nástroje pw-cat byla přidána podpora MIDI zpráv SysEx (System Exclusive, pro nastavení syntetizátorů), kontejneru midiclip a nekomprimovaných zvukových formátů. Přidány možnosti pro nastavení formátů zvukových kontejnerů a kodeků, jakož i pro zobrazení seznamu podporovaných kontejnerů, kodeků, prostorových rozložení a názvů kanálů.
Zdroj: opennet.ru
