录音音量安卓系统本身并未提供相关接口,同时录音音量调节也需要硬件的支持。如果硬件支持,是可以实现的。share一下的我的方案。
先说一下思路,对于驱动来说,仅仅是调节相关ctl值就可以了。如此以来,可以看到和paly back的音量调节会有很大区别,play back调节音量,在policy startoutput时,会getVolume,音量的生效是在audioflinger 做mix时,将音量计算到音频波形中。所以,对于录音音量调节,我们需要把上层设置音量数值,直接给kernel就ok了。
1.来看驱动的支持
diff --git a/kernel/sound/soc/codecs/rk616_codec.c b/kernel/sound/soc/codecs/rk616_codec.c
index 831bb24..0d6949f 100755
--- a/kernel/sound/soc/codecs/rk616_codec.c
+++ b/kernel/sound/soc/codecs/rk616_codec.c
@@ -1940,6 +1940,14 @@ static const struct snd_kcontrol_new rk616_snd_path_controls[] = {
*/
SOC_ENUM_EXT("Modem Input Enable", rk616_modem_input_type,
rk616_modem_input_get, rk616_modem_input_put),
+ SOC_SINGLE_TLV("PGAL Capture Volume", RK616_PGAL_CTL,
+