2016-05-24 34 views
2

最近我一直在挖掘xAudio,但未能找到我需要的一些答案。xAudio MasterVoice获取进度

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

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

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

但是用xAudio SourceVoice并不是我们最后使用的实体(或者它是?!)。导致它在到达音频设备之前全部进入主控音色。

IXAudio2MasteringVoice接口不提供任何类似GetState()的东西。

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

回答

1

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

同步声音的最佳方法是使用“操作集”,以确保多个操作都在同一个框架中处理,例如作为一个组开始或停止各个源声音。请参阅MSDN: XAudio2 Operation Sets

您还可以附加IXAudio2VoiceCallback到您的源声音,以获得关于提交的工作进度的通知。见MSDN: XAudio2 Callbacks