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 (。
pAudioData
指向音频数据的指针。
Xbox 360 |
---|
为包含 XMA 数据的缓冲区分配的内存的块对齐方式必须为 2048。 这是使用 XPhysicalAlloc 完成的,并将 ulAlignment 参数设置为 2048。 |
PlayBegin
缓冲区中应播放的第一个示例。
对于 XMA 缓冲区,此值必须是 128 个样本的倍数。
PlayLength
要播放的区域的长度(以示例为单位)。 值为零表示播放整个缓冲区,在本例中, PlayBegin 也必须为零。 对于 ADPCM 数据,此值必须是包含此XAUDIO2_BUFFER结构的 ADPCMWAVEFORMAT 结构中 wSamplesPerBlock的倍数。
LoopBegin
要循环的区域的第一个示例。 LoopBegin 的值必须小于 PlayBegin + PlayLength。 LoopBegin 可以小于 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 为零,则不执行循环, LoopBegin 和 LoopLength 必须为 0。 若要永久循环,请将 LoopCount 设置为 XAUDIO2_LOOP_INFINITE。
pContext
要在回调中传回给客户端的上下文值。 这可能为 NULL。
注解
XAudio2 音频数据交错,每个通道的数据对于特定样本数是相邻的。 例如,如果有一个 4 声道波播放到 XAudio2 源语音中,则音频数据将是通道 0 的样本、通道 1 的样本、通道 2 的样本、通道 3 的样本,然后是通道 0、1、2、3 的下一个样本,等等。
XAUDIO2_BUFFER的 AudioBytes 和 pAudioData 成员对应于正在播放的文件的“data”RIFF 区块的大小(以字节为单位)和内容。 在 Xbox 360 上加载文件时,可能需要对区块的内容进行字节交换。
一旦 IXAudio2SourceVoice::SubmitSourceBuffer 调用传递给返回,就可以释放分配用于保存XAUDIO2_BUFFER或XAUDIO2_BUFFER_WMA结构的内存。 结构指向的数据分别 (pAudioData 和 pDecodedPacketCumulativeBytes,) 无法释放,直到缓冲区完成 (,由 IXAudio2VoiceCallback::OnBufferEnd 回调) 或语音停止或销毁。
平台要求
Windows 10 (XAudio2.9) ;Windows 8、Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)要求
标头 | xaudio2.h |