WASAPI + windows存储应用初始化

时间:2013-07-05 16:50:29

标签: c++ audio microsoft-metro wasapi

我正在尝试编写一个程序来捕获您的语音,将我的效果应用于捕获的音频并立即播放。我正在用c ++将这个应用程序写到windows商店。在使用MediaCapture后,我决定使用WASAPI来做到这一点。我正在使用msdn中的一个示例来设置WASAPI。正如我所料,我很快就遇到了问题。所以问题在于以下两行:

const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);

视觉工作室说:

Error: operand of __uuidof must have a class or enum type for which __declspec(uuid('..')) has been specified.

我不知道它意味着什么。我很感激这里的一些帮助。

1 个答案:

答案 0 :(得分:0)

为了能够使用__uuidof(),必须为目标声明一个uuid。在为Windows 8 Store Apps进行编译时,似乎MMDeviceEnumerator和IMMDeviceEnumerator没有任何uuid声明,您应该使用Windows :: Devices :: Enumeration命名空间枚举设备,然后使用IActivateAudioInterfaceAsyncOperation初始化和激活音频设备。

以下是一个完整工作示例的链接,该示例捕获pcm数据并将其写入wav文件。它使用系统的默认音频捕获设备,但枚举可用设备并使用它们中的任何一个都是小菜一碟。 :)

WASAPI sample for Windows 8