다음을 통해 공유


IXAudio2::CreateSubmixVoice 메서드(xaudio2.h)

서브믹스 음성을 만들고 구성합니다.

구문

HRESULT CreateSubmixVoice(
  [out]          IXAudio2SubmixVoice        **ppSubmixVoice,
  [in]           UINT32                     InputChannels,
  [in]           UINT32                     InputSampleRate,
  [in]           UINT32                     Flags,
  [in]           UINT32                     ProcessingStage,
  [in, optional] const XAUDIO2_VOICE_SENDS  *pSendList,
  [in, optional] const XAUDIO2_EFFECT_CHAIN *pEffectChain
);

매개 변수

[out] ppSubmixVoice

성공하면 새 IXAudio2SubmixVoice 개체에 대한 포인터를 반환합니다.

[in] InputChannels

서브믹스 음성의 입력 오디오 데이터의 채널 수입니다. InputChannels 는 XAUDIO2_MAX_AUDIO_CHANNELS 작거나 같아야 합니다.

[in] InputSampleRate

서브믹스 음성의 입력 오디오 데이터의 샘플 속도입니다. 이 속도는 XAUDIO2_QUANTUM_DENOMINATOR 배수여야 합니다. InputSampleRate 는 XAUDIO2_MIN_SAMPLE_RATE XAUDIO2_MAX_SAMPLE_RATE 사이여야 합니다.

[in] Flags

서브믹스 음성의 동작을 지정하는 플래그입니다. 0 또는 다음일 수 있습니다.

Description
XAUDIO2_VOICE_USEFILTER 필터 효과는 이 음성에서 사용할 수 있어야 합니다.

[in] ProcessingStage

XAudio2 엔진이 다른 서브믹스 음성을 실행하는 경우 이 음성이 다른 서브믹스 음성과 관련하여 처리되는 시기를 지정하는 임의의 숫자입니다. 음성은 더 작은 ProcessingStage 값을 포함하는 다른 모든 음성과 더 큰 ProcessingStage 값을 포함하는 다른 모든 음성 앞에 처리됩니다. 동일한 ProcessingStage 값을 포함하는 음성은 순서대로 처리됩니다. 서브믹스 음성은 ProcessingStage 값이 낮거나 같은 다른 서브믹스 음성으로 보낼 수 없습니다. 이렇게 하면 서브믹스 주기로 인해 오디오가 손실되지 않습니다.

[in, optional] pSendList

서브믹스 음성의 대상 음성 집합을 설명하는 XAUDIO2_VOICE_SENDS 구조 목록의 포인터입니다. pSendList가 NULL인 경우 전송 목록은 기본적으로 생성된 첫 번째 마스터링 음성에 대한 단일 출력으로 설정됩니다.

[in, optional] pEffectChain

서브믹스 음성에서 사용할 효과 체인을 설명하는 XAUDIO2_EFFECT_CHAIN 구조 목록의 포인터입니다.

반환 값

성공하면 S_OK 반환합니다. 그렇지 않으면 오류 코드입니다.

XAudio2 특정 오류 코드에 대한 설명은 XAudio2 오류 코드를 참조하세요.

설명

서브믹스 음성은 하나 이상의 원본 또는 서브믹스 음성의 출력을 받습니다. 출력을 처리한 다음 다른 서브믹스 음성 또는 마스터링 음성으로 보냅니다.

서브믹스 음성은 입력 샘플 속도에서 pSendList의 출력 음성 입력 속도로 샘플 속도 변환을 수행합니다. 여러 음성 보내기를 지정하는 경우 모두 동일한 입력 샘플 속도를 가져야 합니다.

마스터링 음성이 존재할 때까지 소스 또는 서브믹스 음성을 만들 수 없으며 소스 또는 서브믹스 음성이 여전히 있는 경우 마스터링 음성을 삭제할 수 없습니다.

처음 만들 때 서브믹스 음성이 시작됨 상태입니다.

XAudio2는 동일한 형식의 음성에 내부 메모리 풀러를 사용합니다. 즉, 더 많은 음성이 생성되고 제거되면 음성에 대한 메모리 할당이 덜 자주 발생합니다. Just-In-Time 할당을 최소화하기 위해 타이틀은 미리 필요한 예상 최대 음성 수를 만든 다음 필요에 따라 삭제할 수 있습니다. 그러면 XAudio2 풀에서 음성이 다시 사용됩니다. 메모리 풀은 XAudio2 엔진 instance 연결됩니다. XAudio2 개체를 삭제하고 필요에 따라 다시 만들어 XAudio2 엔진의 instance 사용하는 모든 메모리를 회수할 수 있습니다(필요에 따라 메모리 풀이 사전 할당을 통해 증가하도록 강요).

콜백 내에서 CreateSubmixVoice 를 호출하는 것은 잘못되었습니다(즉, IXAudio2EngineCallback 또는 IXAudio2VoiceCallback). 콜백 내에서 CreateSubmixVoice 를 호출하면 XAUDIO2_E_INVALID_CALL 반환됩니다.

pEffectChain 인수로 전달되는 XAUDIO2_EFFECT_CHAIN 및 그 안에 포함된 XAUDIO2_EFFECT_DESCRIPTOR 정보는 CreateSubmixVoice가 성공적으로 완료된 후 더 이상 필요하지 않으며 CreateSubmixVoice가 호출된 직후에 삭제될 수 있습니다.

플랫폼 요구 사항

Windows 10(XAudio2.9); Windows 8, Windows Phone 8(XAudio 2.8); DirectX SDK(XAudio 2.7)

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 xaudio2.h

추가 정보

IXAudio2

XAudio2 샘플 속도 변환