Freigeben über


Zuordnen von Streamformaten zu Lautsprecherkonfigurationen

Wenn Sie aufgefordert werden, ein Streamformat wiederzugeben, das nicht der Lautsprecherkonfiguration des Audiogeräts entspricht, hat der Audiotreiber mehrere Optionen:

  • Ablehnen der Wiedergabe des Streams.

  • Spielen Sie den Stream ab, indem Sie eine 1:1-Zuordnung einzelner Kanäle zu Lautsprechern durchführen. Wenn kanäle übrig bleiben, nachdem jedem Sprecher ein Kanal zugeordnet wurde, verwerfen Sie die übrig gebliebenen Kanäle. Im Gegensatz dazu, wenn lautsprecher übrig bleiben, nachdem alle Kanäle den Sprechern zugewiesen wurden, spielen Sie schweigend durch die übrig gebliebenen Lautsprecher.

  • Spielen Sie den Stream ab, indem Sie die Kanäle im ursprünglichen Stream mischen, um genau die Anzahl der Kanäle zu generieren, die für die Lautsprecherkonfiguration erforderlich sind. Wenn im ursprünglichen Stream mehr Kanäle vorhanden sind als Sprecher, wird mit diesem Ansatz der Verlust des Inhalts vermieden, der sich aus dem einfachen Verwerfen der überschüssigen Kanäle ergeben würde. Die Mischung und Formatkonvertierung kann in Software oder Hardware erfolgen.

Bei der dritten Option sollte der Treiber vermeiden, dass die Software direkt gemischt wird. Stattdessen sollte der Hardwareanbieter ein Global Effects-Softwaremodul (GFX) installieren, um den Stream zu verarbeiten, bevor er das Audiogerät erreicht. In Windows Vista werden globale Effekte als GFX-Audioverarbeitungsobjekte (APOs) implementiert. In Windows Server 2003 und Windows XP wurden globale Effekte als GFX-Filter implementiert.

Wiedergeben eines 5.1-Kanalstreams in einer 7.1-Lautsprecherkonfiguration

Die folgende Abbildung zeigt einen Stream, der für eine 5.1-Surround-Sound-Lautsprecherkonfiguration (links) aufgezeichnet, aber über eine 7.1-Heimkinolautsprecherkonfiguration (rechts) wiedergegeben wird.

Diagramm eines 5.1-Streams, der auf einer 7.1-Lautsprecherkonfiguration mit zwei silent Lautsprechern wiedergegeben wird.

In der vorherigen Abbildung enthält das aufgezeichnete 5.1-Format keine Kanalinformationen für die BL- und BR-Sprecherpositionen in der 7.1-Lautsprecherkonfiguration. Daher sind diese beiden Lautsprecher lautlos. (Eine weitere, schwierigere Alternative wäre, dass das Audiogerät zwei zusätzliche Kanäle für die BL- und BR-Lautsprecher synthetisiert, indem der Inhalt der ursprünglichen sechs Kanäle in der Aufzeichnung gemischt wird.)

Gemäß den Definitionen für die Kanalmaskenbits sollte die Kanalmaske für die Aufzeichnung des 5.1-Streams auf der linken Seite der vorherigen Abbildung 0x60F sein, wodurch die sechs Kanäle den folgenden Sprecherpositionen zugewiesen werden: FL, FR, FC, LFE, SL und SR. (Dies ist die zuvor erläuterte Nebenlautsprecherkonfiguration 5.1.) Tatsächlich ist die Kanalmaske für den 5.1-Stream aus bereits erwähnten Gründen 0x3F statt 0x60F und wird nun ausführlich erläutert.

In früheren Versionen von Windows (Windows Server 2003, Windows XP mit SP1, Windows 2000 und Windows Me/98) besteht die Interpretation der Kanalmaske 0x3F darin, dass die sechs Kanäle im Format 5.1 den folgenden Sprecherpositionen zugewiesen werden: FL, FR, FC, LFE, BL und BR. (Dies ist die Rücklautsprecher 5.1-Konfiguration.) Die Interpretation in Windows Vista, Windows Server 2003 mit SP1 und Windows XP mit SP2 ist jedoch anders: Das 5.1-Format mit der Kanalmaske 0x3F wird konventional so interpretiert, dass die Seitenlautsprecher 5.1-Konfiguration anstelle der Konfiguration mit dem Rücklautsprecher 5.1 gemeint ist.

Wenn Sie die Kanalmaske auf diese Weise interpretieren, entfällt die Anforderung, einen zweiten 5.1-Kanal-Formatdeskriptor einzuführen, um die Seitenlautsprecher 5.1-Konfiguration von der Konfiguration des Back-Speaker 5.1-Formats zu unterscheiden. Diese beiden Konfigurationen sind so ähnlich, dass typische Benutzer möglicherweise Schwierigkeiten haben, zwischen ihnen zu unterscheiden. Obwohl nur ein einzelner 5.1-Kanal-Formatdeskriptor die Benutzer nicht verwirrt, müssen Hardwarehersteller daran denken, die 0x3F Kanalmaske so zu interpretieren, dass die Kanäle 5 und 6 den Sl- und SR-Lautsprecherpositionen anstelle der BL- und BR-Positionen zugewiesen sind. Im Gegenzug, wenn sie sich an diese Sonderfallinterpretation der Kanalmaske für einen 5.1-Stream erinnern müssen, können Anbieter Benutzern die Schwierigkeit ersparen, zwischen zwei sehr ähnlichen 5.1-Kanalformatdeskriptoren zu unterscheiden.

Anbieter, die der Meinung sind, dass zumindest einige ihrer Benutzer zwischen der Konfiguration für den Seitenlautsprecher 5.1 und der Konfiguration des Hinterlautsprechers 5.1 unterscheiden möchten, haben die Möglichkeit, ein Benutzeroberflächenprogramm (User-Interface, UI) für diesen Zweck bereitzustellen. Über die Benutzeroberfläche können Benutzer auswählen, ob die Kanäle 4 und 5 in einem 5.1-Kanal-Stream die hinteren Lautsprecher anstelle der Nebenlautsprecher in einer 7.1-Konfiguration für Heimkinolautsprecher steuern sollen.

Wiedergeben eines 7.1-Kanalstreams in einer 5.1-Lautsprecherkonfiguration

Die folgende Abbildung zeigt einen Stream, der für eine Konfiguration mit 7.1-Heimkinolautsprechern (links) aufgezeichnet wurde, die über eine 5.1-Surround-Sound-Lautsprecherkonfiguration (rechts) wiedergegeben wird. Die Kanalmaske für den 7.1-Kanalstream ist 0x63F.

Diagramm eines 7.1-Streams, der auf einer 5.1-Lautsprecherkonfiguration mit zwei verworfenen Kanälen wiedergegeben wird.

In diesem Beispiel spielen die Kanäle 6 und 7, die die Daten für die Seitenlautsprecherpositionen in der 7.1-Konfiguration enthalten, die Seitenlautsprecherpositionen in der 5.1-Konfiguration ab. Das Audiogerät verwirft einfach die Kanäle 4 und 5, die die Daten für die Hinterlautsprecherpositionen in der 7.1-Konfiguration enthalten, wenn es den Stream in der 5.1-Konfiguration wiedergibt. Wie bereits erwähnt, besteht eine weitere Alternative (nicht in der vorherigen Abbildung gezeigt) darin, dass das Gerät versucht, den Inhalt in den Kanälen 4 und 5 beizubehalten, indem es sie mit den Kanälen 6 und 7 mischt, bevor sie über die Seitenlautsprecher in der 5.1-Konfiguration wiedergegeben werden.

Verhalten des Systemmischers

In Windows Server 2003, Windows XP, Windows 2000 und Windows Me/98 werden die mehrkanaligen Audiostreams, die das Audiogerät abgibt, in der Regel vom Softwaresystemmischer Kmixer.sys generiert. Bevor der Stream mit der Wiedergabe beginnen kann, müssen der Systemmischer und der Audiotreiber ein Streamformat aushandeln, das sowohl Mixer als auch Treiber verarbeiten können.

Wenn er aufgefordert wird, einen Mehrkanalstream mit einem Format wiederzugeben, das nicht der Lautsprecherkonfiguration des Audiogeräts entspricht, kann der Audiotreiber die Anforderung ablehnen. In diesem Fall wird die Aushandlung fortgesetzt.

Der Systemmischer kann Inhalte aus einem 5.1-Kanal-Eingabestream in einen 7.1-Kanal-Ausgabestream (für das Audiogerät) konvertieren und umgekehrt, obwohl er solche Konvertierungen bevorzugt, um die Qualität des Eingabedatenstroms zu erhalten. Daher beginnt der Systemmischer mit der Aushandlung, indem er den Treiber auffordert, einen Stream mit demselben Format wie der Eingabedatenstrom der höchsten Qualität an den Systemmischer zu akzeptieren. In der Regel bedeutet dies, dass der Treiber aufgefordert wird, einen Datenstrom im 5.1- oder 7.1-Kanalformat zu akzeptieren, wenn der Systemmischer über einen Eingabedatenstrom im 5.1- oder 7.1-Kanalformat verfügt. Wenn der Treiber dieses Format ablehnt, setzt der Systemmischer die Verhandlungen fort, indem er den Treiber fragt, ob er andere Streamformate verarbeiten kann.

Wenn der Treiber für ein Audiogerät mit einer 5.1-Lautsprecherkonfiguration beispielsweise eine Anforderung des Systemmischers zur Wiedergabe eines 7.1-Kanal-Streams ablehnt, setzt der Systemmischer die Aushandlung fort, indem er anbietet, den 7.1-Kanal-Stream in einen 5.1-Kanal-Stream zu konvertieren. Wenn der Treiber dieses Format akzeptiert, führt der Systemmischer die Streamkonvertierung für den Treiber durch.

Beim Entwerfen eines Audiotreibers muss der Treiberschreiber entscheiden, ob er seine eigenen Formatkonvertierungen verarbeitet oder sich für die Konvertierungen auf den Systemmischer verlässt. Möglicherweise muss der Treiber die Konvertierungen in einer der folgenden Situationen verarbeiten:

  • Wenn der Treiber erfordert, dass die Konvertierung in einer Weise durchgeführt werden muss, die sich von der konvertierung unterscheidet, die vom Systemmischer ausgeführt wird.

  • Wenn der Treiber Streams wiedergeben muss, die den Systemmischer umgehen.

In der zweiten Situation kann ein Stream den Systemmischer umgehen, wenn von einem Hardware-beschleunigten Microsoft DirectSound-Puffer direkt an einen Hardwaremischstift auf dem Audiogerät wiedergegeben wird. Außerdem senden einige "Pro Audio"-Anwendungen ihre Streams direkt an das Audiogerät, um entweder die Latenz des Systemmischers zu vermeiden oder um zu verhindern, dass der Mischprozess die digitalen Beispielwerte im ursprünglichen Audiostream ändert.

Wenn der Systemmischer in Windows Server 2003 mit SP1 und Windows XP mit SP2 einen Ausgabestream mit 5,1 Kanälen erzeugt, legt der Mixer die Kanalmaske des Streams immer auf 0x3F fest. Der Systemmischer verhält sich so, auch wenn er einen 5.1-Kanal-Eingabestream mit einer Kanalmaske von 0x60F empfängt. Bei diesem Verhalten empfängt ein Audiotreiber nie einen 5.1-Kanal-Stream mit einer Kanalmaske von 0x60F vom Mixer.

Wenn der Systemmischer einen 7.1-Kanal-Eingabestream mit einer Kanalmaske von 0x63F empfängt und einen 5.1-Kanal-Ausgabestream erzeugt (mit einer Kanalmaske von 0x3F), kopiert der Mixer die Kanäle 6 und 7 im Eingabedatenstrom an die Kanäle 4 und 5 im Ausgabestream. Der Mixer verwirft die Kanäle 4 und 5 (für die beiden Hinterlautsprecher) aus dem 7.1-Kanal-Eingabestream. Dieses Verhalten stellt sicher, dass die Kanäle, die den Inhalt für die beiden Seitenlautsprecher im 7.1-Kanal-Stream enthalten, über die Seitenlautsprecher in der 5.1-Lautsprecherkonfiguration wiedergegeben werden.