XAudio2 操作セット
この概要では、操作セットの一部として呼び出すことができるいくつかの XAudio2 メソッドについて説明します。
いくつかの XAudio2 メソッドは、OperationSet 引数を受け取り、遅延グループの一部として呼び出すことができます。 特定の時点で、IXAudio2::CommitChanges関数を呼び出し、そのグループの OperationSet 識別子を使用して、一連の変更を同時に適用できます。 識別子は任意の数値です。 したがって、クライアント コードの個別の部分で、競合することなく個別のアトミック変更をグラフに適用できます。 推奨される方法は、一意の新しい OperationSet 識別子を生成する必要があるときに、クライアントがグローバル カウンターをインクリメントすることです。 グラフに対する一連の変更は、アトミックに適用され、サンプル精度が保証されます。 たとえば、音声は同期して開始されます。
OperationSet を XAUDIO2_COMMIT_NOW に設定した場合、変更はすぐに適用されます。 これは、メソッド呼び出しの後の最初のオーディオ処理パスで有効になります。 XAUDIO2_COMMIT_ALL CommitChanges を呼び出すと、OperationSet 識別子に関係なく、保留中のすべての操作セットに対する変更が実行されます。
特定のメソッドは、XAUDIO2_COMMIT_NOWの OperationSet を使用して XAudio2 コールバックから呼び出されるとすぐに有効になります。 OperationSet 引数を受け取るその他のすべてのメソッドは、メソッドが呼び出された後 (XAUDIO2_COMMIT_NOW で呼び出された場合)、または同じ OperationSetを使用して CommitChanges呼び出された後にのみ、次の処理パスで有効になります。 このため、特定のメソッド呼び出しが、呼び出された順序と同じ順序で行われるとは限りません。
保留中のすべての操作は、IXAudio2::StopEngine呼び出されるとアトミックにコミットされます。 エンジンの停止中に呼び出されるすべてのメソッドは、指定された OperationSet 値に関係なく、すぐに有効になります。 エンジンを再起動すると、XAudio2 は非同期モードに戻ります。
操作セットが便利な単純なシナリオには、次の例が含まれます。
- 複数の音声を同時に開始する。
- 同時にバッファーを音声に送信し、音声パラメーターを設定し、音声を開始します。
- すべてのソース音声を新しいサブミックス音声に接続するなど、グラフに大規模な変更を行います。
操作セットの使用例については、「方法: オーディオ メソッドを操作セット としてグループ化する」を参照してください。
Operation Set メソッド
操作セットの一部として、次のメソッドを呼び出すことができます。
- 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関数を呼び出して遅延変更を実行する必要があります。
関連トピック