Comment savoir les capacités du périphérique audio ALSA programme dans Linux sans ouvrir l'appareil

StackOverflow https://stackoverflow.com/questions/1866673

  •  18-09-2019
  •  | 
  •  

Question

Comment puis-je trouver les capacités des appareils ALSA sans ouvrir le premier dispositif? Le problème est, je dois fournir les paramètres à la fonction snd_pcm_open() d'utiliser les fonctions de test qui pour moi est stupide. Pourquoi demander si cela est une lecture ou d'enregistrement si je dois le dire à la première fonction ouverte?

À titre d'exemple, je voudrais à la liste tous les périphériques de lecture, mais la seule façon que je peux penser tente d'ouvrir tous les appareils que je trouve (avec snd_device_name_hint()) et essayer de les ouvrir en mode lecture et si je parviens à ouvrir, tout va bien.

Le problème est, avec toutes les variations possibles (fréquence d'échantillonnage, canaux, etc.) il y aurait un grand nombre terrible de l 'open () je dois effectuer pour trouver les paramètres.

Était-ce utile?

La solution

Utilisez snd_ctl_next itérer sur tous les appareils, snd_ctl_open alors obtenir des informations sur l'appareil -. Ce n'est pas la même chose que snd_pcm_open, ce qui pourrait échouer si un autre programme a l'appareil ouvert ou si vous avez mauvais réglages

Il est assez dense, mais voici un code open-source qui itère sur tous les périphériques ALSA, vous pouvez regarder: https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa.c -. BuildDeviceList recherche pour commencer

Autres conseils

Ce sont mes premières exigences à un projet linux / unix où je besoin de connaître toutes les possibilités de périphériques audio disponibles. Puis-je utiliser ces appareils pour capturer et lire l'audio. Ce que je l'ai fait est assez simple. Il y a un linux / unix commande qui est utilisée pour trouver les périphériques via alsa utilitaire sous Linux.

Il est:

aplay -l

Maintenant, ce que je faisais est de faire juste un programme pour donner comme comme ce que par alsa.

Pour l'aide de tout le monde que j'ai fait un (.so) bibliothèque et un échantillon d'application démontrant 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

Fournir vous pouvez effectuer une commande shell. Alors aplay est votre ami.

http://alsa.opensrc.org/Aplay

aplay -l

  

Liste toutes les cartes son et audio numérique   dispositifs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top