Come scoprire ALSA funzionalità del dispositivo audio di programmazione in Linux senza dover aprire il dispositivo
Domanda
Come faccio a sapere le funzionalità dei dispositivi ALSA senza aprire prima il dispositivo? Il problema è, ho bisogno di fornire i parametri alla funzione snd_pcm_open()
per utilizzare le funzioni di test che per me è stupido. Perché chiedere se questa è una riproduzione o dispositivo di registrazione se devo dire che per la funzione di apertura prima?
Per fare un esempio, vorrei elencare tutti i dispositivi di riproduzione, ma l'unico modo che posso pensare sta cercando di aprire tutti i dispositivi trovo (con snd_device_name_hint()
) e cercare di aprirli in modalità di riproduzione e se riesco ad aprire, tutto è andato bene.
Il problema è che, con tutte le possibili variazioni (frequenza di campionamento, canali, ecc) ci sarebbe stato un gran numero terribile di s open () 'ho bisogno di eseguire per scoprire i parametri.
Soluzione
Utilizza snd_ctl_next iterare su tutti i dispositivi, quindi snd_ctl_open per ottenere informazioni relative al dispositivo -. Questo non è lo stesso di snd_pcm_open, che potrebbe fallire se un altro programma ha il dispositivo aperto o se si dispone di impostazioni cattivi
E 'abbastanza densa, ma ecco qualche codice open-source che itera su tutti i dispositivi ALSA si poteva guardare: https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa.c -. ricerca di BuildDeviceList per iniziare
Altri suggerimenti
E 'stato il mio primo requisiti per Linux progetti / unix in cui ho bisogno di conoscere tutte le funzionalità di dispositivi audio disponibili. Poi ho bisogno di usare questi dispositivi per catturare e riprodurre l'audio. Quello che ho fatto è abbastanza semplice. C'è un comando di Linux / Unix che viene utilizzato per trovare i dispositivi attraverso alsa utilità in linux.
Si tratta di:
aplay -l
Ora quello che ho fatto è solo fare un programma per dare il fuori come come come questo alsa.
Per l'aiuto di tutti quelli che hanno fatto una (.so) biblioteca e un'applicazione di esempio che dimostra l'uso di questa libreria in C ++.
L'uscita della mia biblioteca è come -
[root@~]# ./IdeaAudioEngineTest
HDA Intel plughw:0,0
HDA Intel plughw:0,2
Questa libreria può anche catturare e riprodurre i dati audio in tempo reale.
E 'disponibile con la documentazione in IdeaAudio biblioteca con Duplex Alsa Audio
Fornendo è possibile eseguire un comando di shell. Poi aplay è tuo amico.
aplay -l
lista tutte le schede audio e audio digitale dispositivi