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

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 

我有两个相同名称的控件。 我知道,一个是处理stream卡= 0,设备= 0,秒 – 卡= 0,设备= 2。 但我怎样才能从我的程序控制特定设备的响应? 控制numid = 21或控制numid = 23处理设备2?

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

接口MIXER器的控制不直接与任何设备相关联。

找出更多的唯一方法是使用一些依赖于硬件的机制。 但是,在HDA的情况下,读取codec#x #x并不是很有用,因为内核用于将小部件映射到控件的确切算法不能保证。