Zestawy operacji XAudio2
W tym omówieniu przedstawiono kilka metod XAudio2, które można wywołać w ramach zestawu operacji.
Kilka metod XAudio2 bierze OperationSet argument, który umożliwia ich wywoływanie w ramach odroczonej grupy. W określonym czasie można zastosować cały zestaw zmian jednocześnie, wywołując funkcję IXAudio2::CommitChanges za pomocą identyfikatora OperationSet dla tej grupy. Identyfikator jest dowolną liczbą. W związku z tym umożliwia oddzielnym częściom kodu klienta stosowanie oddzielnych zmian niepodzielnych do grafu bez żadnych konfliktów. Zalecaną praktyką jest, aby klient zwiększał licznik globalny zawsze, gdy musi wygenerować unikatowy, nowy identyfikator OperationSet. Zestaw zmian wykresu, zastosowany niepodziecznie, ma gwarancję dokładności próbki. Na przykład głosy będą uruchamiane w synchronizacji.
Jeśli ustawisz OperationSet na XAUDIO2_COMMIT_NOW, zmiana zostanie natychmiast stosowana. Następuje to w pierwszym przebiegu przetwarzania dźwięku po wywołaniu metody. Jeśli wywołasz CommitChanges z XAUDIO2_COMMIT_ALL, zostaną wykonane zmiany wszystkich oczekujących zestawów operacji, niezależnie od ich identyfikatora OperationSet.
Niektóre metody zaczynają obowiązywać natychmiast, gdy są wywoływane z wywołania zwrotnego XAudio2 z OperationSet XAUDIO2_COMMIT_NOW. Wszystkie inne metody, które przyjmują argument OperationSet mają wpływ tylko na następne przekazywanie przetwarzania po wywołaniu metody (jeśli jest wywoływana z XAUDIO2_COMMIT_NOW) lub po wywołaniu CommitChanges jest wywoływana z tym samym OperationSet. W związku z tym niektóre wywołania metod mogą nie zawsze występować w takiej samej kolejności, w jakiej były wywoływane.
Wszystkie oczekujące operacje są zatwierdzane niepodzielnie po wywołaniu IXAudio2::StopEngine. Wszystkie metody wywoływane podczas zatrzymywania aparatu zaczynają obowiązywać natychmiast, niezależnie od podanej wartości OperationSet. Po ponownym uruchomieniu aparatu funkcja XAudio2 powraca do trybu asynchronicznego.
Proste scenariusze, w których zestawy operacji są przydatne, obejmują następujące przykłady.
- Jednoczesne uruchamianie wielu głosów.
- Jednocześnie przesyła bufor do głosu, ustawiając parametry głosu i uruchamiając głos.
- Zmiana na dużą skalę na graf, taka jak łączenie wszystkich głosów źródłowych z nowym głosem podrzędnym.
Zobacz How to: Group Audio Methods as an Operation Set (Jak grupować metody audio jako zestaw operacji), aby zapoznać się z przykładem użycia zestawu operacji.
Metody zestawu operacji
W ramach zestawu operacji można wywołać następujące metody.
- IXAudio2SourceVoice::ExitLoop
- IXAudio2Voice::SetFilterParameters
- IXAudio2SourceVoice::SetFrequencyRatio
- IXAudio2Voice::D isableEffect
- IXAudio2Voice::EnableEffect
- IXAudio2Voice::SetChannelVolumes
- IXAudio2Voice::SetEffectParameters
- IXAudio2Voice::SetOutputMatrix
- IXAudio2Voice::SetVolume
- IXAudio2SourceVoice::Start
- IXAudio2SourceVoice::Stop
Zgodnie z wcześniejszym opisem kod klienta musi ostatecznie wywołać funkcję IXAudio2::CommitChanges w celu wykonania odroczonych zmian.
Tematy pokrewne
-
przewodnik programowania XAudio2