tinycap recording

Recording problems inevitably need to capture the original pcm data to analyze the waveform. At present, most of Android is based on tinyalsa to implement audio-related interfaces, so it is natural to take this step in the debugging process.

The default MTK source code only includes the so of the tinyalsa interface, and does not compile the tinyalsa command tool into the version by default

Under the source code directory external/tinyalsa, single compile to generate binary executable file out/target/product/k37mv1_64_bsp/system/bin
tinyhostless
tinymix
tinypcminfo
tinycap
tinyplay

各种命令的用法eg.
adb root
adb shell
k37mv1_64_bsp:/ # tinycap
Usage: tinycap file.wav [-D card] [-d device] [-c channels] [-r rate] [-b bits] [-p period_size] [-n n_periods] [-T capture time]

card ------ sound card
device ------ device capture/playback tinycap must find the corresponding capture device
channels ------ number of channels
rate ------ sampling rate
bits ----
--Number of digits period_size-single sampling segment size
n_periods-sampling segment number
capture time-recording time

Before tinycap officially records the pcm data, first open the mixer configuration. If you are not familiar with it, we can solve this problem in a reverse way, that is,
we can run tinymix without recording the pcm data and
you can see the following configuration status:

k37mv1_64_bsp:/ # tinymix
Mixer name: 'mt-snd-card'
Number of controls: 89
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       Headset_PGAL_GAIN                        -4Db
6       ENUM    1       Headset_PGAR_GAIN                        -4Db
7       ENUM    1       Handset_PGA_GAIN                         8Db
8       ENUM    1       Lineout_PGAR_GAIN                        0Db
9       ENUM    1       Lineout_PGAL_GAIN                        0Db
10      ENUM    1       AUD_CLK_BUF_Switch                       Off
11      ENUM    1       Ext_Speaker_Amp_Switch                   Off
12      ENUM    1       Receiver_Speaker_Switch                  Off
13      ENUM    1       Audio_ADC_1_Switch                       Off
14      ENUM    1       Audio_ADC_2_Switch                       Off
15      ENUM    1       Audio_ADC_3_Switch                       Off
16      ENUM    1       Audio_ADC_4_Switch                       Off
17      ENUM    1       Audio_Preamp1_Switch                     OPEN
18      ENUM    1       Audio_ADC_1_Sel                          Preamp
19      ENUM    1       Audio_ADC_2_Sel                          Preamp
20      ENUM    1       Audio_ADC_3_Sel                          idle
21      ENUM    1       Audio_ADC_4_Sel                          idle
22      ENUM    1       Audio_PGA1_Setting                       18Db
23      ENUM    1       Audio_PGA2_Setting                       18Db
24      ENUM    1       Audio_PGA3_Setting                       0Db
25      ENUM    1       Audio_PGA4_Setting                       0Db
26      ENUM    1       Audio_MicSource1_Setting                 ADC1
27      ENUM    1       Audio_MicSource2_Setting                 ADC1
28      ENUM    1       Audio_MicSource3_Setting                 ADC1
29      ENUM    1       Audio_MicSource4_Setting                 ADC1
30      ENUM    1       Audio_MIC1_Mode_Select                   DCCMODE
31      ENUM    1       Audio_MIC2_Mode_Select                   DCCMODE
32      ENUM    1       Audio_MIC3_Mode_Select                   ACCMODE
33      ENUM    1       Audio_MIC4_Mode_Select                   ACCMODE
34      ENUM    1       Audio_Mic_Power_Mode                     normal
35      ENUM    1       Audio_Vow_ADC_Func_Switch                Off
36      ENUM    1       Audio_Preamp2_Switch                     OPEN
37      ENUM    1       Audio_Vow_Digital_Func_Switch            Off
38      ENUM    1       Audio_Vow_MIC_Type_Select                HandsetAMIC
39      INT     1       Audio VOWCFG0 Data                       0
40      INT     1       Audio VOWCFG1 Data                       0
41      INT     1       Audio VOWCFG2 Data                       8995
42      INT     1       Audio VOWCFG3 Data                       42856
43      INT     1       Audio VOWCFG4 Data                       111
44      INT     1       Audio VOWCFG5 Data                       1
45      INT     1       Audio_VOW_State                          0
46      ENUM    1       SineTable_DAC_HP                         Off
47      ENUM    1       DAC_LOOP_DAC_HS                          Off
48      ENUM    1       DAC_LOOP_DAC_HP                          Off
49      ENUM    1       Voice_Call_DAC_DAC_HS                    Off
50      ENUM    1       SineTable_UL2                            Off
51      ENUM    1       Pmic_Loopback                            Off
52      INT     1       Audio HP ImpeDance Setting               5000
53      ENUM    1       Audio_Speaker_class_Switch               CLASSAB
54      ENUM    1       Audio_Speaker_PGA_gain                   12Db
55      ENUM    1       Audio_Speaker_OC_Falg                    Off
56      ENUM    1       Audio_Speaker_CurrentSensing             Off
57      ENUM    1       Audio_Speaker_CurrentPeakDetector        Off
58      INT     1       Audio AUXADC Data                        -1
59      ENUM    1       Speech_MD_USAGE                          Off
60      ENUM    1       Audio_Hdmi_SideGen_Switch                Off
61      ENUM    1       Audio_i2s0_SideGen_Switch                Off
62      ENUM    1       Audio_i2s0_hd_Switch                     Off
63      ENUM    1       Audio_ExtCodec_EchoRef_Switch            Off
64      INT     1       Audio Mrgrx Volume                       65536
65      ENUM    1       cmb stub Audio Control                   CMB_STUB_AIF_3
66      ENUM    1       Audio_I2S0dl1_hd_Switch                  Off
67      INT     1       Audio IRQ1 CNT                           0
68      ENUM    1       deep_buffer_dl_hd_Switch                 Off
69      INT     1       deep_buffer_irq_cnt                      0
70      ENUM    1       dl1bt_memif_select                       dl1
71      ENUM    1       Audio_FMTX_hd_Switch                     On
72      ENUM    1       Audio_SineGen_Switch                     OFF
73      ENUM    1       Audio_SineGen_SampleRate                 48K
74      ENUM    1       Audio_SineGen_Amplitude                  1/128
75      ENUM    1       Audio_Sidetone_Switch                    Off
76      ENUM    1       Audio_Mode_Switch                        Normal_Mode
77      INT     1       Audio HPL Offset                         1974
78      INT     1       Audio HPR Offset                         1986
79      ENUM    1       Audio_Debug_Setting                      Off
80      ENUM    1       Audio_Ipoh_Setting                       Off
81      ENUM    1       Audio_I2S1_Setting                       Off
82      INT     2       Audio_DL2_DataTransfer                   -1 -1
83      INT     1       Audio_LowLatency_Debug                   0
84      INT     1       Audio_Assign_DRAM                        0
85      ENUM    1       Pmic_Anc_Switch                          ANCON
86      INT     1       Audio FM I2S Volume                      65536
87      ENUM    1       fast_dl_hd_Switch                        Off
88      ENUM    1       I2S low Jitter function                  Off

Then we can first open the recording app and use tinymix to view the configuration changes

k37mv1_64_bsp:/ # tinymix
Mixer name: 'mt-snd-card'
Number of controls: 89
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       Headset_PGAL_GAIN                        -4Db
6       ENUM    1       Headset_PGAR_GAIN                        -4Db
7       ENUM    1       Handset_PGA_GAIN                         8Db
8       ENUM    1       Lineout_PGAR_GAIN                        0Db
9       ENUM    1       Lineout_PGAL_GAIN                        0Db
10      ENUM    1       AUD_CLK_BUF_Switch                       On
11      ENUM    1       Ext_Speaker_Amp_Switch                   Off
12      ENUM    1       Receiver_Speaker_Switch                  Off
13      ENUM    1       Audio_ADC_1_Switch                       On
14      ENUM    1       Audio_ADC_2_Switch                       On
15      ENUM    1       Audio_ADC_3_Switch                       Off
16      ENUM    1       Audio_ADC_4_Switch                       Off
17      ENUM    1       Audio_Preamp1_Switch                     IN_ADC1
18      ENUM    1       Audio_ADC_1_Sel                          Preamp
19      ENUM    1       Audio_ADC_2_Sel                          Preamp
20      ENUM    1       Audio_ADC_3_Sel                          idle
21      ENUM    1       Audio_ADC_4_Sel                          idle
22      ENUM    1       Audio_PGA1_Setting                       18Db
23      ENUM    1       Audio_PGA2_Setting                       18Db
24      ENUM    1       Audio_PGA3_Setting                       0Db
25      ENUM    1       Audio_PGA4_Setting                       0Db
26      ENUM    1       Audio_MicSource1_Setting                 ADC1
27      ENUM    1       Audio_MicSource2_Setting                 ADC1
28      ENUM    1       Audio_MicSource3_Setting                 ADC1
29      ENUM    1       Audio_MicSource4_Setting                 ADC1
30      ENUM    1       Audio_MIC1_Mode_Select                   DCCMODE
31      ENUM    1       Audio_MIC2_Mode_Select                   DCCMODE
32      ENUM    1       Audio_MIC3_Mode_Select                   ACCMODE
33      ENUM    1       Audio_MIC4_Mode_Select                   ACCMODE
34      ENUM    1       Audio_Mic_Power_Mode                     normal
35      ENUM    1       Audio_Vow_ADC_Func_Switch                Off
36      ENUM    1       Audio_Preamp2_Switch                     IN_ADC3
37      ENUM    1       Audio_Vow_Digital_Func_Switch            Off
38      ENUM    1       Audio_Vow_MIC_Type_Select                HandsetAMIC
39      INT     1       Audio VOWCFG0 Data                       0
40      INT     1       Audio VOWCFG1 Data                       0
41      INT     1       Audio VOWCFG2 Data                       8995
42      INT     1       Audio VOWCFG3 Data                       42856
43      INT     1       Audio VOWCFG4 Data                       111
44      INT     1       Audio VOWCFG5 Data                       1
45      INT     1       Audio_VOW_State                          0
46      ENUM    1       SineTable_DAC_HP                         Off
47      ENUM    1       DAC_LOOP_DAC_HS                          Off
48      ENUM    1       DAC_LOOP_DAC_HP                          Off
49      ENUM    1       Voice_Call_DAC_DAC_HS                    Off
50      ENUM    1       SineTable_UL2                            Off
51      ENUM    1       Pmic_Loopback                            Off
52      INT     1       Audio HP ImpeDance Setting               5000
53      ENUM    1       Audio_Speaker_class_Switch               CLASSAB
54      ENUM    1       Audio_Speaker_PGA_gain                   12Db
55      ENUM    1       Audio_Speaker_OC_Falg                    Off
56      ENUM    1       Audio_Speaker_CurrentSensing             Off
57      ENUM    1       Audio_Speaker_CurrentPeakDetector        Off
58      INT     1       Audio AUXADC Data                        -1
59      ENUM    1       Speech_MD_USAGE                          Off
60      ENUM    1       Audio_Hdmi_SideGen_Switch                Off
61      ENUM    1       Audio_i2s0_SideGen_Switch                Off
62      ENUM    1       Audio_i2s0_hd_Switch                     Off
63      ENUM    1       Audio_ExtCodec_EchoRef_Switch            Off
64      INT     1       Audio Mrgrx Volume                       65536
65      ENUM    1       cmb stub Audio Control                   CMB_STUB_AIF_3
66      ENUM    1       Audio_I2S0dl1_hd_Switch                  Off
67      INT     1       Audio IRQ1 CNT                           0
68      ENUM    1       deep_buffer_dl_hd_Switch                 Off
69      INT     1       deep_buffer_irq_cnt                      0
70      ENUM    1       dl1bt_memif_select                       dl1
71      ENUM    1       Audio_FMTX_hd_Switch                     On
72      ENUM    1       Audio_SineGen_Switch                     OFF
73      ENUM    1       Audio_SineGen_SampleRate                 48K
74      ENUM    1       Audio_SineGen_Amplitude                  1/128
75      ENUM    1       Audio_Sidetone_Switch                    Off
76      ENUM    1       Audio_Mode_Switch                        Normal_Mode
77      INT     1       Audio HPL Offset                         1974
78      INT     1       Audio HPR Offset                         1986
79      ENUM    1       Audio_Debug_Setting                      Off
80      ENUM    1       Audio_Ipoh_Setting                       Off
81      ENUM    1       Audio_I2S1_Setting                       Off
82      INT     2       Audio_DL2_DataTransfer                   -1 -1
83      INT     1       Audio_LowLatency_Debug                   0
84      INT     1       Audio_Assign_DRAM                        0
85      ENUM    1       Pmic_Anc_Switch                          ANCON
86      INT     1       Audio FM I2S Volume                      65536
87      ENUM    1       fast_dl_hd_Switch                        Off
88      ENUM    1       I2S low Jitter function                  Off
k37mv1_64_bsp:/ #

The comparison found that there are only a few different configurations, so this lays the foundation for our tinycap to record pcm data.

The device under adb executes the path setting of tinymix

tinymix Audio_ADC_1_Switch On

tinymix Audio_ADC_2_Switch On

tinymix Audio_Preamp1_Switch IN_ADC1

tinymix Audio_Preamp2_Switch IN_ADC3

Finally execute it to grab the original recording pcm data

tinycap /sdcard/file.wav -D 0 -d 1 -c 2 -r 48000 -b 16

Guess you like

Origin blog.csdn.net/jeephao/article/details/108228809