如何从XAudio2源语音中检索当前的样本播放位置?

时间:2016-02-16 17:11:33

标签: windows directx xaudio2

我有IXAudio2SourceVoice正在播放提交的XAUDIO2_BUFFER。如何从样本中检索当前播放缓冲区中的播放位置?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

只需使用IXAudio2SourceVoice::GetState

    XAUDIO2_VOICE_STATE xstate;
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
    voice->GetState( &xstate, 0 );
#else
    voice->GetState( &xstate );
#endif
if ( xstate.BuffersQueued > 0 )
{
    // xstate.SamplesPlayed
}
  

GetState在XAudio 2.8或更高版本中使用标记的原因是具体的,因此您可以使用XAUDIO2_VOICE_NOSAMPLESPLAYED来节省填写当前SamplesPlayed值的开销。