0

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

谢谢你的帮助!

4

1 回答 1

2

只需使用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值的开销。

于 2016-02-17T03:28:57.550 回答