2017-11-14 3 views
2

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. 하지만 특정 장치에 대한 응답을 제어하는 ​​프로그램에서 어떻게 얻을 수 있습니까? numid = 21로 제어하거나 numid = 23로 제어하여 장치 2를 처리 하시겠습니까?

/proc/asound/cord0/codeC# 0에서 유용한 정보를 찾을 수 있습니다. 하지만 내 코드에서 을 찾아야합니다.

+0

해결하려는 실제 문제는 무엇입니까? –

+0

실시간으로 나는 시스템에서 제시된 오디오 장치를 탐지합니다. 내가 그들과 함께 일할 때 그들은 "plughw : , "처럼 보입니다. 각 장치마다 콘크리트 장치와 관련된 제어 목록을 알고 싶습니다. 나는 콘트롤을 의미하며, 어떤 값이 콘크리트 장치의 사운드에 영향을 주는지를 변경합니다. 내 영어로 죄송합니다. – Kostya

+0

시스템의 카드 한 개가 동일한 이름의 여러 컨트롤을 표시 할 때 sittuations가 될 수 있습니까? 내 경우처럼 앞뒤가 아닙니다. – Kostya

답변

1

인터페이스 MIXER의 컨트롤은 어떤 장치와도 직접 연결되어 있지 않습니다.

더 많은 것을 알아내는 유일한 방법은 일부 하드웨어 종속 메커니즘을 사용하는 것입니다. 그러나 HDA의 경우, codec#x을 읽는 것은 커널이 위젯을 컨트롤에 매핑하는 데 사용하는 정확한 알고리즘이 보장되지 않기 때문에 그다지 유용하지 않습니다.

관련 문제