XAUDIO2_BUFFER_WMA 结构 (xaudio2.h)

在提交 xWMA 数据时与 IXAudio2SourceVoice::SubmitSourceBuffer 一起使用。

语法

typedef struct XAUDIO2_BUFFER_WMA {
  const UINT32 *pDecodedPacketCumulativeBytes;
  UINT32       PacketCount;
} XAUDIO2_BUFFER_WMA;

成员

pDecodedPacketCumulativeBytes

解码数据包累积数据大小数组,每个元素是相应 xWMA 数据包按顺序解码后累积的字节数,必须具有 PacketCount 元素。

PacketCount

提交的 xWMA 数据包数必须为 >= 1,并均匀划分为相应的XAUDIO2_BUFFER传递给 IXAudio2SourceVoice::SubmitSourceBuffer 的 AudioBytes 值。

注解

一次流式处理几个数据包的 xWMA 文件时,应在最后一个数据包上指定XAUDIO2_END_OF_STREAM。 或者,应用程序可以在提交最后一个数据包后调用 IXAudio2SourceVoice::D iscontinuity

此外,当一次流式传输 xWMA 文件几个数据包时,应用程序应从当前提交的数据包的所有条目中减去上一个数据包的 pDecodedPacketCumulativeBytes[PacketCount-1]。

XAUDIO2_BUFFER_WMA的成员对应于正在播放的 xWMA 文件的“dpds”RIFF 区块中包含的值。 PacketCount 将对应于区块的 UINT32 大小。 pDecodedPacketCumulativeBytes 将对应于包含区块内容的 UINT32 缓冲区。 在 Xbox 360 上加载缓冲区时,需要对缓冲区的内容进行字节交换。

一旦 IXAudio2SourceVoice::SubmitSourceBuffer 调用它传递给返回,就可立即释放分配用于保存XAUDIO2_BUFFERXAUDIO2_BUFFER_WMA结构的内存。 结构指向的数据分别 (pAudioDatapDecodedPacketCumulativeBytes,) 在缓冲区完成由 IXAudio2VoiceCallback::OnBufferEnd 回调) 或语音停止并销毁 (之前无法释放。

Windows 8.x 中的 XAUDIO 2.8 不支持 xWMA 解码。 改用 Windows Media Foundation API 执行从 WMA 到 PCM 的解码。 此功能在 DirectX SDK 版本的 XAUDIO 和 Windows 10 的 XAUDIO 2.9 中可用。

平台要求

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

要求

要求
Header xaudio2.h

另请参阅

结构