FreeCalypso > hg > gsm-net-reveng
annotate doc/TFO-xform/EFR @ 44:b15dfdc62ceb
trau-sync8: off-by-one error in file end limit
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 13 Sep 2024 16:36:31 +0000 |
parents | 4ab7cc414ed2 |
children |
rev | line source |
---|---|
36
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 TFO transform for EFR |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 ===================== |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 Unlike the situation with FRv1 and HRv1, the standard endpoint decoder for EFR |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 provides no help for implementing a TFO transform. The reference EFR decoder |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 source from ETSI includes bad frame handling and Rx DTX functions, but the logic |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 that implements these functions is interwoven throughout the body of the decoder |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 and does not form a separable front-end. Most saliently, this Rx DTX and ECU |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 logic in the reference decoder does not operate on coded parameters as would be |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 needed for a TFO transform, instead it operates on linear values deeper in the |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 decoder after parameter dequantization. |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 Given that Abis is a de facto proprietary interface that is not interoperable |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 between different vendors (and the same holds for Ater in those BSS designs |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 that separate the TRAU from the BSC), and given how daunting it seems to |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 implement a true TFO transform for EFR, prior to getting our Nokia TCSM2 lab |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 setup I was wondering if historical TRAU vendors really did implement this |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 TFO transform, or if perhaps they used some kind of "cheating" trick on their |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 Abis similar to what we did in OsmoBTS in mid-2023. However, once I got our |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 Nokia TCSM2 gear working, set up a TFO connection between two active TRAU |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 channels in EFR mode and passed some test sequences through it, it became clear |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 that Nokia did implement a real "honest-to-god" TFO transform for EFR: the |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 TRAU-DL frame stream is 100% valid "speech" frames (no idle frames or other |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 aberrations inserted) even when the TRAU-UL stream fed via TFO contains BFI |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 speech frames and DTXu pauses - the TRAU really does apply bad frame handling |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 and comfort noise insertion on parameter level. |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 Seeing that at least one major historical vendor did implement TFO transform |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 for EFR, and seeing the output from that transform, has set up a sportive |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 challenge for me: I no longer have a valid excuse to not do it. I now have a |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 desire to produce a FOSS implementation of TFO transform for EFR in Themyscira |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 libraries (probably in libgsmefr), and make it no worse than Nokia's |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 implementation in TCSM2. |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 Bad frame handling in speech mode |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 ================================= |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 Looking at the DL speech frames that were synthesized by the TRAU in those |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 frame positions where the incoming UL stream via TFO had BFIs, we can make the |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 following observations: |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 * The 5 LPC parameters are different in each generated substitution/muting |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 frame, hence it looks like the TFO transform is running the quantization |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 algorithm for each output frame to produce LPC parameters that aim for the |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 substitution/muting LSFs of the official "example solution". |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 |
37
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
47 If the series of BFI inputs continues for a while, the emitted LPC parameters |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
48 settle into an oscillating pattern that alternates between two sets of |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
49 numbers. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
50 |
36
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 * LTP lag parameters remain constant for each run of BFIs between good speech |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 frames; the lag value encoded therein matches the LTP lag (integer part only) |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 from the 4th subframe of the last good speech frame, just like in the official |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 endpoint decoder. |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 * Surprising bit: the 4 LTP gain values from the last good speech frame are |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 endlessly regurgitated verbatim in each substitution/muting frame, without |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 any signs of the attenuation I expected to see based on the official "example |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 solution". |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 * Another surprising bit: the 35-bit fixed codebook sequence in each subframe |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 is taken from the corresponding subframe of the last good speech frame, |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 contrary to the official "example solution" that takes these bits from the |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 errored frames. |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 * The four fixed codebook gain parameters in the emitted substitution/muting |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 frames differ from one frame to the next in the case of multiple BFI frames |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 in a row, and they also differ between subframes in the same frame - hence |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 these parameters are clearly being regenerated as output progresses. However, |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 the quantization algorithm for this parameter is so complex that I haven't |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 been able to make a more intelligent analysis yet. |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 |
37
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
73 If the series of BFI inputs continues for a while, the emitted fixed codebook |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
74 gain parameters slowly go down and eventually become all zeros - although the |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
75 exact meaning is still unclear given the highly non-intuitive quantization |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
76 algorithm. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
77 |
36
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 Looking at the first good speech frame that follows each BFI substitution/muting |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 insert, we see that it is mostly unaltered: no alterations were seen to LPC or |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 LTP parameters, in particular. However, in the case of the fixed codebook gain |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 parameter we see a different behavioral pattern: most of the time it is also |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 unaltered, but sometimes we see reduction in this parameter, and even then it |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 is only in certain subframes. Are we perhaps seeing a capping of the fixed |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 codebook gain in the first good frame following BFI, similar to that implemented |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 in the reference endpoint decoder? A better understanding of the quantization |
d9553c7ac6ea
doc/TFO-xform/EFR: beginning of article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 mechanism for this parameter will be needed. |
37
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
87 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
88 CN insertion by TFO transform |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
89 ============================= |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
90 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
91 Looking at the DL speech frames that were synthesized by the TRAU in those |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
92 frame positions where the incoming UL stream via TFO had DTXu pauses (valid SID |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
93 frames followed by BFIs), we can make the following observations: |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
94 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
95 * The 5 LPC parameters appear to be generated anew on each output frame just |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
96 like in the substitution/muting case, and it likewise appears that the TFO |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
97 transform is running the regular LSF quantization algorithm taken from the |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
98 encoder. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
99 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
100 * The 4 LTP lag parameters are set to {135, 33, 135, 33} in each generated CN |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
101 frame, in agreement with how the official endpoint decoder sets the pitch |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
102 delay to constant value 40. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
103 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
104 * The 4 LTP gain parameters are all set to 0, also in agreement with CN |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
105 generation in the official endpoint decoder. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
106 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
107 * The 35-bit fixed codebook part of each subframe appears to be set to a |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
108 pseudorandom sequence, different in each emitted frame and subframe. My |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
109 analysis tells me it should be possible to construct fixed codebook sequences |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
110 in "speech" output frames that would produce the same excitation as the |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
111 official bit-exact CN - although the final PCM output probably won't match |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
112 the official bit-exact CN because of LSF and fixed codebook gain |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
113 requantization. However, we won't know whether or not the output from |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
114 Nokia's TFO transform matches our idea of official-CN-matching fixed codebook |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
115 excitation until we have our own implementation of this idea and compare |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
116 the two. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
117 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
118 * The four fixed codebook gain parameters in the emitted CN frames are once |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
119 again too difficult to understand for now - but they are definitely being |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
120 recomputed anew for each emitted CN frame and subframe. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
121 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
122 If CN muting kicks in on the second lost SID (BFI instead of SID received in |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
123 TAF position), we see the following additional behaviour: |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
124 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
125 * On the TAF-position frame that initiates CN muting, the emitted LPC parameters |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
126 break out of the alternating pattern they previously settled into. They go |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
127 through a few unique number sets, then settle into a two-state oscillating |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
128 pattern once again. Is the TFO transform perhaps making a switch from |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
129 last-SID LSF numbers to the static "mean" ones when it goes into CN muting? |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
130 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
131 * The emitted fixed codebook gain parameters start going down and eventually |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
132 become all zeros. |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
133 |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
134 Looking at the first good speech frame that follows each CN insertion period, |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
135 we see only two alterations made by the TFO transform: the 5 LPC parameters and |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
136 the first subframe fixed codebook gain parameter are modified, presumably to |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
137 compensate for the lack of quantizer state reset that happens when the end |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
138 decoder has seen a CN insert. No more speech parameter alterations are seen |
4ab7cc414ed2
doc/TFO-xform/EFR: document CN insertion
Mychaela Falconia <falcon@freecalypso.org>
parents:
36
diff
changeset
|
139 past the first subframe of the first frame following the DTXu pause. |