annotate doc/TFO-xform/HRv1 @ 72:afebef67e8d4 default tip

tmo/CSD-tests: document Experiment 7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 28 Nov 2024 02:53:59 +0000
parents 0979407719f0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 HRv1: relation between regular end decoder and TFO transform
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 ============================================================
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 The reference decoder source published by ETSI in GSM 06.06 exhibits an almost
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 modular design: the Rx DTX handler front-end is almost a separable piece.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 Breaking it down more precisely, we can make these observations:
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 0) Most aspects of bad frame handling and comfort noise generation are done by
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 generating new coded speech parameters, such that the output of those
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 algorithms can be packaged into new HRv1 codec frames to be sent to a distant
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 decoder. There are only two exceptions to this modularity:
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 1) Handling of unreliable speech frames (BFI=0 UFI=1 in speech rather than CN
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 state) has a modular and a non-modular aspect:
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 1a) Modular aspect: if R0 increment from the last good frame to the
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 unreliable frames exceeds a certain threshold, UFI is turned into BFI,
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 which is then handled in a fully modular fashion.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 1b) Non-modular aspect: if the R0 increment does not meet the threshold for
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 turning UFI into BFI but meets another slightly lower threshold, a flag
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 is set that is passed into the guts of the speech decoder. That flag
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 effects speech muting on the decoder output level.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 2) GSM 06.22 section 6.2 (Comfort noise generation and updating) says in the
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 very last sentence:
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 "When updating the comfort noise parameters (frame energy and LPC
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 coefficients), these parameters shall be interpolated over the SID update
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 period to obtain smooth transitions."
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 Note the change in language: the corresponding spec for FRv1 says "should
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 preferably", but the HRv1 spec says "shall". Furthermore, the bit-exact
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 implementation in the reference C code is considered normative in this
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 aspect, and is exercised by the test sequences of GSM 06.07.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 This CN interpolation aspect is non-modular: R0 and the set of LPC
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 coefficients are decoded from bit parameters into linear form when CN frames
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 (initial and updates) are received, interpolation is done on this linear
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 form, and the interpolated values are passed to the main body of the speech
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 decoder.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 Based on these observations, we can conclude that if we wish to detach this
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 reference Rx DTX handler for HRv1 from the reference decoder and make it into
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 an implementation of TFO transform for this codec, we have to solve two
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 problems:
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 1) Decide how to handle those UFI frames that aren't being turned into BFI;
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 2) Decide how to handle R0 and LPC parameters during CN insertion.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 Nokia TCSM2 TRAU implementation
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 ===============================
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 Now that we have a working historical bank-of-TRAUs apparatus in our lab, let's
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 take a look at how this vendor (Nokia) implemented the TFO transform for HRv1
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 in their TRAU. Here are our findings:
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 * Handling of BFI=1 frames in speech state (not in DTX) exhibits a
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 simplification relative to GSM 06.06 reference code. The reference code
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 checks to see if the last saved frame and the received errored frame have the
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 same voiced vs unvoiced mode: if this mode matches, codevector parameters are
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 taken from the errored frame, otherwise the last saved frame is regurgitated
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 without taking any bits from the errored frame. Nokia's TFO transform always
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 does the latter (no bits are taken from the errored frame) irrespective of
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 voiced vs unvoiced mode matching or not.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 * Aside from this just-described simplification, all other aspects of BFI=1
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 handling for speech frames appear to match the reference code.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 * UFI handling appears to have been taken out altogether, even the part that
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 "upgrades" UFI to BFI when R0 increment is huge appears to have been omitted.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 I fed a test sequence from TFO side that has a good speech frame with R0=2
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 followed by a UFI frame with R0=31, and the TRAU happily passed the latter
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 frame (now treated as perfectly good) to the DL output.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 * Comfort noise generation (DTXd=0) is done exactly as the reference code would
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 do it, except that neither R0 nor LPC parameters are interpolated. During
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 each CN output interval between SID updates, R0 and LPC parameters in every
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 emitted CN frame are exactly equal to those received in the most recent SID
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 frame, as simple as that. When a new SID update comes in, the change in
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 emitted R0 and LPC is abrupt.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 * The lost SID criterion for CN muting appears to be slightly different between
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 Nokia's TFO implementation and my reading of the spec and the reference C
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 code. My interpretation of GSM 06.22 spec sections 5.2.3 and 5.2.4 is that
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 unlike FR and EFR, in the case of HR codec the second lost SID (second
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 occurrence of BFI instead of SID update in TAF position) does _not_ trigger
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 CN muting; instead this muting is supposed to kick in on the _third_ lost SID
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 occurrence. (The difference in the spec was likely motivated by TAF positions
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 occurring every 240 ms with HR instead of every 480 ms with FR & EFR.) My
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 reading of the reference C code agrees with my reading of the spec - yet
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 Nokia's TFO implementation initiates CN muting in the frame following the
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 second lost SID, not third.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 * Aside from the criterion for its initiation, the actual CN muting logic
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 behaves exactly like the reference C code: R0 is decremented by 2 on each
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 output frame following the TAF that initiates this sequence, and once R0
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 reaches 0, it stays there while this zero-magnitude CN output continues
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 indefinitely.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 * With DTXd=1 CN output is replaced with repeated retransmission of the same
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 SID whose parameters would have been used for non-interpolated CN with DTXd=0,
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 which also agrees with the rules of GSM 08.62 section 8.2.2 paragraph 2.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 * CN muting with DTXd=1 is implemented poorly. The TRAU emits SID frames with
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 R0 decrementing by 2 on each frame just like how it does for generated CN
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 output that's in the process of being slowly muted, but this design is a poor
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 choice: because the BTS will only transmit one of every 12 SID update frames
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 and the TRAU has no way of knowing which SID will be transmitted, slow
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 decrement cadence on SID frames themselves (not on CN output) makes no sense.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 Thoughts for Themyscira implementation
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 ======================================
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 Prior to getting Nokia TCSM2 working in our lab and being able to experiment
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 with this TRAU, when I was contemplating the idea of potentially implementing
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 TFO transform for HRv1 in Themyscira libraries, my main trepidation was how to
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 produce comfort noise in the form of "speech" parameter output. For endpoint
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 decoders GSM 06.22 prescribes a bit-exact algorithm with interpolation, but
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 that smoothly interpolated CN cannot be readily expressed in terms of parameter
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 bits that can be packed into a new HRv1 codec frame. I thought about
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 requantizing the interpolated LPC reflection coefficients on every CN output
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 frame, using the same computationally intensive vector quantization algorithm
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 as in speech encoding - but because I am not an expert in codec design, it is
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 not obvious to me whether or not such approach would produce good results.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 However, seeing that Nokia got away with simply passing R0 and LPC parameters
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 along from incoming SID frames to CN output without any interpolation or other
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 transformation gives us a huge confidence boost - if Nokia did it, so can we!
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 This approach is of course simple, and yields itself readily to elegant
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 implementation.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 Seeing that Nokia got away with effectively discarding UFI in their TFO
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 transform is also a confidence boost - once again if Nokia did it, so can we.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 I plan on keeping the logic that "upgrades" UFI to BFI under certain conditions
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 (not sure why Nokia omitted it), but the effect of potentially muting speech in
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 the guts of the decoder (past parameter-level manipulation) is not really
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 feasible to implement in a TFO transform.
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 Finally, regarding the logic that takes codevector parameters from errored
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 (BFI) frames when the voicing mode matches between the last saved frame and the
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 errored frame, the logic that exists in the reference C code but not in Nokia's
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 TFO transform: I plan on keeping this logic in our version, but Nokia's approach
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 will come in handy for handling BFI-no-data frames, a condition that does not
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 exist in TDM-based Abis transport or in TFO, but does unfortunately exist in
0979407719f0 doc/TFO-xform/HRv1: article written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 IP-based GSM RAN.