WASAPI + initialisation de l’application Windows Store

J’essaie d’écrire un programme qui capture votre discours, applique mon effet sur l’audio capturé et le lit immédiatement. J’écris cette application sur le magasin Windows en c ++. Après avoir souffert de MediaCapture, j’ai décidé d’utiliser WASAPI pour le faire. J’utilise un exemple tiré du msdn pour configurer WASAPI . Comme je m’y attendais, j’ai très vite rencontré un problème. Le problème concerne donc les deux lignes suivantes:

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

Le studio visuel dit que:

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

Je n’ai aucune idée de ce que cela signifie. J’apprécierais un peu d’aide ici.

Pour pouvoir utiliser __uuidof (), un uuid doit avoir été déclaré pour la cible. Lors de la compilation pour Windows 8 Store Apps, il semble que MMDeviceEnumerator et IMMDeviceEnumerator ne possèdent aucune déclaration uuid. Vous devez plutôt utiliser l’espace de noms Windows :: Devices :: Enumeration pour énumérer les périphériques, puis utiliser IActivateAudioInterfaceAsyncOperation pour initialiser et activer le périphérique audio.

Voici un lien vers un exemple complet qui capture les données pcm et les écrit dans un fichier wav. Il utilise le périphérique de capture audio par défaut du système, mais énumérer les périphériques disponibles et utiliser l’un d’entre eux à la place est un jeu d’enfant. 🙂

Exemple WASAPI pour Windows 8