Ich sehe eine Reihe von Behauptungen, dass Jack schneller als Pulse ist und weniger Latenz hat. Wie ist das so? Warum nennt sich Pulse leicht und die Jungs von Jack nennen es fett? Könnte irgendjemand einem Laien die Interna dieser beiden Dämonen erklären?
Akzeptierte Antwort:
Jack fordert Sie – den erfahrenen Benutzer – auf, den Server so zu konfigurieren, dass die niedrigstmögliche Verarbeitungslatenz ermittelt wird für Ihre Maschine. (Verarbeitungslatenz ist die Zeit, die der Server benötigt, um Daten zu/von den Client-Anwendungen zu verschieben und dann den nächsten „Blöcke“ von Audio-Samples außerhalb des Systems zu senden/empfangen.) Jack wird diese Audiodaten-Blöcke entweder pünktlich liefern oder es schlägt fehl und führt zu einem Buffer-Underrun (manchmal auch als „Dropout“ oder Pops bezeichnet). und Klicks ). Wenn Jack ständig Underruns bekommt, ist es Ihre Aufgabe, entweder den Server mit anderen Einstellungen neu zu starten oder etwas in der/den Client-Anwendung(en) zu ändern, um sie effizienter zu machen, damit Sie Ihre Audiotermine einhalten können. Da Ihre Servereinstellungen einheitlich für alle Clients gelten, ist Jack sehr nützlich, um Audio zwischen mehreren Audioanwendungen zu routen und vorhersagbar zu machen Ergebnisse. (Das heißt, es ist wie das Einstecken von „Buchsen“ in verschiedene Audiokomponenten.)
Pulse wurde entwickelt, um die Anzahl der Audioausfälle zu minimieren, weil der Server eine Frist zum Senden/Empfangen von Audio außerhalb des Systems nicht einhält. Offensichtlich wird dies versucht, indem ein großer Puffer für Client-Anwendungen ausgewählt wird, die keine geringe Verarbeitungslatenz anfordern , dann „Injizieren“ von Samples in diesen Puffer für Kundenanwendungen, die eine frühere Frist haben. Wenn es versucht, Samples so früh einzufügen, dass es eine Frist versäumt und einen Underrun verursacht, verlängert Pulse automatisch die kürzeste Zeit, die ein Client ein Audio-Update an den Server senden kann. Pulse-Dokumente geben ausdrücklich an, dass ultra niedrige Latenz – sagen wir, weniger als 10 ms Verarbeitungslatenz – ist kein Designziel. Angesichts der Tatsache, dass Linux selbst (und wahrscheinlich Ihre Hardware) nicht für die Echtzeitplanung von Audio entwickelt wurde, würde ich ihnen gerne glauben.
In Bezug auf die Benutzerkonfiguration ist Pulse „leicht“. (Man könnte sagen, Pulse hat eine geringe Konfigurationslatenz , etwas, das leider viele Linux-Audio-Apps offensichtlich missachten.) Im Vergleich zu Jack ist Pulse in Bezug auf die zugrunde liegende Komplexität „fett“.
Um eine endgültige Antwort darauf zu erhalten, was schneller ist, müssen Sie sich nur ein Loopback-Gerät besorgen und die Round-Trip-Latenz messen auf Ihrem eigenen System, um die Wahrheit zu erfahren. Roundtrip-Latenz ist die Zeit, die Ihr System benötigt, um Audiodaten zu verarbeiten und die verarbeiteten Daten wieder im System zu empfangen. Es gibt Online-Tutorials, die erklären, wie das unter Linux geht. Das gibt Ihnen eine Vorstellung davon, was Sie eigentlich wollen, nämlich die wahrgenommene Latenz – die Zeit, die von dem Moment an vergeht, in dem Sie ein Ereignis auslösen (z. B. das Klimpern der Saiten einer Gitarre), bis zu dem Moment, in dem Sie zum ersten Mal den daraus resultierenden Klang hören (z. B. den Gitarrenakkord hören).
Verwandte Themen:Ist die Auswahl in einer temporären Tabelle im Allgemeinen schneller als die Auswahl in einer tatsächlichen Tabelle?Denken Sie schließlich daran, dass sowohl Pulse als auch Jack in den meisten GNU/Linux-Distributionen auf ALSA sitzen. Ich weiß, Sie fragen nur nach Jack vs. Pulse. Aber wenn Sie eine einzelne Audioanwendung verwenden, die sich direkt mit ALSA verbinden kann, gibt es keine vorstellbare Möglichkeit, dass das Hinzufügen von Pulse oder Jack zu einer geringeren wahrgenommenen Latenz führt als ALSA allein. In diesem Sinne sind sowohl Pulse als auch Jack „fett“.
tldr; ALSA allein ist am schnellsten, Jack ist nützlich, um mehrere Audioanwendungen miteinander zu verketten, und Pulse ist wahrscheinlich am einfachsten zu verwenden, wenn Sie sich nicht für extrem niedrige Latenzzeiten interessieren. Ignorieren Sie alle Dokumentationen oder Diskussionen, die den Begriff Latenz verwenden ohne zu erklären, welche Art von Latenz gemeint ist. (Leider fallen sowohl die offiziellen Jack-Dokumente als auch Lennarts Blog-Einträge über Pulse in diese Kategorie.)
Hinweis :Es könnte Grenzfälle geben, in denen Sie eine einzelne Audioanwendung verwenden möchten und diese eine miese ALSA-Schnittstelle und eine anständige Jack-Schnittstelle hat. In diesem Fall kann die Verwendung von Jack zu einer geringeren Latenz führen. Aber wenn wir von Apps sprechen, die designt sind Um die Latenzzeit zu minimieren, sollten diese Fälle selten sein. Aber schließen Sie ein Loopback-Gerät an und testen Sie meine Hypothese!