FreeCalypso > hg > freecalypso-reveng
comparison pirelli/aec @ 372:0f9606d1f8b8
pirelli/aec: results of investigation into Pirelli's AEC config
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 29 Jul 2021 09:08:45 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
371:c7514c8b5b41 | 372:0f9606d1f8b8 |
---|---|
1 Reverse eng question: what does Pirelli's fw do with the AEC feature | |
2 of Calypso DSP? | |
3 | |
4 Seeking an answer to this question, I sent an aur 12 command to Pirelli's fw | |
5 via fc-tmsh. The response came back with 48 bytes of data, consistent | |
6 with our reference TCS211 code with L1_NEW_AEC enabled. Here is the raw | |
7 response in non-loudspeaker-call state: | |
8 | |
9 aur 12: 48 bytes | |
10 offset 00: 02 00 01 00 14 00 CC 0C AD 59 00 40 32 00 00 10 | |
11 offset 10: 00 10 00 00 04 00 00 00 9E FE 43 06 E5 16 34 36 | |
12 offset 20: E5 16 43 06 9E FE B4 FC BA FE 0F 01 40 00 C7 FF | |
13 | |
14 In an active loudspeaker call, two settings change: | |
15 | |
16 aur 12: 48 bytes | |
17 offset 00: 02 00 01 00 14 00 CC 0C FF 0F 00 40 32 00 00 10 | |
18 offset 10: 00 10 00 00 04 00 60 00 9E FE 43 06 E5 16 34 36 | |
19 offset 20: E5 16 43 06 9E FE B4 FC BA FE 0F 01 40 00 C7 FF | |
20 | |
21 Due to a misdesign in ETM (apparently unchanged between reference TCS211 and | |
22 Pirelli's fw), the 48 bytes that come back are actually just 24 bytes of real | |
23 data (new AEC config is 12 16-bit words) followed by 24 bytes of garbage | |
24 padding. Decoding the returned 12 words of new AEC config, we get: | |
25 | |
26 aec_enable = 0x0002 | |
27 continuous_filtering = 0x0001 | |
28 granularity_attenuation = 0x0014 | |
29 smoothing_coefficient = 0x0CCC | |
30 max_echo_suppression_level = 0x59AD (handheld mode) or 0x0FFF (loudspeaker) | |
31 vad_factor = 0x4000 | |
32 absolute_threshold = 0x0032 | |
33 factor_asd_filtering = 0x1000 | |
34 factor_asd_muting = 0x1000 | |
35 aec_visibility = 0 | |
36 noise_suppression_enable = 0x0004 | |
37 noise_suppression_level = 0 (handheld mode) or 0x0060 (loudspeaker) |