Я пытаюсь написать программу, которая фиксирует вашу речь, применяет мой эффект к захваченному аудио и немедленно воспроизводит его. Я пишу это приложение в магазине Windows на C ++. После страданий с 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.
Я понятия не имею, что это значит. Я был бы признателен за помощь здесь.
Чтобы иметь возможность использовать __uuidof (), для цели должен быть объявлен uuid. При компиляции для приложений Магазина Windows 8 кажется, что у MMDeviceEnumerator и IMMDeviceEnumerator нет никакого объявления uuid, и вместо этого вам следует использовать пространство имен Windows :: Devices :: Enumeration для перечисления устройств, а затем использовать IActivateAudioInterfaceAsyncOperation для инициализации и активации звукового устройства.
Вот ссылка на полностью рабочий пример, который собирает данные PCM и записывает их в WAV-файл. Он использует системное устройство захвата звука по умолчанию, но перечисление доступных устройств и использование любого из них — это просто пирог. 🙂
Других решений пока нет …