J'utilise l'API winmm pour gérer l'audio. J'utilise waveInGetDeviceCaps
et waveInMessage
pour identifier de manière unique une "ligne audio". Tout fonctionne bien, sauf que dans Vista, le nom de l'appareil est plafonné en 32 caractères par la struct WaveInCaps
. Pour contourner cela, je prévois d'utiliser l'api de base lorsque la version du système d'exploitation est> = Vista. J'utilise les IMMDeviceEnumerator.GetDevice
et IMMDeviceEnumerator.EnumAudioEndpoints
pour rassembler des informations sur les lignes audio, mais je ne suis pas sûr de savoir comment dire qu'un périphérique sous l'API principale correspond à une entrée sous l'API waveXx. Je suppose que je pourrais comparer le chemin de périphérique des deux, mais cela irait à l'encontre de la recommandation de MS de traiter la chaîne de chemin d'accès du périphérique comme "opaque".Est-il possible de relier le même périphérique audio dans différentes API?
Que diriez-vous?
Je pense qu'une autre façon d'aider à répondre à ma question est la suivante: étant donné une instance de IMMDevice, comment puis-je savoir que « l'indice de ligne » (celui que je peux utiliser comme argument pour WaveInOpen par exemple) est lié à cette ligne? –