XAUDIO2_VOICE_STATE 结构 (xaudio2.h)

返回语音的当前状态和光标位置数据。

语法

typedef struct XAUDIO2_VOICE_STATE {
  void   *pCurrentBufferContext;
  UINT32 BuffersQueued;
  UINT64 SamplesPlayed;
} XAUDIO2_VOICE_STATE;

成员

pCurrentBufferContext

指向当前正在处理的 XAUDIO2_BUFFER 中提供的缓冲区上下文的指针,如果语音当前已停止,则指向即将处理的下一个缓冲区。 如果队列中没有缓冲区,pCurrentBufferContext 为 NULL。

BuffersQueued

语音上当前排队的音频缓冲区数,包括当前正在处理的音频缓冲区。

SamplesPlayed

自上次启动或自上次音频流结束以来,此语音处理的样本总数 () XAUDIO2_END_OF_STREAM标志。 此总数包括由于循环而多次播放的示例。 从理论上讲,如果捕获到此时间前语音发出的所有音频,则此参数将是样本中音频流的长度。 如果在调用 IXAudio2SourceVoice::GetState 时指定XAUDIO2_VOICE_NOSAMPLESPLAYED,则不会计算此成员,并且从 IXAudio2SourceVoice::GetState 返回时未指定其值。 指定XAUDIO2_VOICE_NOSAMPLESPLAYED时,IXAudio2SourceVoice::GetState 需要大约三分之一的时间来完成。

注解

对于所有编码格式,包括恒定比特率 (CBR) 格式(如自适应差分脉冲编码调制 (ADPCM) ), SamplesPlayed 以解码样本表示。 对于脉冲代码调制 (PCM) 格式, SamplesPlayed 以输入样本或输出样本表示。 PCM 格式有从输入到输出的一对一映射。

如果客户端需要获取多个语音的相关位置(即,在播放另一语音的指定样本时确切地知道正在播放特定语音的哪个示例),则必须在 XAudio2 引擎回调中发出 IXAudio2SourceVoice::GetState 调用。 这样做可确保在进行呼叫时,不会发出任何语音。

平台要求

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

要求

   
标头 xaudio2.h

另请参阅

结构