Como descobrir ALSA capacidades do dispositivo de áudio de programação em Linux sem abrir o dispositivo

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

  •  18-09-2019
  •  | 
  •  

Pergunta

Como faço para descobrir as capacidades de dispositivos ALSA sem abrir o dispositivo pela primeira vez? O problema é que eu preciso para fornecer os parâmetros para a função snd_pcm_open() de usar as funções de teste que para mim é bobagem. Por que perguntar se este é um dispositivo de reprodução ou registro, se eu tenho que dizer a ele para a função de abertura em primeiro lugar?

Como um exemplo, eu gostaria de listar todos os dispositivos de reprodução, mas a única maneira que eu posso pensar é que tentam abrir todos os dispositivos I encontrar (com snd_device_name_hint()) e tentar abri-los no modo de reprodução e se eu conseguir abrir, está tudo bem.

O problema é que, com todas as possíveis variações (taxa de amostragem, canais, etc), haveria um grande número terrível de open () é preciso realizar para descobrir os parâmetros.

Foi útil?

Solução

Use snd_ctl_next para iterar sobre todos os dispositivos, em seguida, snd_ctl_open para obter informações sobre o dispositivo -. Isso não é o mesmo que snd_pcm_open, o que poderia falhar se outro programa tem o dispositivo aberto ou se você tiver configurações ruins

É muito densa, mas aqui está um código-fonte aberto que itera sobre todos os dispositivos ALSA você pode olhar para: https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa.c -. procurar BuildDeviceList para começar

Outras dicas

Foi minha primeira requisitos para um linux / unix projetos onde eu preciso de saber sobre toda a capacidade dispositivos de áudio disponíveis. Então eu preciso usar estes dispositivos para a captura e reprodução de áudio. O que tenho feito é bastante simples. Há um comando linux / unix que é usado para encontrar os dispositivos através alsa utilidade em linux.

É:

aplay -l

Agora, o que eu fiz é apenas fazer um programa para dar o fora como como como este por alsa.

Para obter ajuda de todos eu fiz um (.so) biblioteca e um aplicativo de exemplo que demonstra o uso desta biblioteca em C ++.

A saída de minha biblioteca é como -

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

Esta biblioteca também pode capturar e reproduzir os dados de áudio em tempo real.

Ele está disponível com documentação em IdeaAudio Biblioteca com Duplex Alsa Áudio

O fornecimento você pode executar um comando shell. Então aplay é seu amigo.

http://alsa.opensrc.org/Aplay

aplay -l

lista todas as placas de som e áudio digital dispositivos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top