Comment trouver les fonctionnalités du périphérique audio ALSA par programmation sous Linux sans ouvrir le périphérique

Comment puis-je connaître les fonctionnalités des périphériques ALSA sans ouvrir d’abord le périphérique? Le problème est que je dois fournir les parameters à la fonction snd_pcm_open() pour utiliser les fonctions de test qui me snd_pcm_open() idiotes. Pourquoi demander s’il s’agit d’un périphérique de lecture ou d’enregistrement si je dois d’abord le signaler à la fonction d’ouverture?

Par exemple, je voudrais lister tous les périphériques de lecture, mais la seule façon de penser est d’ouvrir tous les périphériques que je trouve (avec snd_device_name_hint() ) et d’essayer de les ouvrir en mode de lecture. c’est bien.

Le problème est que, avec toutes les variations possibles (taux d’échantillonnage, canaux, etc.), il y aurait un nombre impressionnant d’ouvertures () à effectuer pour trouver les parameters.

Utilisez snd_ctl_next pour parcourir tous les périphériques, puis snd_ctl_open pour obtenir des informations sur le périphérique – ce n’est pas la même chose que snd_pcm_open, qui peut échouer si un autre programme a le périphérique ouvert ou si vous avez des parameters incorrects.

C’est assez dense, mais voici un code open-source qui itère sur tous les appareils ALSA que vous pourriez consulter: https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa. c – recherchez BuildDeviceList pour commencer.

C’était ma première exigence pour un projet Linux / Unix où j’ai besoin de connaître toutes les capacités de périphériques audio disponibles. Ensuite, je dois utiliser ces appareils pour capturer et lire l’audio. Ce que j’ai fait est assez simple. Il existe une commande linux / unix qui permet de rechercher les périphériques via l’utilitaire alsa sous linux.

C’est:

 aplay -l 

Maintenant, ce que j’ai fait est de créer un programme pour donner le même résultat que celui de alsa.

Pour tout le monde, j’ai créé une bibliothèque (.so) et un exemple d’application illustrant l’utilisation de cette bibliothèque en c ++.

La sortie de ma bibliothèque est comme-

 [root@~]# ./IdeaAudioEngineTest HDA Intel plughw:0,0 HDA Intel plughw:0,2 

Cette bibliothèque peut également capturer et lire les données audio en temps réel.

Il est disponible avec la documentation dans la bibliothèque IdeaAudio avec Duplex Alsa Audio

Si vous pouvez exécuter une commande shell. Alors aplay est ton ami.

http://alsa.opensrc.org/Aplay

aplay -l

lister toutes les cartes son et périphériques audio numériques