FreeCalypso > hg > gsm-codec-lib
comparison doc/FR1-Rx-DTX @ 244:fcc0887ff0d0
doc/FR1-Rx-DTX: document changes from 1.0.0 to 1.0.1
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 09 May 2023 17:28:19 +0000 |
parents | aa4cdab30dc8 |
children | 731c98b67da1 |
comparison
equal
deleted
inserted
replaced
243:5176f470489d | 244:fcc0887ff0d0 |
---|---|
156 Many implementors make the mistake of thinking that a GSM FR silence frame is a | 156 Many implementors make the mistake of thinking that a GSM FR silence frame is a |
157 frame of 260 zero bits, but the official specs disagree: the silence frame given | 157 frame of 260 zero bits, but the official specs disagree: the silence frame given |
158 in GSM 06.11 (3GPP TS 46.011, at the very end of the spec) is quite different. | 158 in GSM 06.11 (3GPP TS 46.011, at the very end of the spec) is quite different. |
159 Themyscira libgsmfrp implements the correct silence frame per the spec, and that | 159 Themyscira libgsmfrp implements the correct silence frame per the spec, and that |
160 datum is also made public. | 160 datum is also made public. |
161 | |
162 libgsmfrp change history: version 1.0.0 to version 1.0.1 | |
163 ======================================================== | |
164 | |
165 Version 1.0.0 exhibited the following defects, which are fixed in 1.0.1: | |
166 | |
167 1) The last received valid SID was cached forever for the purpose of | |
168 handling future invalid SIDs - we could have received some valid | |
169 SID ages ago, then lots of speech or NO_DATA, and if we then get | |
170 an invalid SID, we would resurrect the last valid SID from ancient | |
171 history - a bad design. In our new design, we handle invalid SID | |
172 based on the current state, much like BFI. | |
173 | |
174 2) GSM 06.11 spec says clearly that after the second lost SID | |
175 (received BFI=1 && TAF=1 in CN state) we need to gradually decrease | |
176 the output level, rather than jump directly to emitting silence | |
177 frames - we previously failed to implement such logic. | |
178 | |
179 3) Per GSM 06.12 section 5.2, Xmaxc should be the same in all 4 subframes | |
180 in a SID frame. What should we do if we receive an otherwise valid | |
181 SID frame with different Xmaxc? Our previous approach would | |
182 replicate this Xmaxc oddity in every subsequent generated CN frame, | |
183 which is rather bad. In our new design, the very first CN frame | |
184 (which can be seen as a transformation of the SID frame itself) | |
185 retains the original 4 distinct Xmaxc, but all subsequent CN frames | |
186 are based on the Xmaxc from the last subframe of the most recent SID. |