захват аудио в приложениях metro
Мне нужно выполнить низкоуровневый захват звука в моем приложении Windows 8 Metro-style.
Я думаю, что мне нужно использовать интерфейс IAudioClient, но как получить этот интерфейс?
Microsoft говорит: "клиент получает ссылку на интерфейс IAudioClient для аудиоустройства конечной точки с помощью одного из методов, описанных в разделе интерфейс IMMDevice.."
Http://msdn.microsoft.com/en-us/library/windows/desktop/dd370865 (v=против 85).aspx
Но интерфейс IMMDevice не является поддерживается для приложений в стиле Metro.
Как получить интерфейс IAudioClient ?
2 ответа:
Я получил ответ от форумов MSDN:
Platform::String^ id = Windows::Media::Devices::MediaDevice::GetDefaultAudioCaptureId(Windows::Media::Devices::AudioDeviceRole::Console ); Microsoft::WRL::ComPtr<IAudioClient> pAudioClient = NULL; ActivateAudioInterface( id->Data(), __uuidof( IAudioClient ), (void**)&pAudioClient );
Этот ActivateAudioInterface() загадочен для меня-в библиотеке MSDN нет ссылок на него вообще; единственные хиты по его поиску находятся на форумах...
На самом деле, вы должны использовать ActivateAudioInterfaceAsync вместо ActivateAudioInterface. См. http://msdn.microsoft.com/en-us/library/windows/desktop/jj128298 (v=против 85).aspx