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