由于项目需要,需要绕开MTK android架构的录音方式,并且能用tinycap录音。如果正常开机,使用tinycap录音
tinycap /sdcard/aud-test.wav -D 0 -d 1 -c 2 -b 16 -r 16000
所录音的声音是mute的。原因是我们需要用tinymix设置相关的音频控件。
下面是如果确定需要设置哪些控件的方法。
编译出tinycap和tinymix
tinycap和tinymix 是tinyalsa下的可执行程序,源码在external\tinyalsa下
我们只需要在device.mk 内添加
PRODUCT_PACKAGES += tinycap
PRODUCT_PACKAGES += tinymix
编译即可
确认那些控件需要打开
1.在开机后,有root权限的情况,执行tinymix,得到控件状态。
tb8163p3_64_bsp:/ # tinymix
tinymix
Mixer name: 'mt-snd-card'
Number of controls: 63
ctl type num name value
0 ENUM 1 Audio_Amp_R_Switch Off
1 ENUM 1 Audio_Amp_L_Switch Off
2 ENUM 1 Voice_Amp_Switch Off
3 ENUM 1 Speaker_Amp_Switch Off
4 ENUM 1 Headset_Speaker_Amp_Switch Off
5 ENUM 1 Ext_Speaker_Amp_Switch Off
6 ENUM 1 Headphone_Speaker_Mux Speaker
7 ENUM 1 Headset_PGAL_GAIN (null)
8 ENUM 1 Headset_PGAR_GAIN (null)
9 ENUM 1 Handset_PGA_GAIN -21Db
10 ENUM 1 Lineout_PGAR_GAIN 0Db
11 ENUM 1 Lineout_PGAL_GAIN 0Db
12 ENUM 1 Ext_Amp_Gain 6dB
13 ENUM 1 AUD_CLK_BUF_Switch Off
14 ENUM 1 Audio_Preamp1_Switch OPEN
15 ENUM 1 Audio_Preamp2_Switch OPEN
16 ENUM 1 Audio_ADC_1_Switch Off
17 ENUM 1 Audio_ADC_2_Switch Off
18 ENUM 1 Audio_ADC_3_Switch Off
19 ENUM 1 Audio_ADC_4_Switch Off
20 ENUM 1 Audio_PGA1_Setting 12Db
21 ENUM 1 Audio_PGA2_Setting 12Db
22 ENUM 1 Audio_PGA3_Setting -6Db
23 ENUM 1 Audio_PGA4_Setting -6Db
24 ENUM 1 Audio_MicSource1_Setting ADC1
25 ENUM 1 Audio_MicSource2_Setting ADC1
26 ENUM 1 Audio_MicSource3_Setting ADC1
27 ENUM 1 Audio_MicSource4_Setting ADC1
28 ENUM 1 Audio_MIC1_Mode_Select ACCMODE
29 ENUM 1 Audio_MIC2_Mode_Select ACCMODE
30 ENUM 1 Audio_MIC3_Mode_Select ACCMODE
31 ENUM 1 Audio_MIC4_Mode_Select ACCMODE
32 ENUM 1 SineTable_DL_DAC Off
33 ENUM 1 SineTable_UL_ADC Off
34 ENUM 1 Codec_Loopback_Setting OFF
35 ENUM 1 Speech_MD_USAGE Off
36 ENUM 1 Audio_Hdmi_SideGen_Switch Off
37 ENUM 1 AP_Loopback_Select AP_LOOPBACK_NONE
38 ENUM 1 Audio_i2s0_SideGen_Switch Off
39 ENUM 1 Audio_i2s0_hd_Switch Off
40 ENUM 1 Audio_ExtCodec_EchoRef_Switch Off
41 INT 1 Audio Mrgrx Volume 65536
42 ENUM 1 cmb stub Audio Control CMB_STUB_AIF_3
43 ENUM 1 Audio_I2S0dl1_hd_Switch Off
44 ENUM 1 Audio_FMTX_hd_Switch On
45 ENUM 1 Audio_SideGen_Switch OFF
46 ENUM 1 Audio_SideGen_SampleRate 48K
47 ENUM 1 Audio_SideGen_Amplitude 1/128
48 ENUM 1 Audio_Sidetone_Switch Off
49 ENUM 1 Audio_Mode_Switch Normal_Mode
50 INT 1 Audio IRQ1 CNT 0
51 INT 1 Audio IRQ2 CNT 0
52 INT 1 Audio HPL Offset 314
53 INT 1 Audio HPR Offset 312
54 ENUM 1 Audio_Debug_Setting Off
55 ENUM 1 Audio_Ipoh_Setting Off
56 ENUM 1 Audio_I2S1_Setting Off
57 ENUM 1 Audio_HPL_Calibration false
58 ENUM 1 Audio_HPR_Calibration false
59 ENUM 1 Pmic_Anc_Switch ANCON
60 INT 1 Audio HP ImpeDance Setting 16
61 INT 1 Audio FM I2S Volume 65536
62 ENUM 1 I2S low Jitter function Off
2.开启录音机。执行tinymix,得到录音状态下控件情况
tb8163p3_64_bsp:/ # tinymix
tinymix
Mixer name: 'mt-snd-card'
Number of controls: 63
ctl type num name value
0 ENUM 1 Audio_Amp_R_Switch Off
1 ENUM 1 Audio_Amp_L_Switch Off
2 ENUM 1 Voice_Amp_Switch Off
3 ENUM 1 Speaker_Amp_Switch Off
4 ENUM 1 Headset_Speaker_Amp_Switch Off
5 ENUM 1 Ext_Speaker_Amp_Switch Off
6 ENUM 1 Headphone_Speaker_Mux Speaker
7 ENUM 1 Headset_PGAL_GAIN (null)
8 ENUM 1 Headset_PGAR_GAIN (null)
9 ENUM 1 Handset_PGA_GAIN -21Db
10 ENUM 1 Lineout_PGAR_GAIN 8Db
11 ENUM 1 Lineout_PGAL_GAIN 8Db
12 ENUM 1 Ext_Amp_Gain 6dB
13 ENUM 1 AUD_CLK_BUF_Switch Off
14 ENUM 1 Audio_Preamp1_Switch IN_ADC1
15 ENUM 1 Audio_Preamp2_Switch IN_ADC3
16 ENUM 1 Audio_ADC_1_Switch On
17 ENUM 1 Audio_ADC_2_Switch On
18 ENUM 1 Audio_ADC_3_Switch Off
19 ENUM 1 Audio_ADC_4_Switch Off
20 ENUM 1 Audio_PGA1_Setting 18Db
21 ENUM 1 Audio_PGA2_Setting 18Db
22 ENUM 1 Audio_PGA3_Setting -6Db
23 ENUM 1 Audio_PGA4_Setting -6Db
24 ENUM 1 Audio_MicSource1_Setting ADC1
25 ENUM 1 Audio_MicSource2_Setting ADC1
26 ENUM 1 Audio_MicSource3_Setting ADC1
27 ENUM 1 Audio_MicSource4_Setting ADC1
28 ENUM 1 Audio_MIC1_Mode_Select ACCMODE
29 ENUM 1 Audio_MIC2_Mode_Select ACCMODE
30 ENUM 1 Audio_MIC3_Mode_Select ACCMODE
31 ENUM 1 Audio_MIC4_Mode_Select ACCMODE
32 ENUM 1 SineTable_DL_DAC Off
33 ENUM 1 SineTable_UL_ADC Off
34 ENUM 1 Codec_Loopback_Setting OFF
35 ENUM 1 Speech_MD_USAGE Off
36 ENUM 1 Audio_Hdmi_SideGen_Switch Off
37 ENUM 1 AP_Loopback_Select AP_LOOPBACK_NONE
38 ENUM 1 Audio_i2s0_SideGen_Switch Off
39 ENUM 1 Audio_i2s0_hd_Switch Off
40 ENUM 1 Audio_ExtCodec_EchoRef_Switch Off
41 INT 1 Audio Mrgrx Volume 65536
42 ENUM 1 cmb stub Audio Control CMB_STUB_AIF_3
43 ENUM 1 Audio_I2S0dl1_hd_Switch Off
44 ENUM 1 Audio_FMTX_hd_Switch On
45 ENUM 1 Audio_SideGen_Switch OFF
46 ENUM 1 Audio_SideGen_SampleRate 48K
47 ENUM 1 Audio_SideGen_Amplitude 1/128
48 ENUM 1 Audio_Sidetone_Switch Off
49 ENUM 1 Audio_Mode_Switch Normal_Mode
50 INT 1 Audio IRQ1 CNT 2048
51 INT 1 Audio IRQ2 CNT 960
52 INT 1 Audio HPL Offset 314
53 INT 1 Audio HPR Offset 312
54 ENUM 1 Audio_Debug_Setting Off
55 ENUM 1 Audio_Ipoh_Setting Off
56 ENUM 1 Audio_I2S1_Setting Off
57 ENUM 1 Audio_HPL_Calibration false
58 ENUM 1 Audio_HPR_Calibration false
59 ENUM 1 Pmic_Anc_Switch ANCON
60 INT 1 Audio HP ImpeDance Setting 16
61 INT 1 Audio FM I2S Volume 65536
62 ENUM 1 I2S low Jitter function Off
比较不同处
经过分析,主要是ctl id 14 15 16 17 20 21需要在录音时候打开。
由上述分析后,我们只需要切换14 15 16 17 20 21即可录音
1.执行如下命令
设置adc
tinymix 14 1
tinymix 15 3
开启adc
tinymix 16 1
tinymix 17 1
设置增益
tinymix 20 4
tinymix 21 4
2.tinycap录音
tinycap /sdcard/aud-test.wav -D 0 -d 1 -c 2 -b 16 -r 16000
OK~