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)