XAudio2 操作セット
いくつかの XAudio2 メソッドは、必要に応じて、操作セットの一部として呼び出すことができます。これらのメソッドは、OperationSet 引数を取り、これによって、メソッドの遅延グループ (バッチ) の一部として呼び出すことが許可されます。バッチは操作セットです。特定の日時に、バッチの OperationSet 識別子で関数 IXAudio2::CommitChanges を呼び出すことにより、全体の変更内容のセットを同時に適用できます。この識別子は任意の数字のため、クライアント コードの各部分は、競合することなく、個別の変更内容をグラフに厳密に適用することができます。クライアントは、新しい OperationSet の一意の識別子を生成する必要があるたびに、常にグローバル カウンターを増加することをお勧めします。グラフにアトミックに適用される変更内容のセットは、サンプルに忠実であることが保証されています。たとえば、ボイスは、同時に開始されます。
OperationSet が XAUDIO2_COMMIT_NOW に設定されている場合、変更内容はすぐに適用され、メソッド呼び出し後の最初のオーディオ処理のパスで有効になります。CommitChanges が XAUDIO2_COMMIT_ALL で呼び出される場合、その OperationSet 識別子とは関係なく、すべての保留中の操作セットが実行されます。
いくつかのメソッドが、XAUDIO2_COMMIT_NOW の OperationSet によって XAudio2 コールバックから呼び出されるとすぐに有効になります。
- SetEffectParameters
- EnableEffect
- DisableEffect
- SubmitPacket
これによりクライアントでは、データが使用される直前に、エフェクト パラメーターを調整して OnVoiceProcessingPassStart の最新のオーディオ データを送信できます。OperationSet 引数を使用するその他すべてのメソッドは、呼び出された後 (XAUDIO2_COMMIT_NOW によって呼び出された場合) か、または同じ OperationSet によって CommitChanges が呼び出された後に、次のプロセッシング パスで実行されます。そのため特定のメソッド呼び出しが、必ずしもそれが呼び出された順に実行されるとは限りません。
IXAudio2::StopEngine が呼び出されると、すべての保留中の処理は自動的にコミットされます。エンジンが停止している間に呼び出されたメソッドは、OperationSet の値が指定されているかどうかに関係なく、直ちに有効になります。エンジンを再開すると、XAudio2 は、非同期モードに戻ります。
操作セットが有効となる、単純なシナリオの例は次のとおりです。
- 複数のボイスを同時に開始する。
- ボイスへのバッファーの送信、ボイス パラメーターの設定、ボイスの開始を同時に行う。
- すべてのソース ボイスを新しいサブミックス ボイスに接続するなど、グラフに対して大規模な変更を行う。
操作セットの使用例については、「方法 : 操作セットとしてのグループ オーディオ メソッド」を参照してください。
操作セットのメソッド
次のメソッドは、操作セットの一部として呼び出すことができます。
- IXAudio2SourceVoice::ExitLoop
- IXAudio2Voice::SetFilterParameters
- IXAudio2SourceVoice::SetFrequencyRatio
- IXAudio2Voice::DisableEffect
- IXAudio2Voice::EnableEffect
- IXAudio2Voice::SetChannelVolume
- IXAudio2Voice::SetEffectParameters
- IXAudio2Voice::SetOutputMatrix
- IXAudio2Voice::SetVolume
- IXAudio2SourceVoice::Start
- IXAudio2SourceVoice::Stop
前述したように、クライアント コードは、最終的に関数 IXAudio2::CommitChanges を呼び出して、遅延変更を実行する必要があります。
関連トピック
- XAudio2 の概要
XAudio2 の概要を説明します。
- 方法 : 操作セットとしてのグループ オーディオ メソッド
操作セットの使用例を手順を追って説明します。