FreeCalypso > hg > freecalypso-tools
annotate doc/Audio-mode-config @ 911:7077d02ed3b1
doc/Host-tools-overview: document fc-efr2tch
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 29 Dec 2022 21:15:36 +0000 | 
| parents | 6c306705f503 | 
| children | 
| rev | line source | 
|---|---|
| 245 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 There exist a number of tunable settings in the Iota ABB (the chip that performs | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 A-to-D and D-to-A conversion for the voice path) and in the Calypso DSP which | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 in TI's firmware architecture are meant to be configured through the audio mode | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 facility of the RiViera Audio Service. The ABB settings grouped under the audio | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 mode are as follows: | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 * The selection of which analog interface pins the downlink audio should be | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 sent to: EARN&EARP (earpiece), AUXON&AUXOP (auxiliary) or HSO (headset). | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 * The selection of which analog interface pins the uplink audio should be taken | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 from: MICIN&MICIP (main microphone), AUXI (auxiliary input) or HSMICP | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 (headset microphone). | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 * The selection of AUXI input levels when this analog input is in use for the | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 voice uplink. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 * Analog gains for the uplink, the downlink and the analog sidetone from the | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 uplink input to the downlink output. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 * Selection of a special filter bypass mode for the voice downlink. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 * The selection of MICBIAS (or HSMICBIAS) voltage between 2.0 V and 2.5 V. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 The DSP voice path settings grouped under the audio mode are as follows: | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 * The selection of the digital voice path as being between GSM and the ABB (the | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 default for analog voice interfaces), between GSM and MCSI (the external | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 digital voice interface) or between MCSI and the ABB (non-GSM operation). | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 * FIR filter coefficients for the voice uplink and for the voice downlink. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 * Enabling/disabling and configuration of the Acoustic Echo Cancellation (AEC) | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 mechanism. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 The firmware paradigm for working with all of the above settings is as follows: | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 * In a lab environment, each of the listed settings can be independently tweaked | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 and read back through ETM packets over the RVTMUX debug serial interface; the | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 corresponding fc-tmsh commands (matching TI's original Windows-based TMSH) | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 are auw for writing individual audio parameters and aur for reading them back. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 * In end-use operation, TI's intent as realized in the firmware design is that | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 all of the listed audio settings will only be changed as a group, loaded from | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 audio mode configuration files in FFS. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 Each audio mode configuration needs to be assigned a name between 1 and 9 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 characters long, and for each named configuration there are two files in FFS: | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 /aud/modename.cfg is the main configuration file | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 /aud/modename.vol is the corresponding volume setting file | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 This paradigm is a good fit for "dumbphone" handsets in which there usually | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 will be several different voice audio configurations for classic handheld | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 operation, for the hands-free loudspeaker mode, for operation with a wired | 
| 838 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 55 headset, and if the phone uses its hands-free loudspeaker plus the Calypso DSP | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 56 to play ringtones (as opposed to using a buzzer on BU/PWT or a ringtone player | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 57 chip that drives the speaker bypassing the voice path), there will also need to | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 58 be an output-only audio configuration for ringing. | 
| 245 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 How do the audio mode config files under /aud come into being? It appears that | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 TI's original intent was that a configuration would be manually constructed on | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 a test device via TMSH auw commands, saved in the FFS of that test device with | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 the aus command, then read out of that test device FFS in binary form and | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 reuploaded as an opaque blob to all devices on the production line. One can do | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 the same procedure with our fc-tmsh and fc-fsio which fully replicate the | 
| 261 
0321cd08b19f
doc/Audio-mode-config: typo fix
 Mychaela Falconia <falcon@freecalypso.org> parents: 
247diff
changeset | 66 relevant functionality of TI's original TMSH (to the best of our knowledge), | 
| 245 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 but in FreeCalypso we have an alternate way which fits better with our UNIX | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 philosophy: we have created our own ASCII text format for representing all of | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 the content in TI's /aud/*.cfg binary files and tiaud-* utilities for compiling | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 TI's binary cfg files from our ASCII source format, disassembling a *.cfg file | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 read out of FFS into the same ASCII format, and creating the required *.vol | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 companion files, which are also binary. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 A note about volume settings: the Iota ABB has two variable gain controls in | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 the voice downlink path: the main "volume" gain in rather coarse 6 dB steps | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 (the choices being 0 dB, -6 dB, -12 dB, -18 dB, -24 dB and mute) and a finer | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 "calibration" gain in 1 dB steps between -6 and +6 dB. It appears that TI's | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 intent was that only the coarse volume control in 6 dB steps is to be visible | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 to the user, with just 5 possible non-mute volume levels, and that the finer | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 gain control be set at the factory in the audio mode config files for each mode | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 as some form of calibration. Pirelli DP-L10 significantly deviates from this | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 model by providing 10 non-mute volume levels to the user with 2 dB or 3 dB steps | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 between them by changing both VOLCTL and VDLPG fields in the VBDCTRL register, | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 but at the present time we have no plans to make a similar drastic change in | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 FreeCalypso. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 Another noteworthy feature of the audio mode system with respect to volume | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 control is that there is a separate *.vol file that stores the current volume | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 setting for each mode. In a "dumbphone" handset firmware built according to | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 TI's paradigm, the /aud/*.cfg files will be written once on the factory | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 production line and only read afterward, but whenever the user turns the volume | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 up or down in the UI, the *.vol file _corresponding to the current mode_ will | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 be updated by the running fw. Thus the fw would maintain a separate notion of | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 the current volume for ringing, for the earpiece speaker, for the hands-free | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 loudspeaker and for the wired headset, something which Pirelli's fw very | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 notoriously fails to do. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 | 
| 838 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 98 Old vs. new AEC | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 99 =============== | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 100 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 101 One of the settings in the audio mode config structure underwent an evolutionary | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 102 change within the span of history that is relevant to FreeCalypso - this setting | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 103 is the configuration for AEC, the Acoustic Echo Cancellation functional block | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 104 of the Calypso DSP. As TI's GSM DSPs evolved (before, during and after the | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 105 Calypso era), their AEC implementation evolved along with the rest, and | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 106 different evolutionary versions of AEC require different configuration and | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 107 tuning parameters. When the audio mode facility was first implemented, the AEC | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 108 block in TI's GSM DSPs of that time was controlled with a single 16-bit control | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 109 word; the people in the SSA group who implemented RiViera Audio Service then | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 110 decided to split different bits from this one DSP control word into 5 different | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 111 parameter words, and the result was the "old" 5-word AEC config. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 112 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 113 But the version of AEC implemented in the DSP ROM in the Calypso silicon version | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 114 we work with is slightly newer; this version corresponds to what TI's L1 code | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 115 calls L1_NEW_AEC. However, the waters then got muddied: for reasons which we | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 116 (FreeCalypso team) cannot understand (perhaps miscommunication between different | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 117 groups at TI), TI's TCS211 reference firmware shipped with L1_NEW_AEC disabled | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 118 (C preprocessor symbol set to 0 instead of 1), even though the underlying DSP | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 119 AEC block (combination of ROM and official patches) is the "new" kind and not | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 120 the "old" one. There are two fallouts from this software misconfiguration on | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 121 TI's part: | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 122 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 123 1) If one takes stock TCS211 from TI or any derivative version in which this | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 124 aspect is unchanged (all mokoN firmwares, and all FC firmwares up to | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 125 Magnetite) and tries to enable AEC, the result will be a poor AEC | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 126 configuration: the old echo level and long vs short settings do nothing on | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 127 the new DSP, whereas the new tunable parameters will remain at their defaults | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 128 with no way to tweak them. I (Mother Mychaela) can only guess that this | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 129 situation is what Openmoko must have run into when they tried to get AEC | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 130 working. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 131 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 132 2) When someone downstream of TI figures out that L1_NEW_AEC needs to be changed | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 133 from 0 to 1 and actually makes that change, like we did in our Tourmaline fw, | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 134 the format and size of the audio mode binary structure change, and all old | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 135 audio mode config files become invalid. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 136 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 137 Our FreeCalypso work is affected by point 2 above: we started working with audio | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 138 mode config files in 2017, using the old AEC configuration, and only made the | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 139 switch to L1_NEW_AEC in 2021. We now have two kinds of audio mode config binary | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 140 files: the old kind that are 164 bytes long, and the new kind that are 176 bytes | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 141 long. Our Tourmaline firmware has L1_NEW_AEC enabled, while Magnetite (our | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 142 legacy backward compatiblity fw) has it disabled. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 143 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 144 To prevent loading of garbage into AEC config when an audio mode file of the | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 145 wrong kind is loaded, we have implemented the following workaround in both | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 146 Tourmaline and Magnetite: if the loaded mode config file has the wrong length, | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 147 the AEC config is set to the default disabled state instead of whatever is in | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 148 the mode file - loading an AEC config of the wrong format is not possible. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 149 | 
| 245 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 Default audio configuration | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 =========================== | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 The default audio config set in the Iota ABB registers and in the DSP when no | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 named audio mode config has been loaded with the audio_mode_load() API call | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 (accessible via AT@AUL or via fc-tmsh aul command) is as follows, in the syntax | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 which our tiaud-compile utility accepts as input and which our tiaud-decomp | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 utility emits as output: | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 voice-path 0 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 mic default { | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 gain 3 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 output-bias 0 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 fir 0 0x4000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 fir 8 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 fir 16 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 fir 24 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 } | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 speaker ear+aux { | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 gain 0 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 audio-filter 0 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 fir 0 0x4000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 fir 8 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 fir 16 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 fir 24 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 } | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 sidetone -5 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 aec 0 0 0 0 0 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 | 
| 838 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 179 The above version is the one produced by Magnetite and earlier firmwares without | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 180 L1_NEW_AEC; in the new Tourmaline version the last line changes to: | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 181 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 182 aec-new 0 0 0x1 0x7FFF 0x1FFF 0x4000 0x32 0x1000 0x1000 0 0 0 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 183 | 
| 245 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 The meaning is as follows: | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 * voice-path is the DSP digital voice path setting, 0 means the standard | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 configuration with the voice channel going between GSM and the local analog | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 voice hardware attached to the ABB. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 * The default microphone input is used for the voice uplink (MICIN&MICIP pins), | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 whereas the voice downlink is presented on both EARN&EARP and AUXON&AUXOP | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 pins, i.e., both "ear" and "aux" VDL amplifiers are enabled. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 * The microphone gain is 3 dB, the fine gain adjustment in the voice downlink | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 path is 0 dB, and the sidetone gain is -5 dB. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 * output-bias 0 under mic means that the MICBIAS voltage is set to 2.0 V. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 * audio-filter 0 under speaker means that the VFBYP bit in the VBCTRL1 register | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 is NOT set, i.e., the normal configuration. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 * DSP FIR filters do nothing, as coefficient 0 is set to unity and all other | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 coefficients are set to zero. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 | 
| 838 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 205 * The AEC mechanism in the DSP is disabled, although the format of the bits that | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 206 say so is different between old and new AEC versions. In the new version | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 207 there are a number of tunable settings that only kick in when AEC is enabled; | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 208 when AEC is disabled by default, these tunable knobs still have sensible | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 209 defaults that aren't all zeros. | 
| 245 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 Creating your own audio mode configurations | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 =========================================== | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 The input to our tiaud-compile utility can contain every setting shown in the | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 default case above, or any desired subset thereof. For any settings not given | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 in the input, the defaults from the above will be used, except that | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 tiaud-compile's current default for the speaker mode is just ear rather than | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 ear+aux. (It is a default which you should NOT depend on; set it explicitly if | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 it matters!) A few notes: | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 * For all settings given as numbers, the number given in the ASCII input is the | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 number that goes into TI's binary structure, without any transformation, even | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 in those cases where the result is counter-intuitive, such as "audio-filter 0" | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 meaning that the filter is *enabled*. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 * The 3 possible mode keywords for the mic mode are default, aux and headset, | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 corresponding to MICIN&MICIP, AUXI and HSMICP analog inputs, respectively. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 * The 5 possible mode keywords for the speaker mode are ear, aux, headset, | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 buzzer and ear+aux. The buzzer speaker mode exists only on TI's Nausica ABB | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 predating Iota, i.e., it won't work on any of the Calypso+Iota+Rita devices | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 built or supported by FreeCalypso, but our tiaud-compile and tiaud-decomp | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 utilities support it because it is nominally supported by TI's RiViera Audio | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 Service and its binary data structure for audio mode configuration. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 * When mic is set to aux, an additional mic setting called extra-gain becomes | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 available. If extra-gain is set to 0, the AUXI gain will be set to 28.2 dB, | 
| 247 
b5b148ef63da
doc/Audio-mode-config: fixed logic error in the description of extra-gain
 Mychaela Falconia <falcon@freecalypso.org> parents: 
245diff
changeset | 238 if extra-gain is set to 1, the AUXI gain will be set to 4.6 dB; all other | 
| 245 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 values will be considered invalid by the firmware. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 * Each of the two FIR filters in the DSP (one for uplink, one for downlink) has | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 a total of 31 coefficients, numbered 0 through 30, inclusive. In the ASCII | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 input to tiaud-compile you can put each coefficient on its own fir line, put | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 all 31 coefficients on the same line, or group them in any other way you like. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 The grouping used in the tiaud-decomp output has been chosen for line length | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 reasons. | 
| 
796c659b747c
doc/Audio-mode-config written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 | 
| 838 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 248 aec vs aec-new in tiaud-compile input | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 249 ===================================== | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 250 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 251 tiaud-compile accepts both aec (old) and aec-new settings; aec must be followed | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 252 by 5 numbers, aec-new must be followed by 12 numbers. Each number is a 16-bit | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 253 value, and they go into the binary structure without further interpretation by | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 254 tiaud-compile - instead the firmware is the entity that gives them meaning. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 255 Numbers without 0x prefix are interpreted as decimal. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 256 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 257 tiaud-compile will generate one type or the other of the binary output file, | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 258 following these rules: | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 259 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 260 * If an aec setting is given, a 164 byte file will be produced, with the 5 AEC | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 261 words being the given ones. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 262 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 263 * If an aec-new setting is given, a 176 byte file will be produced, with the 12 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 264 AEC words being the given ones. | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 265 | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 266 * If neither setting is given, a 164 byte file will be produced, with the 5 AEC | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 267 words of the old type being all zeros. Thanks to the modified audio mode | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 268 loading code in our firmwares, these 164 byte mode files can still be used | 
| 
02d92d49c9f8
doc/Audio-mode-config: update for old vs new AEC
 Mychaela Falconia <falcon@freecalypso.org> parents: 
261diff
changeset | 269 with current Tourmaline fw, with AEC set to its default disabled state. | 
| 843 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 270 | 
| 847 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 271 New AEC parameter words | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 272 ======================= | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 273 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 274 The 12 words that configure AEC of the L1_NEW_AEC flavor (appearing on the | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 275 aec-new line in tiaud-compile input or in an fc-tmsh auw 12 command) map as | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 276 follows: | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 277 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 278 Word 0: aec_enable | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 279 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 280 This word must be set to 0 to disable AEC or 2 to enable it. This word is | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 281 translated to a single DSP control bit by the Audio Service layer, thus no | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 282 other values must be written into it. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 283 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 284 Word 1: continuous_filtering | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 285 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 286 This word is written directly into the DSP, and we have no documentation for it | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 287 beyond "enable (1) or disable (0) continuous mode filtering". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 288 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 289 Word 2: granularity_attenuation | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 290 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 291 This word is written directly into the DSP, and we have no documentation for it | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 292 beyond "granularity of the smoothed attenuation". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 293 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 294 Word 3: smoothing_coefficient | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 295 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 296 This word is written directly into the DSP, and we have no documentation for it | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 297 beyond "smoothing coefficient". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 298 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 299 Word 4: max_echo_suppression_level | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 300 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 301 This word is written directly into the DSP; it is described as "maximum | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 302 attenuation level", and the following constants are defined for it: | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 303 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 304 #define AUDIO_MAX_ECHO_0dB (0x7FFF) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 305 #define AUDIO_MAX_ECHO_2dB (0x65AA) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 306 #define AUDIO_MAX_ECHO_3dB (0x59AD) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 307 #define AUDIO_MAX_ECHO_6dB (0x4000) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 308 #define AUDIO_MAX_ECHO_12dB (0x1FFF) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 309 #define AUDIO_MAX_ECHO_18dB (0x0FFF) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 310 #define AUDIO_MAX_ECHO_24dB (0x07FF) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 311 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 312 Word 5: vad_factor | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 313 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 314 This word is written directly into the DSP, and we have no documentation for it | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 315 beyond "VAD factor relative to the current estimated energy". VAD must stand | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 316 for "voice activity detector", but our knowledge ends here. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 317 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 318 Word 6: absolute_threshold | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 319 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 320 This word is written directly into the DSP, and we have no documentation for it | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 321 beyond "VAD absolute offset relative to the current estimated energy". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 322 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 323 Word 7: factor_asd_filtering | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 324 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 325 This word is written directly into the DSP, and we have no documentation for it | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 326 beyond "modifying factor of d_far_end_noise for filtering decision". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 327 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 328 Word 8: factor_asd_muting | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 329 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 330 This word is written directly into the DSP, and we have no documentation for it | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 331 beyond "modifying factor of d_far_end_noise for muting decision". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 332 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 333 Word 9: aec_visibility | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 334 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 335 This word must be set to 0 for normal operation or 0x200 for "AEC visibility" | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 336 debug mode. This word is translated to a single L1 control bit by the Audio | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 337 Service layer, thus no other values must be written into it. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 338 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 339 Word 10: noise_suppression_enable | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 340 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 341 This word must be set to 0 to disable SPENH algorithm or 4 to enable it. This | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 342 word is translated to a single DSP control bit by the Audio Service layer, thus | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 343 no other values must be written into it. We don't know what this "speech | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 344 enhancement" algorithm does, and whether or not it is the same as "noise | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 345 suppression". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 346 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 347 Word 11: noise_suppression_level | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 348 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 349 This config word is mapped to just two bits in the actual DSP control word by | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 350 the Audio Service layer, thus there are only 4 possible valid values here: | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 351 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 352 #define AUDIO_NOISE_NO_LIMITATION (0x0000) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 353 #define AUDIO_NOISE_6dB (0x0020) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 354 #define AUDIO_NOISE_12dB (0x0040) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 355 #define AUDIO_NOISE_18dB (0x0060) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 356 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 357 Some known-good AEC configurations | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 358 ================================== | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 359 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 360 The terse descriptions of parameter words given above unfortunately constitute | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 361 the total extent of our knowledge of the AEC block in our dear Calypso DSP and | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 362 its tuning parameters - we don't know anything more. However, we do have 3 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 363 example configurations to look at: we have the default values of the tuning | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 364 parameters that appear to be initialized by the DSP itself on boot, and we have | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 365 two AEC-enabled configurations set by Pirelli DP-L10 firmware: one for handheld | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 366 and wired headset modes, the other for the hands-free loudspeaker mode. Here | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 367 are the 12 parameter words in the 3 available configurations: | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 368 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 369 Parameter word Default Pirelli Pirelli | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 370 (AEC disabled) handheld hands-free | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 371 -------------------------------------------------------------------------- | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 372 aec_enable 0 (off) 2 (on) 2 (on) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 373 continuous_filtering 0 (off) 1 (on) 1 (on) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 374 granularity_attenuation 0x0001 0x0014 0x0014 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 375 smoothing_coefficient 0x7FFF 0x0CCC 0x0CCC | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 376 max_echo_suppression_level 0x1FFF (12 dB) 0x59AD (3 dB) 0x0FFF (18 dB) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 377 vad_factor 0x4000 0x4000 0x4000 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 378 absolute_threshold 0x0032 0x0032 0x0032 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 379 factor_asd_filtering 0x1000 0x1000 0x1000 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 380 factor_asd_muting 0x1000 0x1000 0x1000 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 381 aec_visibility 0 (off) 0 (off) 0 (off) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 382 noise_suppression_enable 0 (off) 4 (on) 4 (on) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 383 noise_suppression_level 0 (none) 0 (none) 0x0060 (18 dB) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 384 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 385 The following observations can be made: | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 386 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 387 * The 4 parameters vad_factor, absolute_threshold, factor_asd_filtering and | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 388 factor_asd_muting remain unchanged between TI's DSP default and Pirelli's | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 389 production configs. On the basis of this observation, I (Mother Mychaela) | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 390 get the feeling that these four should be left alone. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 391 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 392 * Besides the obvious steps of enabling AEC and SPENH, Pirelli did change | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 393 continuous_filtering (from off to on), granularity_attenuation and | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 394 smoothing_coefficient. Unfortunately, unless we recover the source code for | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 395 our Calypso DSP ROM or some documents explaining this version of AEC in | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 396 detail, we have no way of understanding what these parameters do, let alone | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 397 evaluating the merits of Pirelli's change. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 398 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 399 * max_echo_suppression_level and noise_suppression_level seem to be the two | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 400 parameters most amenable to tuning. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 401 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 402 * It is interesting to note that Pirelli's fw enables AEC not only in the | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 403 loudspeaker mode, but also in the more basic handheld and wired headset | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 404 modes. The two AEC configs differ only in max_echo_suppression_level and | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 405 noise_suppression_level parameters, with the loudspeaker mode AEC config | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 406 being more aggressive. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 407 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 408 Prior to seeing what Pirelli's fw does, my (Mychaela's) own thinking was that | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 409 AEC is only needed in loudspeaker configurations, not handheld or headset. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 410 After seeing Pirelli's AEC configs, I reason that enabling a less aggressive | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 411 AEC configuration in those less echo-prone modes probably doesn't hurt - thus | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 412 until and unless we recover more documentation or other knowledge, the plan for | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 413 our own FreeCalypso Libre Dumbphone handset is to do what Pirelli does: use a | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 414 less aggressive AEC config in handheld and headset modes, and a more aggressive | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 415 one in the hands-free loudspeaker mode. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 416 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 417 On our current FCDEV3B setup with a SparkFun COM-09151 loudspeaker and a CUI | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 418 CMC-9745-130T microphone, applying Pirelli's loudspeaker-mode AEC config | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 419 produces echo cancellation that sounds acceptable to our subjective human | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 420 evaluator on the far end of test calls. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 421 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 422 FIR filter details | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 423 ================== | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 424 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 425 Calypso DSP has two FIR filters in the voice paths, one in the uplink path and | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 426 one in the downlink path. Aside from their placement, the two FIR filters are | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 427 identical. Each FIR block has 31 taps (making a 30th order filter), and each of | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 428 the 31 coefficients is a 16-bit fixed-point number. The fixed point format is | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 429 F2.14 aka Q14: to get the real coefficient from the physical 16 bits, treat the | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 430 16-bit datum as a two's complement signed integer, then divide by 16384. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 431 Examples: 0x4000 means 1, 0x2000 means 0.5, 0xC000 means -1, 0xE000 means -0.5. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 432 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 433 In principle you can set all 31 coefficients to whatever you like, but in | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 434 practice only two possible configurations are used: | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 435 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 436 * When the FIR filter is disabled (identity transform), coefficient 0 is set to | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 437 0x4000 (unity) and all other coefficients are set to 0. In this configuration | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 438 the FIR block does not introduce any extra delay: all delayed samples are | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 439 multiplied by 0 and thus produce no effect. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 440 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 441 * When some non-identity frequency response transformation is desired, a linear | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 442 phase filter is set up: coefficient #15 becomes the main tap (significantly | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 443 greater in absolute value than all others) and all other coefficients mirror | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 444 around it symmetrically: #0 equals #30, #1 equals #29 and so forth, until #14 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 445 equals #16. This filter adds 1.875 ms of delay (15 sample times) to the voice | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 446 path in which it is active, and an equal amount of "pre-ringing". | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 447 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 448 The presumed purpose of these two FIR filters (uplink and downlink) is to | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 449 flatten the frequency response of the speaker and microphone transducers, or | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 450 perhaps even more ambitiously, the frequency response of the modeled acoustic | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 451 environment. However, actually coming up with a good set of FIR filter | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 452 coefficients given a desired frequency response is a hard problem, one where | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 453 forward engineering is much more difficult than reverse. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 454 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 455 When it comes to reverse engineering of existing Calypso DSP FIR filters, a | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 456 total of 7 specimen have been captured out in the wild so far: one downlink FIR | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 457 filter from Openmoko's non-functional para0.cfg (no way of knowing which speaker | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 458 it was once designed for), and a set of 6 filters extracted from Pirelli DP-L10, | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 459 3 uplink and 3 downlink, corresponding to the 3 audio routing modes supported on | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 460 this phone model (handheld, hands-free and wired headset). All 7 are linear | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 461 phase filters as described above. Analyzing the frequency response of a given | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 462 already existing FIR filter is easy: just use the fir2freq program in our | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 463 freecalypso-reveng Hg repository. OTOH, coming up with a new set of FIR filter | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 464 coefficients for some desired frequency response (e.g., for a new phone handset | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 465 being designed) is a much harder problem, one which we will probably have to | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 466 outsource to a hired DSP/FIR expert. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 467 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 468 Calypso FIR support in FC host tools | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 469 ------------------------------------ | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 470 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 471 Uplink and downlink FIR filter coefficients can be included in the input to | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 472 tiaud-compile. Each coefficient is given as the actual 16-bit word going into | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 473 the DSP (Q14 scaling included), and can be specified either in hex or as a | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 474 signed decimal integer. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 475 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 476 We also have a dedicated ASCII file format for a FIR filter coefficient set by | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 477 itself, like this example: | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 478 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 479 fir-coeff-table | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 480 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 481 0x0178 0x0AB5 0xF43D 0xFED5 0xFCA7 0x04D8 0x00B8 0x0371 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 482 0x032F 0x0007 0x151C 0xF24C 0x19A6 0xE918 0xF7CD 0x7D0C | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 483 0xF7CD 0xE918 0x19A6 0xF24C 0x151C 0x0007 0x032F 0x0371 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 484 0x00B8 0x04D8 0xFCA7 0xFED5 0xF43D 0x0AB5 0x0178 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 485 | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 486 (This example is the FIR filter extracted from Openmoko's non-functional | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 487 para0.cfg.) This by-itself FIR filter coeff set format is accepted as input to | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 488 the auw-fir command in fc-tmsh (allowing experimental FIR filters to be uploaded | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 489 to a running Calypso device for testing) and to our fir2freq analysis program. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 490 We will probably use the same format if and when we embark on a venture to | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 491 design our own FIR filters for our own handset hardware. | 
| 
6e137995c9c8
doc/Audio-mode-config: elaborate on AEC and FIR blocks
 Mychaela Falconia <falcon@freecalypso.org> parents: 
843diff
changeset | 492 | 
| 843 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 493 fc-tmsync aur and aur-all addition | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 494 ================================== | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 495 | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 496 New addition as of fc-host-tools-r16: our aur command which natively resides in | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 497 fc-tmsh (audio mode full access read operation via ETM) has also been | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 498 implemented in fc-tmsync for scripted usage. Furthermore, we also implemented | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 499 an aur-all command that issues the same sequence of aur operations as the | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 500 firmware's built-in audio_mode_save() and emits the output on stdout in the same | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 501 format as tiaud-decomp. The end effect is that fc-tmsync aur-all is a much | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 502 shorter and more direct way of obtaining exactly the same result as would | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 503 previously be obtained by saving the current audio mode config with aus, reading | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 504 out the resulting binary file with fc-fsio and decoding it with tiaud-decomp. | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 505 | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 506 The implementation of aur-all and the more elementary aur 12 command in | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 507 fc-tmsync works only with firmware versions that have L1_NEW_AEC enabled - | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 508 therefore, these commands work with FC Tourmaline but not Magnetite. | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 509 | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 510 Furthermore, our aur command in both fc-tmsh and fc-tmsync and the new fc-tmsync | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 511 aur-all command also work against Pirelli's firmware - this alien fw implements | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 512 ETM aur operation exactly the same as standard TCS211, and it has L1_NEW_AEC | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 513 enabled, such that aur 12 returns the 24 byte long L1_NEW_AEC version of | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 514 T_AUDIO_AEC_CFG structure. The combination of this functionality in Pirelli's | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 515 fw and our fc-tmsync addition makes it possible to read out Pirelli's highly | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 516 tuned audio configurations in a very convenient manner, much more convenient | 
| 
6a0fcbca8ac7
document fc-tmsync aur & aur-all addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
838diff
changeset | 517 than reading ABB registers with abbr and reading DSP API words with r16. | 
| 848 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 518 | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 519 fc-audio-config repository | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 520 ========================== | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 521 | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 522 We have a separate repository for FC audio mode configurations, both complete | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 523 configs and individual config pieces (AEC and FIR): | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 524 | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 525 https://www.freecalypso.org/hg/fc-audio-config/ | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 526 | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 527 These audio configuration bits are maintained in their own repository because | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 528 they are separate from the present FC host tools package and also separate from | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 529 our firmwares, evolving independently without strict synchronization with these | 
| 
6c306705f503
doc/Audio-mode-config: add pointer to fc-audio-config repository
 Mychaela Falconia <falcon@freecalypso.org> parents: 
847diff
changeset | 530 other components. | 
