IXAudio2SourceVoice::FlushSourceBuffers メソッド
保留中のオーディオ バッファーをすべてボイス キューから削除します。
構文
HRESULT FlushSourceBuffers()
戻り値
正常に実行された場合は S_OK を返し、失敗した場合はエラー コードを返します。
解説
ボイスが開始される場合、現在再生中のバッファーはキューから削除されません。
FlushSourceBuffers は、現在ボイスが開始されていても、停止されていても、呼び出すことができます。
削除されるすべてのバッファーに対して、OnBufferEnd コールバックが実行されますが、それ以外のバッファーごとのコールバック (OnBufferStart、OnStreamEnd、または OnLoopEnd) は実行されません。
FlushSourceBuffers によって、ボイスの実行状態が変更されることはないため、ボイスがこの呼び出しの前にバッファーを再生していた場合、バッファーの再生は継続して実行され、バッファーに対するすべてのコールバックが通常どおり実行されます。つまり、削除されたバッファーに対する OnBufferEnd コールバックの後に、このバッファーに対する OnBufferEnd コールバックが実行されます。そのため、FlushSourceBuffers を呼び出す XAudio2 クライアントでは、必ずしもバッファーが送信された順番で OnBufferEnd コールバックを受け取れるとは限りません。
現在再生中のバッファーの処理の完了時にバッファー キューの不足の警告が発生することはありません。これは、クライアントが現在再生中のバッファーに続くバッファーを意図的に削除したと見なされます。ただし、このバッファーがゼロ交点で終了しない場合は、オーディオ障害が発生する場合があります。アプリケーションで特定のバッファーの再生時にフラッシュ処理を実行する必要がある場合 (バッファーがゼロ交点で終了するためなど)、アプリケーションでは同期的に実行されるようにコールバックから FlushSourceBuffers を呼び出す必要があります。
要件
ヘッダー: xaudio2.h で宣言されています。