如何将控件映射到它的设备?

时间:2017-11-14 13:07:31

标签: c++ linux audio controls alsa

amixer -c 0控制:

...
numid=22,iface=MIXER,name='Capture Switch'

numid=24,iface=MIXER,name='Capture Switch',index=1

numid=21,iface=MIXER,name='Capture Volume'

numid=23,iface=MIXER,name='Capture Volume',index=1

...

arecord -l:

card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 2: ALC662 rev3 Alt Analog [ALC662 rev3 Alt Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

我有两个名字相同的控件。我知道,一个是句柄流卡= 0,设备= 0,第二个 - 卡= 0,设备= 2。但是,如何从我的程序中获取控制特定设备的响应? Contol与numid = 21或控制与numid = 23处理设备2?

我可以在/ proc / asound / cord0 / codec#0中找到一些有用的信息。但我需要在中从我的代码中检测到。

1 个答案:

答案 0 :(得分:1)

接口MIXER的控件与任何设备都没有直接关联。

了解更多内容的唯一方法是使用一些依赖于硬件的机制。但是,对于HDA,读取codec#x并不是很有用,因为内核用于将小部件映射到控件的确切算法无法保证。