如何从 XAudio2 源语音中检索当前示例播放位置



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

感谢您的帮助!

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

最新更新