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 で定義) を超えてはなりません。
pAudioData
オーディオ データへのポインター。
Xbox 360 |
---|
XMA データを含むバッファーに割り当てられるメモリには、2048 のブロックアラインメントが必要です。 これは、引数 ulAlignment を 2048 に設定した XPhysicalAlloc を使用して実現されます。 |
PlayBegin
再生する必要があるバッファー内の最初のサンプル。
XMA バッファーの場合、この値は 128 サンプルの倍数である必要があります。
PlayLength
再生する領域の長さ (サンプル)。 0 の値はバッファー全体を再生することを意味し、この場合は PlayBegin も 0 である必要があります。 ADPCM データの場合、この値は、このXAUDIO2_BUFFER構造体を含む ADPCMWAVEFORMAT 構造体の wSamplesPerBlock の倍数である必要があります。
LoopBegin
ループする領域の最初のサンプル。 LoopBegin の値は、PlayBegin + PlayLength より小さくする必要があります。 LoopBegin は PlayBegin より小さくできます。 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 の場合、ループは実行されません。LoopBegin と LoopLength は 0 である必要があります。 永遠にループするには、 LoopCount を XAUDIO2_LOOP_INFINITE に設定します。
pContext
コールバックでクライアントに返されるコンテキスト値。 これは NULL である可能性があります。
解説
XAudio2オーディオデータはインターリーブされ、各チャンネルからのデータは、特定のサンプル番号に対して隣接している。 たとえば、XAudio2 ソース音声に 4 チャンネルの波が再生されている場合、オーディオ データはチャネル 0 のサンプル、チャネル 1 のサンプル、チャネル 2 のサンプル、チャネル 3 のサンプル、チャネル 0、1、2、3 などの次のサンプルになります。
XAUDIO2_BUFFER の AudioBytes メンバーと pAudioData メンバーは、再生中のファイルの 'data' RIFF チャンクのサイズ (バイト単位) と内容に対応します。 Xbox 360 にファイルを読み込むときに、チャンクの内容をバイト スワップする必要がある場合があります。
XAUDIO2_BUFFERまたはXAUDIO2_BUFFER_WMA構造体を保持するために割り当てられたメモリは、IXAudio2SourceVoice::SubmitSourceBuffer が呼び出されるとすぐに解放できます。 構造体が指すデータ (pAudioData と pDecodedPacketCumulativeBytes それぞれ) は、バッファーが完了するか ( IXAudio2VoiceCallback::OnBufferEnd コールバックによって通知される) か、音声が停止または破棄されるまで解放できません。
プラットフォームの要件
Windows 10 (XAudio2.9);Windows 8、Windows Phone 8 (XAudio 2.8);DirectX SDK (XAudio 2.7)必要条件
Header | xaudio2.h |