diff doc/FR1-Rx-DTX @ 250:731c98b67da1

doc/FR1-Rx-DTX: document changes from 1.0.1 to 1.0.2
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 12 May 2023 04:49:09 +0000
parents fcc0887ff0d0
children 4034c2b06ec8
line wrap: on
line diff
--- a/doc/FR1-Rx-DTX	Fri May 12 03:49:51 2023 +0000
+++ b/doc/FR1-Rx-DTX	Fri May 12 04:49:09 2023 +0000
@@ -159,6 +159,35 @@
 Themyscira libgsmfrp implements the correct silence frame per the spec, and that
 datum is also made public.
 
+libgsmfrp change history: version 1.0.1 to version 1.0.2
+========================================================
+
+There are only two changes, both involving corner cases with invalid SID frames
+being received:
+
+1) An invalid SID frame was received immediately following a good speech frame.
+   In this case we start CN generation, but we take the needed LARc and Xmaxc
+   parameters from the last speech frame, instead of the usual procedure of
+   extracting them from a valid SID frame.  The change from 1.0.1 to 1.0.2
+   concerns the Xmaxc parameter in this corner case: in 1.0.1 we took Xmaxc
+   from the last subframe and used it for ensuing CN generation, but in 1.0.2
+   we compute a more proper mean Xmaxc from all 4 subframes, by dequantizing,
+   summing and requantizing.
+
+2) An invalid SID frame was received in the speech muting state.  The sequence
+   of inputs would have to be:
+
+   - a good speech frame;
+   - one or more BFIs, but not too many, so that the cached speech frame
+     does not decay fully by Xmaxc reduction;
+   - an invalid SID frame.
+
+   In version 1.0.1 we handled this even more obscure corner case by entering
+   the CN muting state, i.e., the state that is normally entered upon the
+   second lost SID.  In version 1.0.2 we ignore invalid SID in the speech
+   muting state and act as if we got BFI, i.e., continue speech muting rather
+   than switch to CN muting.
+
 libgsmfrp change history: version 1.0.0 to version 1.0.1
 ========================================================