Set di operazioni XAudio2
Questa panoramica introduce 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. Pertanto, consente a parti separate del codice client di applicare modifiche atomice separate al grafico senza alcun conflitto. La procedura consigliata consiste nell'aumentare un contatore globale ogni volta che deve generare un identificatore OperationSet univoco e nuovo. Un set di modifiche al grafico, applicato atomicamente, è garantito essere accurato. Ad esempio, le voci inizieranno in sincronizzazione.
Se si imposta OperationSet su XAUDIO2_COMMIT_NOW, la modifica viene applicata immediatamente. L'elaborazione audio viene eseguita 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 hanno effetto 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 CommitChanges viene chiamato con lo stesso OperationSet. A causa di questo, alcune chiamate di metodo potrebbero non verificarsi sempre nello stesso ordine in cui sono stati chiamati.
Tutte le operazioni in sospeso vengono eseguite in modo atomico quando viene chiamato IXAudio2::StopEngine . Tutti i metodi chiamati mentre il motore viene arrestato hanno effetto immediatamente, indipendentemente dal valore OperationSet specificato. Quando si riavvia il motore, XAudio2 restituisce la modalità asincrona.
Gli scenari semplici in cui i set di operazioni sono utili includono gli esempi seguenti.
- Avvio simultaneo di più voci.
- Contemporaneamente l'invio di un buffer a una voce, l'impostazione dei parametri vocali e l'avvio della voce.
- Apportare una modifica su larga scala al grafico, ad esempio la connessione di tutte le voci di origine a una nuova voce submix.
Vedere Procedura: Raggruppare metodi audio come set di operazioni per un esempio di uso di un set di operazioni.
Metodi 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