AUDIO_STREAM_CATEGORY需要多个XAudio2实例吗?

时间:2018-07-18 09:31:02

标签: windows directx xaudio2

在适用于Windows 8和10的较新XAudio2 API中,AUDIO_STREAM_CATEGORY被传递到IXAudio2::CreateMasteringVoice

文档继续说明如何将它们用于不同类型的音频。但是,IXAudio2仅允许一个主语音。要做到这一点是完全独立的IXAudio2实例以及所需的所有相关接口,还是可以通过某种方式在音频图中的其他位置指定类别?

  

游戏应将其音乐流归类为 AudioCategory_GameMedia ,这样,如果另一个应用程序在后台播放音乐,则游戏音乐会自动静音。音乐或视频应用程序应将其流分类为 AudioCategory_Media AudioCategory_Movie ,因此它们将优先于 AudioCategory_GameMedia 流。用于游戏内电影或过场动画的游戏音频,如果将音频进行预混或出于创意原因应优先于背景音频,则也应归类为 Media Movie 。< / p>

1 个答案:

答案 0 :(得分:1)

您可以在一个进程中创建多个IXAudio2实例,以便每个实例都有自己的主声音。如果要从一个流程中输出多个音频类别,则需要创建多个IXAudio2实例。

通常,您只剩下一个就可以使用,并且始终使用AudioCategory_GameMedia

  

我知道这种设计有点麻烦,但是类别是在WASAPI输出语音上设置的,这是XAudio2将其主控语音内容发送到的位置。任何其他设计都需要在内部XAudio音频图中标注类别数据,这对于实现很多价值而言实施起来非常复杂。相反,我们选择让应用程序一次激活一个以上的音频图,每个音频图都有自己的母带声音,因此也属于自己的类别。

如何选择支持WASAPI的音频类别功能取决于您,当然,最佳的用户体验取决于您的应用程序实际执行的操作。