Jack vs Pulseaudio - jak to jest szybsze?

27

Widzę wiele twierdzeń, że Jack jest szybszy od Pulse i ma mniejsze opóźnienia. Jak to się dzieje? Dlaczego Pulse nazywa się lekkim, a faceci Jacka nazywają go grubym? Czy ktokolwiek mógłby rozbić elementy wewnętrzne tych dwóch demonów na laika?

Evan Carroll
źródło
2
Jak rozumiem, są one zaprojektowane do różnych celów, które mogą wyjaśnić problem ich porównywania.
NN

Odpowiedzi:

30

Jack wymaga od Ciebie - znającego się na rzeczy użytkownika - skonfigurowania serwera, aby określić najniższe możliwe opóźnienie przetwarzania dla twojego komputera. (Opóźnienie przetwarzania to czas, jaki zajmuje serwerowi przeniesienie danych do / z aplikacji klienckich, a następnie wysłanie / odbiór kolejnej „części” próbek audio poza systemem.) Jack dostarczy te fragmenty danych audio na czas lub zawiedzie i spowoduje niedopełnienie bufora (czasami nazywane „rezygnacją”) lub wyskakuje i klika). Jeśli Jack konsekwentnie jest niedopracowany, Twoim zadaniem jest albo zrestartować serwer z innymi ustawieniami, albo zmienić coś w aplikacjach klienckich, aby zwiększyć ich wydajność, abyś mógł dotrzymać terminów audio. Ponieważ ustawienia serwera dotyczą jednakowo wszystkich klientów, Jack jest bardzo przydatny do kierowania dźwięku między wieloma aplikacjami audio i uzyskiwania przewidywalnych rezultatów. (Tj. To jak podłączanie „gniazd” do różnych komponentów audio.)

Pulse ma na celu zminimalizowanie liczby wypadków dźwięku z powodu niespełniania przez serwer terminu wysyłania / odbierania dźwięku poza systemem. Najwyraźniej próbuje to zrobić, wybierając duży bufor dla aplikacji klienckich, które nie wymagają niskiego opóźnienia przetwarzania , a następnie „wstrzykując” próbki do tego bufora dla aplikacji klienckich, które mają wcześniejszy termin. Jeśli spróbuje wstrzyknąć próbki tak szybko, że przekroczy termin i spowoduje niedopełnienie, Pulse automatycznie wydłuży jak najkrótszy czas, umożliwiając klientowi przesłanie aktualizacji audio do serwera. Dokumenty Pulse wyraźnie stwierdzają, że bardzo niskie opóźnienie - powiedzmy, mniej niż 10 ms opóźnienia przetwarzania- nie jest celem projektowym. Biorąc pod uwagę, że sam Linux (i prawdopodobnie twój sprzęt) nie został zaprojektowany do planowania dźwięku w czasie rzeczywistym, chętnie w to uwierzę.

Jeśli chodzi o konfigurację użytkownika, puls jest „lekki”. (Można powiedzieć, że Pulse ma małe opóźnienie konfiguracji , co niestety wiele aplikacji Linux Audio najwyraźniej lekceważy.) Pod względem złożoności w porównaniu do Jacka, Pulse jest „gruby”.

Aby uzyskać ostateczną odpowiedź, która jest szybsza, wystarczy zdobyć urządzenie zwrotne i zmierzyć opóźnienie w obie strony w swoim systemie, aby poznać prawdę. Opóźnienie w obie strony to czas, w którym Twój system przetwarza dźwięk i odbiera to, co przetworzył z powrotem do systemu. Dostępne są samouczki online, które wyjaśniają, jak to zrobić w systemie Linux. To da ci wyobrażenie o tym, czego tak naprawdę szukasz, czyli o postrzeganym opóźnieniu - czasie, który upływa od momentu uruchomienia zdarzenia (np. Uderzenia struny gitary) do momentu pierwszego usłyszenia dźwięku powoduje to (np. usłyszenie akordu gitary).

Na koniec należy pamiętać, że zarówno Pulse, jak i Jack siedzą na szczycie ALSA w większości dystrybucji GNU / Linux. Wiem, że pytasz tylko o Jacka vs. Pulse. Ale jeśli używasz pojedynczej aplikacji audio, która może łączyć się bezpośrednio z ALSA, nie ma możliwego sposobu, aby dodanie Pulse lub Jacka zapewniło mniejsze opóźnienie niż sam ALSA. W tym sensie zarówno Pulse, jak i Jack są „grubi”.

tldr; Sam ALSA jest najszybszy, Jack jest przydatny do łączenia wielu aplikacji audio, a Pulse jest prawdopodobnie najłatwiejszy w użyciu, gdy nie obchodzi Cię bardzo małe opóźnienie. Zignoruj ​​wszelką dokumentację lub dyskusje, które używają terminu latencja, nie wyjaśniając, jaki rodzaj latencji oznacza. (Niestety, zarówno oficjalne dokumenty Jack'a, jak i wpisy na blogu Lennarta o Pulse należą do tej kategorii).

Uwaga : mogą istnieć przypadki, w których chcesz użyć pojedynczej aplikacji audio i ma ona kiepski interfejs ALSA i przyzwoity interfejs Jacka. W takim przypadku użycie Jacka może obniżyć opóźnienie. Ale jeśli mówimy o aplikacjach zaprojektowanych w celu zminimalizowania opóźnień, przypadki te powinny być rzadkie. Ale podłącz urządzenie z pętlą zwrotną i sprawdź moją hipotezę!

jancsika
źródło
9

Są tak naprawdę podobne do serwerów dźwięku . JACK został zaprojektowany do reakcji w czasie rzeczywistym / przy niskich opóźnieniach, co jest wymagane w profesjonalnych rozwiązaniach audio. PulseAudio jest bardziej ukierunkowany na ogólny pulpit (tam, gdzie obowiązują mniej surowe potrzeby). PA wydaje się być cięższy niż JACK - bycie bardziej złożonym powoduje większe obciążenie. W Linuksie oba używają ALSA do rzeczywistych danych wyjściowych. W przypadku PA dane są często kierowane z ALSA (wyjście aplikacji) do PA (przetwarzanie) do ALSA (wyjście), co jest oczywiście wolniejsze niż trasa JACK-ALSA. Z drugiej strony jest przezroczysty dla aplikacji, które nie mogą go używać natywnie, ponieważ oferuje im wirtualną kartę dźwiękową z interfejsem ALSA.

W każdym razie, chyba że masz zamiar produkować muzykę lub nie możesz żyć bez regulacji głośności dla poszczególnych aplikacji (lub przekazywania dźwięku do innej maszyny przez sieć), zwykła ALSA poradzi sobie dobrze, z mniejszym narzutem. Niektóre sterowniki mogą miksować sprzętowo, a nawet jeśli nie, ALSA może miksować za pomocą wtyczki (prawdopodobnie nie tak zgrabnej jak JACK, ale „normalne” użycie powinno być w porządku).

Peter
źródło
Czy link do obrazu PA jest źle przekierowany?
NN
@NN pracował dla mnie, ale zmieniłem go teraz, więc mam nadzieję, że będzie lepiej.
Peter
@ Sukminder błąd wydaje się dość losowy.
peterph
1
Nie sądzę, żeby ta odpowiedź ją ograniczała: po pierwsze, nie mówisz, jak Jack jest szybszy, a po drugie, rozwiązujesz odpowiedź za pomocą przykładu, który dotyczy sterownika pseudo-alsa, a nie bezpośredniego zlewu pulsacyjnego. Pytanie jest dość jasne, ale aby być bardziej bezpośrednim - w jaki sposób JACK jest najszybszy w najszybszym, w porównaniu do Pulse w najszybszym?
Evan Carroll
Jestem po prostu zmęczony słyszeniem, że zespół Jacka mówi, że jest szybszy, ponieważ nie ma wagi ciężkiej bez wyjaśnienia, dlaczego waga ciężka - a co w wadze ciężkiej - spowalnia puls. Ta odpowiedź wydaje się przypominać kartezjańskie potwierdzenie założenia zawartego w pytaniu.
Evan Carroll
4

Jack jest przeznaczony do aplikacji, które wymagają niewielkich opóźnień, np .: tworzenie / tworzenie dźwięku dla muzyków, twórców wideo itp

  • bez ponownego próbkowania!
  • wymuszać miksowanie źródeł oprogramowania
  • właściwe kierowanie rzeczy (dźwięk, synchronizacja czasu itp.) między aplikacjami, urządzeniami, wtyczkami ladspa / lv2 / vst itp.
  • może być używany z pulseaudio (most)

Pulse jest dla zwykłych aplikacji komputerowych (nie oczekuj niskiego opóźnienia)

  • zapewniają zgodność z aRts i esd
  • może być używany jako alsai osswyjście
  • wymuś ponowne próbkowanie oprogramowania
  • wymuszać miksowanie źródeł oprogramowania
  • upmix oprogramowania, downmix itp
  • daje ładne API dla wtyczek (np .: efekty pulsacyjne )
  • prosty routing (w celu podłączenia wyjścia do innego urządzenia lub aplikacji)
  • regulacja głośności na aplikację

Warstwa przestrzeni użytkownika Alsa (nie sterowniki) wykonują minimum (opóźnienia między [*])

  • [*] sprzętowe resampling, źródła miksowania, upmixowanie itp. ( aby go użyć, potrzebujesz odpowiedniej karty dźwiękowej , w przeciwnym razie zostanie użyte oprogramowanie )
  • wtyczki ladspa, które można ustawić w brzydkim formacie konfiguracji
  • prosta / globalna kontrola poziomów głośności

W większości przypadków Pulse jest najlepszym wyborem dla zwykłych użytkowników komputerów stacjonarnych. Jack to najlepszy wybór dla muzyków itp.

3ED
źródło
Odrzuciłem aprobatę, ale nie jestem pewien, czy jest to odpowiedź na pytanie, jak dobre porównanie. Dlaczego PulseAudio działa wolniej, jeśli nie wykonuje ponownego próbkowania?
Evan Carroll
> Dlaczego PulseAudio działa wolniej, jeśli nie wykonuje ponownego próbkowania?
3ED
Nie? Robią różne rzeczy w oprogramowaniu, np .: wymuszają ponowne próbkowanie (możesz wybrać pomiędzy 2). Jack częściowo omija alsę. Jack jest podobny do Asio. Puls podobny do standardowego dźwięku systemu Windows od vista w górę. Nie te same, ale podobne koncepcje. Impuls jest genialny w przypadku tanich / zintegrowanych / nieprawidłowo obsługiwanych kart dźwiękowych, które nie mogą robić rzeczy sprzętowo.
3ED
2

To nie jest tak naprawdę kwestia „vs”. Na pierwszy rzut oka widzimy, że oba są „serwerami dźwięku”. Być może zatem należy stwierdzić, że wystarczy wybrać między nimi. To nie o to chodzi. Porównaj na przykład kamerę wideo i kamerę FLIR, obie są kamerami. Ale nie tylko „wybiera się” między nimi. Pełnią one bardzo różne role, role te mogą być komplementarne, ale nie są w żaden sposób konkurencyjne. Potrzebny jest jack lub puls, albo jedno i drugie. Wybór zależy od dziedziny problemu, a nie od cech takich jak określone opóźnienie.

Jeśli chodzi o „FAT” vs. nie, termin ten jest używany na wiele sposobów, aby był naprawdę znaczący. Ale ogólnie termin FAT używany, gdy aplikacja „robi wszystko dla ciebie”, mniej więcej. „Lekki” zmierza w kierunku załadowania pożądanej funkcjonalności, ewentualnie wybierając z palety opcji i odrzucając resztę. Pulse to program typu „big blob”, któremu podajesz kilka parametrów i, właściwie, nie działa. Potrzebujesz go, czy nie, gdy zaczynasz puls, ładowana jest duża funkcjonalność. Jack to jeden mały i bezużyteczny program, do którego przyklejasz dowolną liczbę wtyczek, programów itp., Aby budować, co chcesz. Programiści zazwyczaj patrzą na świat od strony zasobów maszynowych.

Zatem puls jest serwerem o zmiennym opóźnieniu, a jack ma ustalony czas opóźnienia. To są ich specyficzne domeny problemowe. Jeśli po prostu oglądasz telewizję lub słuchasz muzyki przez sieć, na pewno chcesz puls. Jeśli próbujesz odtwarzać muzykę elektroniczną na żywo, na pewno potrzebujesz jack. Jeśli oglądasz telewizję i intensywnie przetwarzasz strumienie dźwięku, z pewnością potrzebujesz obu.

Wola
źródło
1
Nieco subiektywne: Myślę, że serwer dźwięku powinien być zgodny z projektem JACK, ponieważ nie można pozbyć się żadnych opóźnień dodanych przez serwer. Następnie twórca aplikacji musi użyć większych buforów dla dyskowych lub sieciowych we / wy, konwersji częstotliwości próbkowania itp. Opóźnienia powyżej znaku 10 ms są wysokie.
user877329,