Opublikowany serwer multimedialny PipeWire 1.6.0

Po prawie roku prac rozwojowych, powstała nowa stabilna wersja serwera multimedialnego PipeWire 1.6.0, który zastępuje serwer dźwiękowy PulseAudio. Nowością są funkcje do pracy z transmisjami wideo, możliwość przetwarzania dźwięku z minimalnymi opóźnieniami oraz nowy model bezpieczeństwa do zarządzania dostępem na poziomie pojedynczych urządzeń i strumieni. Projekt jest domyślnie używany w Fedora Linux, RHEL, Ubuntu, Debian, SUSE/openSUSE oraz wielu innych dystrybucjach Linux. Kod jest napisany w języku C i jest dostępny na licencji MIT.

PipeWire opiera się na architekturze wieloprocesowej, która umożliwia wspólny dostęp do treści wielu aplikacji. Oferuje możliwość przetwarzania wszelkich strumieni multimedialnych, miksowania i przekierowywania strumieni wideo, a także zarządzania źródłami wideo, takimi jak urządzenia do przechwytywania wideo, kamery internetowe czy zawartość ekranu wyświetlana przez aplikacje. PipeWire umożliwia współpracę wielu aplikacji z kamerą internetową i rozwiązuje problemy związane z bezpiecznym przechwytywaniem zawartości ekranu oraz dostępem zdalnym do ekranu w środowisku Wayland.

Używając w roli serwera dźwiękowego, serweraPipeWire może zapewnić minimalne opóźnienia i funkcjonalność, łącząc możliwości PulseAudio i JACK, uwzględniając potrzeby systemów profesjonalnej obróbki dźwięku, które nie były dostępne w PulseAudio. PipeWire oferuje rozszerzony model bezpieczeństwa, umożliwiający zarządzanie dostępem na poziomie pojedynczych urządzeń i konkretnych strumieni. Wdrożony model dostępu ułatwia przekazywanie dźwięku i wideo z izolowanych kontenerów i do nich.

W nowej wersji:

  • Dodano dekoder dla kodeka dźwiękowego LDAC, stosowanego do przesyłania dźwięku wysokiej jakości przez Bluetooth. Do dekodowania wykorzystano bibliotekę libldac.
  • Dodano opcję „bluez5-plc-spandsp” do kompensacji utraty pakietów podczas przesyłania dźwięku przez Bluetooth, wykorzystując możliwości biblioteki SpanDSP.
  • Dodano bezpieczną implementację funkcji analizy i tworzenia zserializowanych obiektów w formacie POD (Plain Old Data) w pamięci współdzielonej.
  • Wprowadzono możliwość przesyłania przez metadane informacji o wsparciu przez węzły PipeWire dodatkowych funkcji (features), co może być wykorzystane do synchronizacji korzystania z rozszerzonej funkcjonalności, takiej jak wsparcie dla operacji RELEASE.
  • Dodano wsparcie dla dołączania dodatkowych danych użytkownika do komend i zdarzeń przesyłanych między węzłami.
  • Wprowadzono dodatkowe funkcje pomocnicze do tworzenia i rozkładu formatów kompresji.
  • Domyślny limit maksymalnej liczby kanałów zwiększono do 128. Dodano możliwość nadpisania tego limitu podczas kompilacji.
  • Dodano opcję „audio.layout” do ustalania schematu wielokanałowego dźwięku przestrzennego (na przykład, „audio.layout = 5.1”) bez konieczności wymieniania pozycji kanałów („audio.position = [ FL, FR, FC, LFE, SL, SR ]”).
  • Dodano mechanizm „Capability Params” do uzgadniania możliwości łącza na etapie przed określeniem formatu i buforów.
  • Dodano wsparcie dla nowych typów reprezentacji kolorów (colortype) dla HDR.
  • W cyklach przetwarzania zdarzeń wprowadzono wsparcie dla blokad z inwersją priorytetów, co zapobiega sytuacjom, w których wątek o wysokim priorytecie musi czekać na zwolnienie blokady ustawionej przez wątek o niskim priorytecie. Do synchronizacji stanu między wątkami zamiast epoll i eventfd wykorzystano lekkie blokady.
  • Dodano wsparcie dla określania pozycji kanału poprzez analizę danych EDID.
  • Zapewniono przesyłanie do podsystemu ALSA mapy kanałów dźwięku przestrzennego (który kanał jest po prawej, który po lewej itd.).
  • Wprowadzono wiele usprawnień związanych z Bluetooth, RTP (Real-time Transport Protocol) i AVB (Audio Video Bridging).
  • Kontynuowano prace nad realizacją protokołu sieciowego Milan do przesyłania danych multimedialnych w czasie rzeczywistym.
  • Do systemu zmiany częstotliwości próbkowania (resampler) dodano wsparcie dla konfigurowalnych funkcji tłumienia zniekształceń, takich jak Blackman i Kaiser. Aby zwiększyć dokładność obliczeń faz, zastosowano obliczenia z stałoprzecinkowym.
  • Udostępniono możliwość zastosowania w grafie węzłów filtrów dźwiękowych FFmpeg i modeli AI do przetwarzania dźwięku opartych na ONNX, takich jak detektor głosu Silero.
  • Wsparcie dla klientów korzystających z protokołu v0, stosowanego w wcześniejszych wersjach PipeWire, zostało zakończone.
  • W module jack-tunnel dodano wsparcie dla automatycznego łączenia portów.
  • Dla systemu strumieniowego ROC zaimplementowano wsparcie dla wielośladowych układów.
  • Udostępniono możliwość zmiany limitów zasobów (rlimit) za pośrednictwem pliku konfiguracyjnego.
  • Dodano właściwość „thread.reset-on-fork” do zarządzania resetowaniem wątków przy wywołaniu fork. Dla klientów JACK, aby powielić zachowanie JACK, można wyłączyć resetowanie wątków, ustawiając „thread.reset-on-fork=false”.
  • Dodano flagę node.exclusive, która gwarantuje, że port ma tylko jedno źródło i jednego konsumenta, co jest niezbędne do realizacji mechanizmu Explicit Sync.
  • Dodano flagę node.reliable dla trybu gwarantowanej dostawy.
  • Do narzędzia pw-cat dodano wsparcie dla komunikatów MIDI SysEx (System Exclusive, do konfiguracji syntezatorów), kontenera midiclip i nieskompresowanych formatów dźwięku. Dodano opcje do ustawienia formatów kontenerów dźwięku i kodeków, a także do przeglądania listy obsługiwanych kontenerów, kodeków, układów dźwięku przestrzennego i nazw kanałów.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster