XAudio2 작업 집합
이 개요에서는 작업 집합의 일부로 호출할 수 있는 여러 XAudio2 메서드를 소개합니다.
여러 XAudio2 메서드는 OperationSet 인수를 사용하여 지연된 그룹의 일부로 호출할 수 있습니다. 특정 시간에 해당 그룹에 대한 OperationSet 식별자를 사용하여 IXAudio2::CommitChanges 함수를 호출하여 전체 변경 내용을 동시에 적용할 수 있습니다. 식별자는 임의의 숫자입니다. 따라서 클라이언트 코드의 별도 부분이 충돌 없이 그래프에 별도의 원자성 변경을 적용할 수 있습니다. 클라이언트가 고유한 새 OperationSet 식별자를 생성해야 할 때마다 전역 카운터를 증가시키는 것이 좋습니다. 원자적으로 적용된 그래프의 변경 내용 집합은 샘플 정확도를 보장합니다. 예를 들어 음성이 동기화에서 시작됩니다.
OperationSet을 XAUDIO2_COMMIT_NOW 설정하면 변경 내용이 즉시 적용됩니다. 메서드 호출 후 첫 번째 오디오 처리 패스에 적용됩니다. XAUDIO2_COMMIT_ALL 사용하여 CommitChanges 를 호출하는 경우 OperationSet 식별자에 관계없이 보류 중인 모든 작업 집합에 대한 변경 내용이 수행됩니다.
특정 메서드는 XAUDIO2_COMMIT_NOW OperationSet 을 사용하여 XAudio2 콜백에서 호출되면 즉시 적용됩니다. OperationSet 인수를 사용하는 다른 모든 메서드는 메서드가 호출된 후(XAUDIO2_COMMIT_NOW 사용하여 호출된 경우) 또는 CommitChanges가 동일한 OperationSet을 사용하여 호출된 후에만 다음 처리 패스에 적용됩니다. 따라서 특정 메서드 호출이 호출된 순서와 동일한 순서로 항상 발생하지는 않을 수 있습니다.
IXAudio2::StopEngine이 호출되면 보류 중인 모든 작업이 원자적으로 커밋됩니다. 엔진이 중지되는 동안 호출되는 모든 메서드는 제공된 OperationSet 값에 관계없이 즉시 적용됩니다. 엔진을 다시 시작하면 XAudio2가 비동기 모드로 돌아갑니다.
작업 집합이 유용한 간단한 시나리오에는 다음 예제가 포함됩니다.
- 여러 음성을 동시에 시작합니다.
- 동시에 버퍼를 음성에 제출하고, 음성 매개 변수를 설정하고, 음성을 시작합니다.
- 모든 원본 음성을 새 서브믹스 음성에 연결하는 등 그래프를 대규모로 변경합니다.
작업 집합을 사용하는 예제는 방법: 오디오 메서드를 작업 집합으로 그룹 화 를 참조하세요.
작업 집합 메서드
작업 집합의 일부로 다음 메서드를 호출할 수 있습니다.
- IXAudio2SourceVoice::ExitLoop
- IXAudio2Voice::SetFilterParameters
- IXAudio2SourceVoice::SetFrequencyRatio
- IXAudio2Voice::D isableEffect
- IXAudio2Voice::EnableEffect
- IXAudio2Voice::SetChannelVolumes
- IXAudio2Voice::SetEffectParameters
- IXAudio2Voice::SetOutputMatrix
- IXAudio2Voice::SetVolume
- IXAudio2SourceVoice::Start
- IXAudio2SourceVoice::Stop
앞에서 설명한 대로 클라이언트 코드는 궁극적으로 IXAudio2::CommitChanges 함수를 호출하여 지연된 변경 내용을 실행해야 합니다.
관련 항목