захват аудио в приложениях 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 4

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