Share via


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

音訊資料的大小,以位元組為單位。 不得大於 xaudio2.h) 中針對 PCM 資料定義的XAUDIO2_MAX_BUFFER_BYTES (,且 XMA 資料在 xma2defs.h) 中定義的XMA_READBUFFER_MAX_BYTES (不能大於 。

注意 使用 IXAudio2SourceVoice::SubmitSourceBuffer 提交至 XAudio2 語音的 XMA 緩衝區必須包含完整的 XMA 區塊。 完整的 XMA 區塊大小必須等於 XMA2WAVEFORMATEX。BytesPerBlock 值,但檔案中最後一個 XMA 區塊除外,可能較短,但仍會被視為完成。
 

pAudioData

音訊資料的指標。

Xbox 360
配置給包含 XMA 資料之緩衝區的記憶體必須具有 2048 的區塊對齊方式。 這是使用XPhysicalAlloc 完成,並將 ulAlignment引數設定為 2048。

PlayBegin

緩衝區中應該播放的第一個範例。

若為 XMA 緩衝區,這個值必須是 128 個樣本的倍數。

PlayLength

範例中要播放的區域長度。 值為零表示播放整個緩衝區,在此情況下, PlayBegin 也必須是零。 針對 ADPCM 資料,這個值必須是ADPCMWAVEFORMAT結構中包含此XAUDIO2_BUFFER結構的wSamplesPerBlock倍數。

LoopBegin

要迴圈之區域的第一個範例。 LoopBegin的值必須小於PlayBegin + PlayLengthLoopBegin 可以小於 PlayBegin如果 LoopCount 為 0, 則 LoopBegin 必須為 0。

LoopLength

範例中的迴圈區域長度。 LoopBegin+LoopLength的值必須大於PlayBegin且小於PlayBegin + PlayLength如果 LoopCount 為 0,則 LoopLength 必須為零。 如果 LoopCount 不是 0,則迴圈長度為零表示應該迴圈處理整個樣本。 針對 ADPCM 資料,這個值必須是ADPCMWAVEFORMAT結構中包含此XAUDIO2_BUFFER結構的wSamplesPerBlock倍數。

LoopCount

迴圈區域迴圈的次數。 此值可以介於 0 和 XAUDIO2_MAX_LOOP_COUNT之間。 如果 LoopCount 為零,則不會執行迴圈, 而且 LoopBeginLoopLength 必須為 0。 若要永久迴圈,請將 LoopCount 設定為 XAUDIO2_LOOP_INFINITE。

pContext

要以回呼傳回給用戶端的內容值。 這可能是 Null。

備註

XAudio2 音訊資料交錯,來自每個通道的資料會與特定樣本編號相鄰。 例如,如果有 4 個通道波浪播放到 XAudio2 來源語音,音訊資料會是通道 0 的範例、通道 1 的範例、通道 2 的樣本、通道 3 的樣本,然後是下一個通道 0、1、2、3 等範例。

XAUDIO2_BUFFERAudioBytespAudioData成員會對應至所播放檔案之 'data' RIFF 區塊的位元組和內容大小。 在 Xbox 360 上載入檔案時,可能需要交換區塊的內容。

配置來保存 XAUDIO2_BUFFERXAUDIO2_BUFFER_WMA 結構的記憶體,只要 IXAudio2SourceVoice::SubmitSourceBuffer 呼叫它就會傳回。 結構指向 (pAudioDatapDecodedPacketCumulativeBytes的資料分別) 無法釋放,直到緩衝區完成 (,如 IXAudio2VoiceCallback::OnBufferEnd 回呼) 停止或終結為止。

平臺需求

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

規格需求

   
標頭 xaudio2.h

另請參閱

使用方法:建立基本音訊處理圖形

IXAudio2SourceVoice::SubmitSourceBuffer

XAudio2 結構