XAudio2 오디오 그래프

포함된 효과와 상호 연결된 모든 음성 집합을 오디오 처리 그래프라고 합니다. 그래프는 클라이언트의 오디오 스트림 집합을 입력으로 사용하고, 처리하고, 최종 결과를 오디오 디바이스에 전달합니다. 모든 오디오 처리는 그래프의 양자(현재 Microsoft Windows의 경우 10밀리초, Xbox 360에서는 5 1/3밀리초)로 정의된 주기가 있는 별도의 스레드에서 발생합니다. 모든 양자 밀리초마다 스레드는 절전 모드를 해제하고 전체 그래프를 통해 오디오 데이터의 양자 밀리초를 분산합니다. 기본 오디오 그래프를 빌드하는 예제는 방법: 기본 오디오 처리 그래프 빌드를 참조하세요.

간단한 오디오 그래프:

간단한 오디오 그래프

클라이언트는 실행되는 동안 그래프의 상태를 동적으로 제어할 수 있습니다. 제어 작업에는 입력 및 출력 추가 및 제거, 내부 효과 및 상호 연결 변경, 효과에 대한 매개 변수 설정, 그래프 부분 사용 및 사용 안 함 등이 포함될 수 있습니다. 오디오 그래프를 동적으로 변경하는 예제는 방법: 오디오 그래프에서 음성 동적 추가 또는 제거를 참조하세요.

그래프 처리

그래프의 모든 개체에 영향을 주는 메서드 호출은 그래프 상태 변경에 영향을 주는 것으로 간주됩니다. 그래프 상태 변경 내용은 다음과 같습니다.

  • 음성 만들기 및 삭제
  • 음성 시작 또는 중지
  • 음성 대상 변경
  • 효과 체인 수정
  • 효과 사용 또는 사용 안 함
  • 효과 또는 기본 제공 SRC, 필터, 볼륨 및 믹서에 대한 매개 변수 설정

모든 그래프 상태 변경 집합을 결합하고 원자성 트랜잭션으로 수행할 수 있습니다. 이러한 원자성 연산을 작업 집합이라고 합니다. XAudio2 작업 집합 개요에서 설명합니다.

내부 데이터 표현

XAudio2 그래프 내의 오디오 데이터는 항상 32비트 부동 소수점 PCM 형태로 저장되고 처리됩니다. 그러나 채널 수 및 샘플 속도는 그래프 내에서 다를 수 있습니다. 지정된 음성이 오디오를 처리하는 형식은 음성을 만드는 데 사용되는 음성 유형 및 매개 변수에 따라 결정됩니다.

음성 유형 매개 변수
IXAudio2SourceVoice 원본 음성이 오디오를 보내는 음성의 채널 수 및 샘플 속도입니다.
IXAudio2SubmixVoiceIXAudio2MasteringVoice 서브믹스/마스터링 음성을 만드는 데 사용되는 InputChannelsInputSampleRate 인수입니다.

 

형식 변환

XAudio2는 오디오가 한 음성에서 다른 음성으로 이동하는 데 필요한 샘플 속도 또는 채널 변환을 처리하며 다음과 같은 제한 사항이 있습니다.

  • 특정 음성에 대한 모든 대상 음성은 동일한 샘플 속도로 실행되어야 합니다.
  • 효과 체인의 효과는 오디오의 채널 수를 변경할 수 있지만 샘플 속도는 변경할 수 없습니다.
  • 효과 체인의 출력 채널 수는 보내는 음성의 수와 일치해야 합니다.
  • 위의 규칙을 위반하는 동적 그래프 변경은 수행할 수 없습니다.

입력 쪽에서 원본 음성은 유효한 PCM 형식 또는 XAudio2에서 지원하는 압축된 형식으로 데이터를 읽을 수 있습니다. 입력 데이터가 압축되면 추가 처리가 수행되기 전에 부동 소수점 PCM으로 디코딩됩니다.

출력 쪽에서 음성 마스터는 PCM 데이터만 생성할 수 있습니다. 이 데이터는 항상 입력 PCM 데이터에 대해 위에서 설명한 것과 동일한 제한을 충족합니다.

오디오 그래프

XAudio2 프로그래밍 지침

방법: 기본 오디오 처리 그래프 빌드

방법: 오디오 그래프에서 동적으로 음성 추가 또는 제거

방법: 서브믹스 음성 사용

방법: 효과 체인 만들기