XAudio2-bewerkingssets
In dit overzicht worden verschillende XAudio2-methoden geïntroduceerd die u kunt aanroepen als onderdeel van een bewerkingsset.
Verschillende XAudio2-methoden nemen het argument OperationSet, waarmee ze kunnen worden aangeroepen als onderdeel van een uitgestelde groep. Op een bepaald moment kunt u een hele set wijzigingen tegelijk toepassen door de functie aan te roepen IXAudio2::CommitChanges met de OperationSet-id voor die groep. De id is een willekeurig getal. Hierdoor kunnen afzonderlijke onderdelen van de clientcode afzonderlijke atomische wijzigingen in de grafiek toepassen zonder conflicten. De aanbevolen procedure is dat de client een globale teller kan verhogen wanneer deze een unieke, nieuwe OperationSet-id moet genereren. Een set wijzigingen in de grafiek, die atomisch wordt toegepast, is gegarandeerd nauwkeurig voor steekproeven. Stemmen worden bijvoorbeeld gesynchroniseerd.
Als u OperationSet instelt op XAUDIO2_COMMIT_NOW, wordt de wijziging onmiddellijk toegepast. Dit wordt van kracht in de eerste audioverwerkingspas na de methodeaanroep. Als u CommitChanges- aanroept met XAUDIO2_COMMIT_ALL, worden wijzigingen in alle in behandeling zijnde bewerkingssets uitgevoerd, ongeacht de OperationSet-id.
Bepaalde methoden worden onmiddellijk van kracht wanneer ze worden aangeroepen vanuit een XAudio2-callback met een OperationSet- van XAUDIO2_COMMIT_NOW. Alle andere methoden die een OperationSet argument nemen, worden alleen van kracht op de volgende verwerkingspas nadat de methode is aangeroepen (indien aangeroepen met XAUDIO2_COMMIT_NOW), of nadat CommitChanges wordt aangeroepen met dezelfde OperationSet. Hierdoor kunnen bepaalde methode-aanroepen niet altijd plaatsvinden in dezelfde volgorde waarin ze werden aangeroepen.
Alle bewerkingen die in behandeling zijn, worden atomisch doorgevoerd wanneer IXAudio2::StopEngine- wordt aangeroepen. Alle methoden die worden aangeroepen terwijl de engine wordt gestopt, worden onmiddellijk van kracht, ongeacht de OperationSet opgegeven waarde. Wanneer u de engine opnieuw opstart, keert XAudio2 terug naar de asynchrone modus.
Eenvoudige scenario's waarin bewerkingssets nuttig zijn, zijn onder andere de volgende voorbeelden.
- Meerdere stemmen tegelijk starten.
- Tegelijkertijd een buffer verzenden naar een stem, de spraakparameters instellen en de stem starten.
- Het maken van een grootschalige wijziging in de grafiek, zoals het verbinden van alle bronstemmen met een nieuwe submixstem.
Zie Procedure: Audiomethoden groeperen als een bewerkingsset voor een voorbeeld van het gebruik van een bewerkingsset.
Methoden voor bewerkingssets
U kunt de volgende methoden aanroepen als onderdeel van een bewerkingsset.
- IXAudio2SourceVoice::ExitLoop
- IXAudio2Voice::SetFilterParameters
- IXAudio2SourceVoice::SetFrequencyRatio
- IXAudio2Voice::D isableEffect
- IXAudio2Voice::EnableEffect
- IXAudio2Voice::SetChannelVolumes
- IXAudio2Voice::SetEffectParameters
- IXAudio2Voice::SetOutputMatrix
- IXAudio2Voice::SetVolume
- IXAudio2SourceVoice::Start
- IXAudio2SourceVoice::Stop
Zoals eerder beschreven, moet de clientcode uiteindelijk de functie aanroepen IXAudio2::CommitChanges om de uitgestelde wijzigingen uit te voeren.
Verwante onderwerpen