XAudio2 作業集
本概觀介紹數個 XAudio2 方法,您可以呼叫做為作業集的一部分。
數個 XAudio2 方法會採用 OperationSet 自變數,以允許將其呼叫為延遲群組的一部分。 在特定時間,您可以使用該群組的 OperationSet 標識符呼叫函式 IXAudio2::CommitChanges,同時套用整組變更。 標識碼是任意數位。 因此,它允許個別的用戶端程序代碼部分將個別不可部分的不可部分變更套用至圖形,而不會發生任何衝突。 建議的做法是,每當用戶端需要產生唯一的新 OperationSet 標識符時,就會遞增全域計數器。 一組以不可部分完成方式套用的圖形變更,保證為樣本準確。 例如,語音會同步處理。
如果您將 operationSet 設定為 XAUDIO2_COMMIT_NOW,則會立即套用變更。 它會在方法呼叫之後的第一個音訊處理中生效。 如果您使用 XAUDIO2_COMMIT_ALL 呼叫 CommitChanges,則會執行所有暫止作業集的變更,不論其 OperationSet 標識符為何。
某些方法會在從 XAudio2 回呼呼叫時立即生效,其中具有 OperationSet XAUDIO2_COMMIT_NOW。 所有其他採用 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 來執行延遲的變更。
相關主題