xAudio MasterVoice获得进步

时间:2016-05-24 10:54:26

标签: c++ windows-runtime directx uwp xaudio2

我最近一直在挖掘xAudio而我找不到我需要的答案。

{ 不要浪费你的时间 - 我需要找到一种方法来获得主语音当前的进展 }

事情是, - SourceVoice确实提供了一种方法来提供它的状态 (https://msdn.microsoft.com/en-us/library/windows/desktop/hh405047(v=vs.85).aspx

因此,通过这种方法我们可以得到XAUDIO2_VOICE_STATE来计算语音播放时的当前位置。

但是使用xAudio SourceVoice并不是我们最终的合作实体(或者它是什么?!)。因为它在进入音频设备之前都会进入Mastering Voice。

IXAudio2MasteringVoice界面并没有为我们提供类似GetState()的东西。

所以我的问题是, - 如果我需要同步一些声音,我如何获得当前进度。提前谢谢!

1 个答案:

答案 0 :(得分:1)

'主语音'代表输出设备(它实际上是WASAPI链的开始,它执行系统级混合,然后将结果放入实际的硬件回放缓冲区)。因此,没有“进步”或“样本位置”的概念。你可以附上一个效果链,但这就是它。

同步语音的最佳方法是使用“操作集”,确保在同一帧中处理多个操作,例如将各个源语音作为一组启动或停止。请参阅MSDN: XAudio2 Operation Sets

您还可以在源语音中附加IXAudio2VoiceCallback,以获取有关已提交作品的进度通知。见MSDN: XAudio2 Callbacks