XAUDIO2_BUFFER構造体 (xaudio2.h)

IXAudio2SourceVoice::SubmitSourceBuffer で使用されるオーディオ データ バッファーを表します。

構文

typedef struct XAUDIO2_BUFFER {
  UINT32     Flags;
  UINT32     AudioBytes;
  const BYTE *pAudioData;
  UINT32     PlayBegin;
  UINT32     PlayLength;
  UINT32     LoopBegin;
  UINT32     LoopLength;
  UINT32     LoopCount;
  void       *pContext;
} XAUDIO2_BUFFER;

メンバー

Flags

オーディオ バッファーに関する追加情報を提供するフラグ。 0 または次の値を指定できます。

説明
XAUDIO2_END_OF_STREAM このバッファーの後にキューにバッファーが存在できないことを示します。 このフラグの唯一の効果は、バッファー キューの枯渇によって発生するデバッグ出力警告を抑制することです。 

AudioBytes

オーディオ データのサイズ (バイト単位)。 PCM データの場合は XAUDIO2_MAX_BUFFER_BYTES (xaudio2.h で定義) より大きくなく、XMA データの場合は XMA_READBUFFER_MAX_BYTES (xma2defs.h で定義) を超えてはなりません。

メモIXAudio2SourceVoice::SubmitSourceBuffer を使用して XAudio2 音声に送信された XMA バッファーには、完全な XMA ブロックが含まれている必要があります。 完全な XMA ブロックのサイズは、XMA2WAVEFORMATEXと同じである必要があります 。BytesPerBlock 値 。ファイル内の最後の XMA ブロックを除きます。これは短いかもしれませんが、まだ完了と見なされます。
 

pAudioData

オーディオ データへのポインター。

Xbox 360
XMA データを含むバッファーに割り当てられるメモリには、2048 のブロックアラインメントが必要です。 これは、引数 ulAlignment を 2048 に設定した XPhysicalAlloc を使用して実現されます。

PlayBegin

再生する必要があるバッファー内の最初のサンプル。

XMA バッファーの場合、この値は 128 サンプルの倍数である必要があります。

PlayLength

再生する領域の長さ (サンプル)。 0 の値はバッファー全体を再生することを意味し、この場合は PlayBegin も 0 である必要があります。 ADPCM データの場合、この値は、このXAUDIO2_BUFFER構造体を含む ADPCMWAVEFORMAT 構造体の wSamplesPerBlock の倍数である必要があります。

LoopBegin

ループする領域の最初のサンプル。 LoopBegin の値は、PlayBegin + PlayLength より小さくする必要があります。 LoopBeginPlayBegin より小さくできます。 LoopCount が 0 の場合、 LoopBegin は 0 である必要があります。

LoopLength

ループ領域の長さ (サンプル)。 LoopBegin+LoopLength の値は、PlayBegin より大きく、PlayBegin + PlayLength より小さい必要があります。 LoopCount が 0 の場合、LoopLength は 0 である必要があります。 LoopCount が 0 でない場合、ループ長が 0 の場合は、サンプル全体をループする必要があることを示します。 ADPCM データの場合、この値は、このXAUDIO2_BUFFER構造体を含む ADPCMWAVEFORMAT 構造体の wSamplesPerBlock の倍数である必要があります。

LoopCount

ループ領域をループする回数。 この値は、0 ~ XAUDIO2_MAX_LOOP_COUNTの間で指定できます。 LoopCount が 0 の場合、ループは実行されません。LoopBeginLoopLength は 0 である必要があります。 永遠にループするには、 LoopCount を XAUDIO2_LOOP_INFINITE に設定します。

pContext

コールバックでクライアントに返されるコンテキスト値。 これは NULL である可能性があります。

解説

XAudio2オーディオデータはインターリーブされ、各チャンネルからのデータは、特定のサンプル番号に対して隣接している。 たとえば、XAudio2 ソース音声に 4 チャンネルの波が再生されている場合、オーディオ データはチャネル 0 のサンプル、チャネル 1 のサンプル、チャネル 2 のサンプル、チャネル 3 のサンプル、チャネル 0、1、2、3 などの次のサンプルになります。

XAUDIO2_BUFFERAudioBytes メンバーと pAudioData メンバーは、再生中のファイルの 'data' RIFF チャンクのサイズ (バイト単位) と内容に対応します。 Xbox 360 にファイルを読み込むときに、チャンクの内容をバイト スワップする必要がある場合があります。

XAUDIO2_BUFFERまたはXAUDIO2_BUFFER_WMA構造体を保持するために割り当てられたメモリは、IXAudio2SourceVoice::SubmitSourceBuffer が呼び出されるとすぐに解放できます。 構造体が指すデータ (pAudioDatapDecodedPacketCumulativeBytes それぞれ) は、バッファーが完了するか ( IXAudio2VoiceCallback::OnBufferEnd コールバックによって通知される) か、音声が停止または破棄されるまで解放できません。

プラットフォームの要件

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

必要条件

   
Header xaudio2.h

関連項目

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

IXAudio2SourceVoice::SubmitSourceBuffer

XAudio2 構造体