IXAudio2SourceVoice::Stop メソッド
現在のボイスによるオーディオの使用を停止します。
構文
HRESULT Stop( UINT32 Flags, UINT32 OperationSet = XAUDIO2_COMMIT_NOW)
パラメーター
Flags
[in] ボイスの停止方法を制御するフラグです。0 または次のフラグのどちらかを指定します。値 説明 XAUDIO2_PLAY_TAILS ボイスの停止後、エフェクト出力を引き続き生成します。 OperationSet
[in] この呼び出しを遅延バッチの一部として指定します。詳細については、「XAudio2 操作セット」の概要を参照してください。
戻り値
正常に実行された場合は S_OK を返し、失敗した場合はエラー コードを返します。XAudio2 固有のエラー コードの説明については、「XAudio2 エラー コード」を参照してください。
解説
ボイスのキューにあるすべてのソース バッファーと現在のカーソル位置が保持されます。これにより、ボイスを再開するとき、停止したところから続行することができるようになります。IXAudio2SourceVoice::FlushSourceBuffers メソッドを使用すると、キュー内のソース バッファーをフラッシュすることができます。
既定では、ボイス エフェクトからの保留中の出力 (リバーブ テールなど) は再生されません。代わりに、ボイスは直ちに無音でレンダリングされます。XAUDIO2_PLAY_TAILS フラグを使用して、ボイスの実行の停止後も、エフェクト出力を引き続き生成することができます。
XAUDIO2_PLAY_TAILS フラグを使用して停止されたボイスは、ソース バッファーの使用を停止しますが、そのエフェクトを処理してオーディオをそのデスティネーション ボイスに送信することは続行します。この状態のボイスは、0 に設定された Flags 引数を使用して Stop を再び呼び出すことで、後で完全に停止できます。こうすることで、まず XAUDIO2_PLAY_TAILS を使用してボイスを停止して、そのエフェクトによって生成されるオーディオが終了するまで十分な時間だけ待ってから、XAUDIO2_PLAY_TAILS を使用せずに Stop を再び呼び出してこのボイスを完全に停止できます。この方法を使用すると、エフェクト付きのボイスを適切に停止できる一方で、アイドル状態のボイスがオーディオの生成を終了した後も処理され続けることを防止できます。
コールバック内から呼び出された場合でも、Stop は常に非同期です。
注意
ボイスが停止している場合、XAudio2 ではボイスのコールバックが呼び出されることはありません (XAUDIO2_PLAY_TAILS を使用して停止した場合も同様です)。
要件
ヘッダー: xaudio2.h で宣言されています。