Share via


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 で宣言されています。

関連項目

IXAudio2Voice
XAPO の概要