XAudio2 操作セット
この概要では、操作セットの一部として呼び出すことができるいくつかの XAudio2 メソッドについて説明します。
いくつかの XAudio2 メソッドは OperationSet 引数を受け取ります。これにより、遅延グループの一部として呼び出すことができます。 特定の時点で、そのグループの OperationSet 識別子を使用して IXAudio2::CommitChanges 関数を呼び出すことで、一連の変更全体を同時に適用できます。 識別子は任意の数値です。 したがって、クライアント コードの個別の部分で、競合することなく個別のアトミック変更をグラフに適用できます。 クライアントが一意の新しい OperationSet 識別子を生成する必要がある場合は常に、グローバル カウンターをインクリメントすることをお勧めします。 アトミックに適用されるグラフに対する一連の変更は、サンプル精度であることが保証されます。 たとえば、音声は同期で開始されます。
OperationSet を XAUDIO2_COMMIT_NOW に設定すると、変更はすぐに適用されます。 これは、メソッド呼び出しの後の最初のオーディオ処理パスで有効になります。 XAUDIO2_COMMIT_ALLで CommitChanges を 呼び出すと、 OperationSet 識別子に関係なく、保留中のすべての操作セットに対する変更が実行されます。
特定のメソッドは、 XAUDIO2_COMMIT_NOWの OperationSet を使用して XAudio2 コールバックから呼び出されるとすぐに有効になります。 OperationSet 引数を受け取る他のすべてのメソッドは、メソッドが呼び出された後 (XAUDIO2_COMMIT_NOWで呼び出された場合)、または CommitChanges が同じ OperationSet で呼び出された後の次の処理パスでのみ有効になります。 このため、特定のメソッド呼び出しが、呼び出された順序と同じ順序で常に行われるとは限りません。
保留中のすべての操作は、 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 関数を呼び出して遅延変更を実行する必要があります。
関連トピック