다음을 통해 공유


XAudio2 기본 채널 매핑

XAudio2 클라이언트는 음성 채널에서 각 대상 음성의 채널로의 매핑을 완전히 제어할 수 있습니다. IXAudio2Voice::SetOutputMatrix 메서드를 사용하여 매핑을 제어합니다. 그러나 경우에 따라 XAudio2는 기본 송신 매트릭스를 자동으로 설정하여 이 작업을 간소화합니다. 음성의 오디오 채널과 연결된 채널 마스크(있는 경우)를 사용하여 이 작업을 수행합니다. 채널 마스크는 X3DAudio.h 및 다른 곳에서 정의된 SPEAKER_xxx 비트 마스크의 조합입니다. XAudio2에서는 채널 마스크가 0이거나 채널 수와 동일한 비트 수를 설정해야 합니다.

다음 표에서는 XAudio2에서 지원하는 형식에 대한 채널 마스크 요구 사항 및 기본값을 보여 줍니다.

형식 채널 마스크 요구 사항 기본 마스크 해당 구조체 멤버
PCM 파일에 채널 마스크가 포함될 수 있음 채널 마스크가 0이거나 없는 경우 WAVEFORMATEXTENSIBLE.dwChannelMask 또는 none(WAVEFORMATEX)
ADPCM 파일에 채널 마스크가 없습니다. 기본 채널 마스크는 항상 사용됩니다. 없음 (ADPCMWAVEFORMAT)

 

서브믹스 및 마스터 음성의 경우, 채널 마스크 또는 채널 마스크가 0이 없는 원본 음성의 경우 XAudio2는 다음 표에 따라 기본 스피커 위치를 가정합니다.

채널 암시적 채널 위치
1 두 스피커에서 항상 FrontLeft와 FrontRight로 전체 크기로 연결됩니다 (모노 사운드의 특수한 경우).
2 FrontLeft, FrontRight(기본 스테레오 구성)
3 프론트왼쪽, 프론트오른쪽, 저주파수(2.1 구성)
4 앞쪽왼쪽, 앞쪽오른쪽, 뒤쪽왼쪽, 뒤쪽오른쪽 (4채널 음향)
5 앞좌측, 앞우측, 앞중앙, 측좌, 측우 (5.0 구성)
6 FrontLeft, FrontRight, FrontCenter, LowFrequency, SideLeft, SideRight (5.1 구성) (다음 설명 참조)
7 앞좌, 앞우, 앞중앙, 저주파, 측좌, 측우, 뒷중앙(6.1 구성)
8 프론트 왼쪽, 프론트 오른쪽, 프론트 중앙, 저주파수, 뒤쪽 왼쪽, 뒤쪽 오른쪽, 옆쪽 왼쪽, 옆쪽 오른쪽 (7.1 구성)
9개 이상 암시적 위치 없음(일대일 매핑)

 

오디오 그래프의 지정된 음성 쌍에 원본 또는 대상 음성과 연결된 스피커 위치가 없는 경우(한 음성에 8개 이상의 채널이 있음) 원본 음성에 IXAudio2Voice::SetOutputMatrix 메서드를 사용하여 명시적으로 송신 매트릭스 집합이 설정될 때까지 음성을 재생할 수 없습니다. IXAudio2SourceVoice::Start 메서드는 이 작업을 수행할 때까지 실패합니다.

원본 음성 및 대상 음성의 화자 위치 수가 다르고 IXAudio2Voice::SetOutputMatrix 원본 음성에서 호출되지 않은 경우 XAudio2는 각 원본 채널을 사용 가능한 가장 가까운 대상 스피커(또는 스피커)로 보내며, 의도한 화자와 얼마나 가까운지에 비례하여 전송합니다. 기본 동작이 다른 두 가지 특별한 경우가 있습니다.

  1. 원본 오디오가 모노이고 SPEAKER_FRONT_CENTER에 위치하거나 정의된 위치가 없는 경우, 출력 오디오에 SPEAKER_FRONT_LEFT와 SPEAKER_FRONT_RIGHT가 있으면 항상 그 두 위치로 전송됩니다. 그들이 존재하지 않는 경우, 그것은 정상적인 경우로 돌아갑니다.
  2. 원본과 대상이 모두 6개 채널이고 표준 5.1 화자 설정(왼쪽+오른쪽+센터+Sub+BackL+BackR 또는 Left+Right+Center+Sub+SideL+SideR) 중 하나에 배치된 경우 채널은 1대 1로 매핑됩니다. 즉, SideLeft/Right 및 BackLeft/Right는 동일하게 처리됩니다. 이러한 설정에 대한 역사적 혼란이 있었기 때문입니다. 따라서 추측된 의도는 항상 일대일로 매핑하려는 것입니다.

음성

XAudio2 프로그래밍 가이드

GetChannelMask