WASAPI + инициализация приложения магазина Windows

Я пытаюсь написать программу, которая записывает вашу речь, применяет мой эффект к захваченному звуку и немедленно воспроизводит его. Я пишу это приложение в магазин Windows на С++. После мучений с MediaCapture я решил использовать для этого WASAPI. Я использую пример из msdn для настройки ВАСАПИ. Как я и предполагал, очень скоро я столкнулся с проблемой. Итак, проблема заключается в следующих двух строках:

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.

Я понятия не имею, что это значит. Я был бы признателен за помощь здесь.


person DalekSupreme    schedule 05.07.2013    source источник


Ответы (1)


Чтобы иметь возможность использовать __uuidof(), для цели должен быть объявлен uuid. При компиляции для приложений Магазина Windows 8 кажется, что MMDeviceEnumerator и IMMDeviceEnumerator не имеют объявления uuid, и вместо этого следует использовать пространство имен Windows::Devices::Enumeration для перечисления устройств, а затем использовать IActivateAudioInterfaceAsyncOperation для инициализации и активации аудиоустройства.

Вот ссылка на полностью рабочий пример, который захватывает данные PCM и записывает их в wav-файл. Он использует системное устройство захвата звука по умолчанию, но перечисление доступных устройств и использование любого из них вместо этого — кусок пирога. :)

пример WASAPI для Windows 8

person BennyO    schedule 08.07.2013