次の方法で共有


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 は、非同期モードに戻ります。

操作セットが有効となる、単純なシナリオの例は次のとおりです。

  • 複数のボイスを同時に開始する。
  • ボイスへのバッファーの送信、ボイス パラメーターの設定、ボイスの開始を同時に行う。
  • すべてのソース ボイスを新しいサブミックス ボイスに接続するなど、グラフに対して大規模な変更を行う。

操作セットの使用例については、「方法 : 操作セットとしてのグループ オーディオ メソッド」を参照してください。

操作セットのメソッド

次のメソッドは、操作セットの一部として呼び出すことができます。

前述したように、クライアント コードは、最終的に関数 IXAudio2::CommitChanges を呼び出して、遅延変更を実行する必要があります。

関連トピック