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_BUFFER或XAUDIO2_BUFFER_WMA结构的内存。 结构指向的数据分别 (pAudioData 和 pDecodedPacketCumulativeBytes,) 在缓冲区完成由 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 |