次の方法で共有


IXAudio2SourceVoice::SubmitSourceBuffer メソッド (xaudio2.h)

音声キューに新しいオーディオ バッファーを追加します。

構文

HRESULT SubmitSourceBuffer(
  [in] const XAUDIO2_BUFFER     *pBuffer,
  [in] const XAUDIO2_BUFFER_WMA *pBufferWMA
);

パラメーター

[in] pBuffer

キューへの XAUDIO2_BUFFER 構造体へのポインター。

[in] pBufferWMA

WMA データの送信時に使用される追加 のXAUDIO2_BUFFER_WMA 構造体へのポインター。

戻り値

成功した場合はS_OKを返し、それ以外の場合はエラー コードを返します。 XAudio2 固有のエラー コードの説明については、「XAudio2 エラー コード」を参照してください。

注釈

音声は、送信された順序でキュー内のバッファーを処理して再生します。

XAUDIO2_BUFFER構造体には、オーディオ バッファーの場所とサイズ、実際に再生する必要があるバッファーの部分、ループ領域 (存在する場合) とループ数、このバッファーに関連するコールバックで使用されるコンテキスト ポインター、および隣接するサウンドの最後のバッファーであることを示す省略可能なXAUDIO2_END_OF_STREAM フラグが含まれます。

音声が開始され、キューに入れられたバッファーがない場合、新しいバッファーはすぐに再生を開始します。 音声が停止すると、バッファーが音声のキューに追加され、音声の開始時に再生されます。

指定されたバッファーの一部のみを再生する必要がある場合は、XAUDIO2_BUFFERPlayBegin フィールドと PlayLength フィールドを使用して、再生するリージョンを指定できます。 PlayLength 値 0 は、バッファー全体を再生することを意味します (この場合は PlayBegin も 0 である必要があります)。

バッファーのすべてまたは一部を連続ループで再生する必要がある場合は、XAUDIO2_BUFFERLoopBeginLoopLengthおよび LoopCount フィールドを使用して、ループ領域の特性を指定できます。 XAUDIO2_NO_LOOP_REGIONの LoopBegin 値は、ループを実行する必要がないことを意味し、この場合は LoopLengthLoopCount を 0 として指定する必要があります。 ループ領域を指定する場合は、空でない (LoopLength> 0) 必要があります。また、ループ数は 1 ~ XAUDIO2_MAX_LOOP_COUNTの範囲である必要があります (または、 IXAudio2SourceVoice::ExitLoop が呼び出されたときにだけ終了する無限ループを指定するには、XAUDIO2_LOOP_INFINITE)。 N のループ数は、N 回後方にスキップすることを意味します。つまり、ループ領域 N+ 1 回を再生します。

明示的な再生領域が指定されている場合は、指定されたオーディオ バッファー内で開始および終了する必要があります (または、圧縮された場合は、バッファーがデコードするサンプルのセット内)。 また、ループ領域は、再生領域の末尾を越えて終了することはできません。

Xbox 360
特定のオーディオ形式では、任意の再生またはループ領域の有効なエンドポイントに追加の制限がある場合があります。たとえば、XMA バッファーの場合、リージョンはデコードされたオーディオ内の 128 サンプル境界でのみ開始または終了できます。
 

pBuffer ポインターは、このメソッドを呼び出した直後に再利用または解放できますが、バッファーが XAudio2 (IXAudio2VoiceCallback::OnBufferEnd コールバックによって示される) によって完全に使用されるまで、pBuffer によって参照される実際のオーディオ データは有効なままである必要があります。

最大XAUDIO2_MAX_QUEUED_BUFFERSバッファーは、音声で一度にキューに入れられます。

SubmitSourceBuffer は、OperationSet が XAUDIO2_COMMIT_NOW の XAudio2 コールバックから呼び出されるとすぐに有効になります。

Xbox 360
このメソッドは、Xbox システム スレッドから呼び出すことができます (他のほとんどの XAudio2 メソッドでは呼び出すことができません)。 ただし、システム スレッドから一度に送信できるソース バッファーは最大 2 つです。
 

プラットフォームの要件

Windows 10 (XAudio2.9);Windows 8、Windows Phone 8 (XAudio 2.8);DirectX SDK (XAudio 2.7)

要件

要件
対象プラットフォーム Windows
ヘッダー xaudio2.h

こちらもご覧ください

方法: 基本的なオーディオ処理グラフの作成

方法: ディスクからのサウンドのストリーム

IXAudio2SourceVoice