FreeCalypso > hg > freecalypso-reveng
view pirelli/aec @ 402:1b83d07576bf
compal/boot/c123-boot.disasm: missed vector branch at 0x1c
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 15 Jan 2023 00:06:59 +0000 |
parents | 0f9606d1f8b8 |
children |
line wrap: on
line source
Reverse eng question: what does Pirelli's fw do with the AEC feature of Calypso DSP? Seeking an answer to this question, I sent an aur 12 command to Pirelli's fw via fc-tmsh. The response came back with 48 bytes of data, consistent with our reference TCS211 code with L1_NEW_AEC enabled. Here is the raw response in non-loudspeaker-call state: aur 12: 48 bytes offset 00: 02 00 01 00 14 00 CC 0C AD 59 00 40 32 00 00 10 offset 10: 00 10 00 00 04 00 00 00 9E FE 43 06 E5 16 34 36 offset 20: E5 16 43 06 9E FE B4 FC BA FE 0F 01 40 00 C7 FF In an active loudspeaker call, two settings change: aur 12: 48 bytes offset 00: 02 00 01 00 14 00 CC 0C FF 0F 00 40 32 00 00 10 offset 10: 00 10 00 00 04 00 60 00 9E FE 43 06 E5 16 34 36 offset 20: E5 16 43 06 9E FE B4 FC BA FE 0F 01 40 00 C7 FF Due to a misdesign in ETM (apparently unchanged between reference TCS211 and Pirelli's fw), the 48 bytes that come back are actually just 24 bytes of real data (new AEC config is 12 16-bit words) followed by 24 bytes of garbage padding. Decoding the returned 12 words of new AEC config, we get: aec_enable = 0x0002 continuous_filtering = 0x0001 granularity_attenuation = 0x0014 smoothing_coefficient = 0x0CCC max_echo_suppression_level = 0x59AD (handheld mode) or 0x0FFF (loudspeaker) vad_factor = 0x4000 absolute_threshold = 0x0032 factor_asd_filtering = 0x1000 factor_asd_muting = 0x1000 aec_visibility = 0 noise_suppression_enable = 0x0004 noise_suppression_level = 0 (handheld mode) or 0x0060 (loudspeaker)