Set di operazioni XAudio2
Questa panoramica presenta diversi metodi XAudio2 che è possibile chiamare come parte di un set di operazioni.
Diversi metodi XAudio2 accettano l'argomento OperationSet, che consente di chiamarli come parte di un gruppo posticipato. In un momento specifico, è possibile applicare un intero set di modifiche contemporaneamente chiamando la funzione IXAudio2::CommitChanges con l'identificatore OperationSet per tale gruppo. L'identificatore è un numero arbitrario. In questo modo, consente a parti separate del codice client di applicare modifiche atomice separate al grafico senza conflitti. La procedura consigliata è che il client incrementi un contatore globale ogni volta che deve generare un identificatore univoco OperationSet. È garantito che un set di modifiche al grafico, applicato in modo atomico, sia accurato. Ad esempio, le voci verranno avviate nella sincronizzazione.
Se si imposta OperationSet su XAUDIO2_COMMIT_NOW, la modifica viene applicata immediatamente. Ha effetto nel primo passaggio di elaborazione audio dopo la chiamata al metodo. Se si chiama CommitChanges con XAUDIO2_COMMIT_ALL, vengono eseguite modifiche a tutti i set di operazioni in sospeso, indipendentemente dal relativo identificatore OperationSet.
Alcuni metodi diventano effettivi immediatamente quando vengono chiamati da un callback XAudio2 con un OperationSet di XAUDIO2_COMMIT_NOW. Tutti gli altri metodi che accettano un argomento OperationSet hanno effetto solo sul passaggio di elaborazione successivo dopo che il metodo viene chiamato (se chiamato con XAUDIO2_COMMIT_NOW) o dopo che CommitChanges viene chiamato con lo stesso OperationSet. Per questo motivo, alcune chiamate di metodo potrebbero non essere sempre eseguite nello stesso ordine in cui sono state chiamate.
Tutte le operazioni in sospeso vengono sottoposte a commit atomico quando viene chiamato IXAudio2::StopEngine. Tutti i metodi chiamati mentre il motore viene arrestato diventano immediatamente effettivi, indipendentemente dal valore OperationSet specificato. Quando si riavvia il motore, XAudio2 torna alla modalità asincrona.
Gli scenari semplici in cui i set di operazioni sono utili includono gli esempi seguenti.
- Avvio simultaneo di più voci.
- Inviando contemporaneamente un buffer a una voce, impostando i parametri vocali e avviando la voce.
- Apportare una modifica su larga scala al grafico, ad esempio connettere tutte le voci di origine a una nuova voce submix.
Vedere Procedura: Raggruppare i metodi audio come set di operazioni per un esempio di utilizzo di un set di operazioni.
Metodi del set di operazioni
È possibile chiamare i metodi seguenti come parte di un set di operazioni.
- IXAudio2SourceVoice::ExitLoop
- IXAudio2Voice::SetFilterParameters
- IXAudio2SourceVoice::SetFrequencyRatio
- IXAudio2Voice::D isableEffect
- IXAudio2Voice::EnableEffect
- IXAudio2Voice::SetChannelVolumes
- IXAudio2Voice::SetEffectParameters
- IXAudio2Voice::SetOutputMatrix
- IXAudio2Voice::SetVolume
- IXAudio2SourceVoice::Start
- IXAudio2SourceVoice::Stop
Come descritto in precedenza, il codice client deve chiamare la funzione IXAudio2::CommitChanges per eseguire le modifiche posticipate.
Argomenti correlati