Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klient XAudio2 ma pełną kontrolę nad mapowaniem z kanałów głosu do kanałów poszczególnych głosów docelowych. Steruje mapowaniem za pomocą metody IXAudio2Voice::SetOutputMatrix. Jednak w niektórych okolicznościach XAudio2 upraszcza to zadanie, konfigurując domyślną macierz wysyłania automatycznie. Robi to za pomocą maski kanału, jeśli taka istnieje, skojarzonej z kanałami audio przypisanymi do głosu. Maska kanału jest kombinacją masek bitowych SPEAKER_xxx zgodnie z definicją w X3DAudio.h oraz w innych miejscach. XAudio2 wymaga, aby maski kanału miały wartość 0 lub mają taką samą liczbę bitów jak liczba kanałów.
W poniższej tabeli przedstawiono wymagania dotyczące maski kanału i ustawienia domyślne formatów obsługiwanych przez XAudio2.
| Format | Wymaganie maski kanału | Maska domyślna | Odpowiedni członek struktury |
|---|---|---|---|
| PCM | Plik może zawierać maskę kanału | Maska kanału jest 0 lub nieobecna | WAVEFORMATEXTENSIBLE.dwChannelMask lub brak (WAVEFORMATEX) |
| ADPCM | Plik nie zawiera maski kanału | Domyślna maska kanału jest zawsze używana | Brak (ADPCMWAVEFORMAT) |
W przypadku podmiksów i miksów głównych oraz głosów źródłowych bez maski kanału lub z maską kanału o wartości 0, XAudio2 przyjmuje domyślne pozycje głośników zgodnie z poniższą tabelą.
| Kanały | Niejawne pozycje kanału |
|---|---|
| 1 | Zawsze mapuje na FrontLeft i FrontRight na pełną skalę w obu głośnikach (szczególny przypadek dźwięków mono) |
| 2 | FrontLeft, FrontRight (podstawowa konfiguracja stereo) |
| 3 | FrontLeft, FrontRight, LowFrequency (konfiguracja 2.1) |
| 4 | PrzódLewy, PrzódPrawy, TyłLewy, TyłPrawy (kwadrofoniczny) |
| 5 | FrontLeft, FrontRight, FrontCenter, SideLeft, SideRight (konfiguracja 5.0) |
| 6 | FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight (konfiguracja 5.1) (zobacz następujące uwagi) |
| 7 | FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight, BackCenter (konfiguracja 6.1) |
| 8 | PrzódLewo, PrzódPrawo, PrzódŚrodek, NiskieCzęstotliwości, TyłLewo, TyłPrawo, BokLewo, BokPrawo (układ 7.1) |
| 9 lub więcej | Brak niejawnych pozycji (mapowanie jeden do jednego) |
Jeśli dana para głosowa na grafie audio nie ma pozycji głośników skojarzonych z głosem źródłowym lub docelowym (jeden głos ma więcej niż osiem kanałów), żaden głos nie jest odtwarzalny, dopóki głos źródłowy nie ma macierzy wysyłania ustawionej jawnie przy użyciu IXAudio2Voice::SetOutputMatrix metody. Wywołanie metody IXAudio2SourceVoice::Start dla obu głosów zakończy się niepowodzeniem, dopóki nie zrobisz tego.
Jeśli głos źródłowy i głos docelowy mają różne liczby pozycji głośników i nie wywołano metody IXAudio2Voice::SetOutputMatrix na głosie źródłowym, XAudio2 wysyła każdy kanał źródłowy do najbliższego dostępnego głośnika docelowego (lub głośników), proporcjonalnie do tego, jak blisko są do zamierzonego głośnika. Istnieją dwa specjalne przypadki, w których zachowanie domyślne jest inne.
- Jeśli źródłowy dźwięk jest mono i jest umieszczony w SPEAKER_FRONT_CENTER lub nie ma zdefiniowanej pozycji, zawsze jest wysyłany do SPEAKER_FRONT_LEFT i SPEAKER_FRONT_RIGHT, jeśli istnieją w dźwięku wyjściowego. Jeśli nie istnieją, wraca do sytuacji domyślnej.
- Jeśli źródło i lokalizacja docelowa są zarówno 6-kanałowe, jak i są umieszczone w jednej ze standardowych konfiguracji głośników 5.1 (Lewa+Prawa+Środkowa+Środkowa+Sub+BackL+BackR lub Lewa+Prawa+Środkowa+Sub+SideL+SideR), kanały są mapowane przez jeden do jednego. Innymi słowy, SideLeft/Right i BackLeft/Right są traktowane równoważnie. Dzieje się tak dlatego, że wokół tych konfiguracji pojawiało się historyczne zamieszanie. Domniemaną intencją jest zawsze odwzorowanie jeden do jednego.
Tematy pokrewne
-
Przewodnik programowania XAudio2