FreeCalypso > hg > gsm-codec-lib
changeset 553:ebcf414b7d99
doc/TFO-transform: describe details for FRv1, both modes
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 07 Oct 2024 08:24:24 +0000 |
parents | 6ab066180ec2 |
children | b66fb6be73c3 |
files | doc/TFO-transform |
diffstat | 1 files changed, 59 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/TFO-transform Mon Oct 07 00:25:50 2024 +0000 +++ b/doc/TFO-transform Mon Oct 07 08:24:24 2024 +0000 @@ -36,3 +36,62 @@ output is always emitted in the basic format, pure GSM-FR codec frames only. -d option enables DTXd, which is disabled by default. + +Details of FRv1 TFO transform with DTXd=0 +----------------------------------------- + +Our implementation of TFO transform in DTXd=0 configuration is mostly identical +with the Rx DTX handler preprocessor stage of regular speech decoding; the +details are covered in FR1-Rx-DTX-detail article. + +ThemWi implementation of TFO transform includes the feature of in-band homing: +if the input to the transform is the spec-defined decoder homing frame (DHF), +this DHF is passed through to the output just like any other good speech frame, +but the internal state is reset to the initial "home" state. + +Details of FRv1 TFO transform with DTXd=1 +----------------------------------------- + +We implement the DTXd=1 version of TFO transform as a post-processor stage +after executing the "regular" logic for DTXd=0 case; more precisely, our +"regular" Rx DTX handler code sets some flags that are only used by the TFO +DTXd=1 post-processor, and the latter element acts on one of those flags. + +The resulting visible behaviour of our TFO transform is as follows: + +* Whenever a valid SID frame comes in, it is re-emitted on the output in the + same frame position with the same parameters, even if it has different Xmaxc + in different subframes. However, it is "rejuvenated" in that any possible + single bit error in the SID codeword is corrected, and all unused bits are + also cleared. This behaviour agrees with GSM 08.62 section 8.2.2. + +* Also in agreement with GSM 08.62 section 8.2.2, any unusable frames or invalid + SID frames that come in after that valid SID (but before that cached SID + expires by way of two lost SID events, or a good speech frame ends the DTX + pause) are replaced with output that repeats the last processed valid SID. + This output consists of repeated SID frames just like the original, but with + all 4 Xmaxc parameters set to the one from the last subframe. + +* If an invalid SID frame is received directly after good speech, indicating a + need to start comfort noise insertion but lacking usable parameters for it, + the output from the TFO transform is just like that described in + FR1-Rx-DTX-detail article, but in the form of SID frames rather than "speech" + frames that represent CN. + +* If two consecutive lost SID events occur and the Rx DTX handler has to enter + CN muting state, our TFO transform breaks out of DTX and emits the CN muting + sequence as "speech" frames rather than altered SID. This tactic is done in + order to produce immediate effect on the receiving end. Once the muting fully + decays, the transform emits 4 silence frames of GSM 06.11 Table 1, then + switches to endlessly emitting SIDs derived from this silence frame (same + LARc, Xmaxc=0). + +* Any other time the Rx DTX handler is in NO_DATA state (initial reset state or + fully decayed state after speech muting), the TFO transform in DTXd=1 mode + emits SIDs derived from the silence frame instead of actual silence frames. + +Emission of transform-synthesized SIDs frames during muting states is done in +order to help achieve the presumed network operator's goal of DTX maximization +and radio interference reduction. However, if the input to the transform is +all good speech frames without DTX pauses, the transform does not attempt to +apply VAD and make its own DTXd.