Mak*_*kis 6 c linux audio alsa
如何在不先打开设备的情况下找到ALSA设备的功能?问题是,我需要为snd_pcm_open()函数提供参数以使用对我来说愚蠢的测试函数.如果我必须首先告诉它打开功能,为什么要问这是播放还是录音设备?
作为一个例子,我想列出所有播放设备,但我能想到的唯一方法是尝试打开我找到的所有设备(带snd_device_name_hint())并尝试在播放模式下打开它们,如果我设法打开,一切都很好.
问题是,在所有可能的变化(采样率,通道等)的情况下,我需要执行大量的open()以找出参数.
使用snd_ctl_next迭代所有设备,然后使用snd_ctl_open获取有关设备的信息 - 这与snd_pcm_open不同,如果其他程序打开设备或设置不正确,则可能会失败.
它非常密集,但是这里有一些开源代码可以覆盖您可以查看的所有ALSA设备:https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa. c - 搜索BuildDeviceList以开始使用.