xaudio2.h) (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,或以下值。

Value 说明
XAUDIO2_END_OF_STREAM 指示此缓冲区之后的队列中不能有任何缓冲区。 此标志的唯一效果是禁止因缓冲区队列不足而导致的调试输出警告。 

AudioBytes

音频数据的大小(以字节为单位)。 不得大于 xaudio2.h) 中为 PCM 数据定义的XAUDIO2_MAX_BUFFER_BYTES (,且不得大于 xma2defs.h) 中为 XMA 数据定义的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 数据,此值必须是包含此XAUDIO2_BUFFER结构的 ADPCMWAVEFORMAT 结构中 wSamplesPerBlock倍数。

LoopBegin

要循环的区域的第一个示例。 LoopBegin 的值必须小于 PlayBegin + PlayLengthLoopBegin 可以小于 PlayBegin。 如果 LoopCount 为 0,LoopBegin 必须为 0。

LoopLength

循环区域的长度(以样本为单位)。 LoopBegin+LoopLength 的值必须大于 PlayBegin 且小于 PlayBegin + PlayLength。 如果 LoopCount 为 0,则 LoopLength 必须为零。 如果 LoopCount 不为 0,则循环长度为 0 表示应循环整个样本。 对于 ADPCM 数据,此值必须是包含此XAUDIO2_BUFFER结构的 ADPCMWAVEFORMAT 结构中 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 上加载文件时,可能需要对区块的内容进行字节交换。

一旦 IXAudio2SourceVoice::SubmitSourceBuffer 调用传递给返回,就可以释放分配用于保存XAUDIO2_BUFFERXAUDIO2_BUFFER_WMA结构的内存。 结构指向的数据分别 (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 结构