XAUDIO2_BUFFER
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 で定義) より大きい値は指定できません。pAudioData
オーディオ データへのポインターです。PlayBegin
再生される、バッファー内の最初のサンプルです。PlayLength
再生される領域の長さ (サンプル数単位) です。値が 0 の場合、バッファー全体が再生されます。また、この場合は PlayBegin も 0 にする必要があります。LoopBegin
ループされる領域の最初のサンプルです。LoopBegin の値は、PlayBegin+PlayLength よりも小さくする必要があります。LoopBegin は PlayBegin より小さくすることができます。ループがない場合は、XAUDIO2_NO_LOOP_REGION を使用します。LoopLength
ループ領域の長さ (サンプル数単位) です。LoopBegin+LoopLength の値は、PlayBegin よりも大きく、PlayBegin+PlayLength よりも小さくする必要があります。LoopBegin が XAUDIO2_NO_LOOP_REGION に設定されている場合は、LoopLength を 0 にする必要があります。LoopBegin が XAUDIO2_NO_LOOP_REGION ではない場合は、ループ長 0 はサンプル全体をループすることを示します。LoopCount
ループ領域を通してループする回数です。この値は、0 ~ XAUDIO2_MAX_LOOP_COUNT の間で指定できますが、LoopBegin が XAUDIO2_NO_LOOP_REGION に設定されている場合は、ゼロにする必要があります。永久にループさせるには、LoopCount を XAUDIO2_LOOP_INFINITE に設定します。pContext
コールバックでクライアントに返されるコンテキスト値です。これは NULL 値でもかまいません。
解説
XAudio2 オーディオ データはインターリーブされ、特定のサンプル番号での各チャンネルからのデータは隣接します。たとえば、XAudio2 ソース ボイスに再生される 4 チャンネルの Wave がある場合、オーディオ データはチャンネル 0 のサンプル、チャンネル 1 のサンプル、チャンネル 2 のサンプル、チャンネル 3 のサンプルになり、その次からは同様にチャンネル 0、1、2、3 の各サンプルとなります。
XAUDIO2_BUFFER の および **** メンバーは、再生されるファイルのサイズ (バイト単位) および 'data' RIFF チャンクのコンテンツに対応します。チャンクのコンテンツは、Xbox 360 でのファイルのロード時に、バイト スワップされる場合があります。
要件
ヘッダー: Xaudio2.h 宣言
関連項目
XAudio2 の構造体, IXAudio2SourceVoice::SubmitSourceBuffer, 方法 : 基本的なオーディオ処理グラフの作成