次の方法で共有


IXAudio2SourceVoice::FlushSourceBuffers メソッド

保留中のオーディオ バッファーをすべてボイス キューから削除します。

構文

HRESULT FlushSourceBuffers()

戻り値

正常に実行された場合は S_OK を返し、失敗した場合はエラー コードを返します。

解説 

ボイスが開始される場合、現在再生中のバッファーはキューから削除されません。

FlushSourceBuffers は、現在ボイスが開始されていても、停止されていても、呼び出すことができます。

削除されるすべてのバッファーに対して、OnBufferEnd コールバックが実行されますが、それ以外のバッファーごとのコールバック (OnBufferStartOnStreamEnd、または OnLoopEnd) は実行されません。

FlushSourceBuffers によって、ボイスの実行状態が変更されることはないため、ボイスがこの呼び出しの前にバッファーを再生していた場合、バッファーの再生は継続して実行され、バッファーに対するすべてのコールバックが通常どおり実行されます。つまり、削除されたバッファーに対する OnBufferEnd コールバックの後に、このバッファーに対する OnBufferEnd コールバックが実行されます。そのため、FlushSourceBuffers を呼び出す XAudio2 クライアントでは、必ずしもバッファーが送信された順番で OnBufferEnd コールバックを受け取れるとは限りません。

現在再生中のバッファーの処理の完了時にバッファー キューの不足の警告が発生することはありません。これは、クライアントが現在再生中のバッファーに続くバッファーを意図的に削除したと見なされます。ただし、このバッファーがゼロ交点で終了しない場合は、オーディオ障害が発生する場合があります。アプリケーションで特定のバッファーの再生時にフラッシュ処理を実行する必要がある場合 (バッファーがゼロ交点で終了するためなど)、アプリケーションでは同期的に実行されるようにコールバックから FlushSourceBuffers を呼び出す必要があります。

要件

ヘッダー: xaudio2.h で宣言されています。

関連項目

IXAudio2SourceVoice