저는 ALSA를 사용하여 Ubuntu에서 첫 번째 사운드 카드 드라이버를 개발 중입니다. 사운드 카드의 볼륨 조절을 구현하는 동안 몇 가지 문제를 발견했습니다.
1) snd_kcontrol_new.info에 할당된 기능에 대해 snd_ctl_elem_info.value.integer.min 및 max 값을 선택하는 논리를 이해하려고 합니다. 내 사운드 카드는 -100db와 0db 사이에서 달라질 수 있습니다. snd_ctl_elem_info.value.integer.min/max 또는 다른 범위에서 0-100 또는 0-15로 매핑할지 어떻게 결정합니까?
2) PCM 재생 볼륨, 마스터 재생 볼륨, 재생 볼륨 컨트롤 이름의 차이점을 이해하는 데 어려움이 있습니다.
답변 감사드리며, 질문이 너무 사소하다면 사과드립니다만, 마땅한 설명을 찾을 수 없습니다.
답변1
제어 값은 일반적으로 하드웨어 레지스터 값일 뿐입니다.
컨트롤 값과 dB 값 간의 매핑은 TLV 메타데이터를 통해 이루어집니다.
"PCM"은 PCM 장치를 통해 재생되는 사운드에 적용되는 반면, "마스터"는 재생되는 모든 사운드에 적용됩니다.