我正在 Ubuntu 中使用 ALSA 开发我的第一个声卡驱动程序。在实现声卡的音量控制时,我偶然发现了几个问题。
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 Playback Volume、Master Playback Volume 和 Playback Volume 之间的区别。
感谢您的回答,如果问题非常琐碎,我深表歉意,但我找不到很好的解释。
答案1
控制值通常只是硬件的寄存器值。
控制值和 dB 值之间的映射是通过 TLV 元数据完成的。
“PCM”适用于通过 PCM 设备播放的声音,而“Master”适用于所有播放的声音。