XAudio2-Standardkanalzuordnung

Ein XAudio2-Client hat die vollständige Kontrolle über die Zuordnung von den Kanälen einer Stimme zu den Kanälen der einzelnen Zielstimme. Sie steuert die Zuordnung mithilfe der IXAudio2Voice::SetOutputMatrix-Methode . Unter bestimmten Umständen vereinfacht XAudio2 diese Aufgabe jedoch, indem eine Standardmäßige Sendematrix automatisch eingerichtet wird. Dazu wird die Kanalmaske verwendet, falls vorhanden, die den Audiokanälen einer Stimme zugeordnet ist. Eine Kanalmaske ist eine Kombination aus SPEAKER_xxx Bitmasken, die in X3DAudio.h und anderswo definiert sind. XAudio2 erfordert, dass Kanalmasken 0 sein oder die gleiche Anzahl von Bits wie die Anzahl der Kanäle festgelegt ist.

Die folgende Tabelle zeigt die Anforderungen an die Kanalmaske und die Standardwerte für die von XAudio2 unterstützten Formate.

Format Kanalmaskenanforderung Standardmaske Entsprechendes Strukturelement
PCM Datei kann eine Kanalmaske enthalten Kanalmaske ist 0 oder fehlt WAVEFORMATEXTENSIBLE.dwChannelMask oder none (WAVEFORMATEX)
ADPCM Die Datei enthält keine Kanalmaske. Die Standardkanalmaske wird immer verwendet. Keine (ADPCMWAVEFORMAT)

 

Für Submix- und Masterstimme sowie für Quellstimme ohne Kanalmaske oder Kanalmaske von 0 geht XAudio2 gemäß der folgenden Tabelle von Standardlautsprecherpositionen aus.

Channels Implizite Kanalpositionen
1 Immer in beiden Lautsprechern FrontLeft und FrontRight in vollem Maßstab zugeordnet (Sonderfall für Monosounds)
2 FrontLeft, FrontRight (grundlegende Stereokonfiguration)
3 FrontLeft, FrontRight, LowFrequency (Konfiguration 2.1)
4 FrontLeft, FrontRight, BackLeft, BackRight (quadraphonic)
5 FrontLeft, FrontRight, FrontCenter, SideLeft, SideRight (Konfiguration 5.0)
6 FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight (Konfiguration 5.1) (siehe die folgenden Hinweise)
7 FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight, BackCenter (6.1-Konfiguration)
8 FrontLeft, FrontRight, FrontCenter, LowFrequency, BackLeft, BackRight, SideLeft, SideRight (Konfiguration 7.1)
9 oder mehr Keine impliziten Positionen (1:1 Zuordnung)

 

Wenn ein bestimmtes Stimmpaar im Audiodiagramm weder der Quell- noch der Zielstimme eine Sprecherposition zugeordnet ist (eine Stimme verfügt über mehr als acht Kanäle), ist keine Stimme abspielbar, bis die Quellstimme eine Sendematrix explizit mit der IXAudio2Voice::SetOutputMatrix-Methode festgelegt hat. Beim Aufrufen der IXAudio2SourceVoice::Start-Methode für beide Stimmen tritt ein Fehler auf, bis Sie dies tun.

Wenn die Quellstimme und die Zielstimme eine unterschiedliche Anzahl von Sprecherpositionen aufweisen und IXAudio2Voice::SetOutputMatrix nicht für die Quellstimme aufgerufen wurde, sendet XAudio2 jeden Quellkanal an den nächstgelegenen verfügbaren Ziellautsprecher (oder Lautsprecher). Es gibt zwei Sonderfälle, in denen sich das Standardverhalten unterscheidet.

  1. Wenn das Quellaudio mono ist und an SPEAKER_FRONT_CENTER positioniert ist oder keine definierte Position aufweist, wird es immer an SPEAKER_FRONT_LEFT und SPEAKER_FRONT_RIGHT gesendet, sofern sie in der Ausgabeaudio vorhanden sind. Wenn sie nicht vorhanden sind, fällt es auf den Normalfall zurück.
  2. Wenn die Quelle und das Ziel beide 6-Kanal-Kanäle sind und in einem der Standard-5.1-Lautsprechersetups (Links+Rechts+Mitte+Sub+BackL+BackR oder Links+Rechts+Mitte+Sub+SideL+SideR) positioniert sind, werden Kanäle über eins zu eins zugeordnet. Mit anderen Worten: SideLeft/Right und BackLeft/Right werden gleichwertig behandelt. Dies liegt daran, dass es um diese Setups historische Verwirrung gab. Daher besteht die angenommene Absicht immer darin, eins zu eins zu zuordnen.

Stimmen

XAudio2-Programmieranleitung

GetChannelMask