FreeCalypso > hg > gsm-codec-lib
view doc/Utils-overview @ 242:f081a6850fb5
libgsmfrp: new refined implementation
The previous implementation exhibited the following defects,
which are now fixed:
1) The last received valid SID was cached forever for the purpose of
handling future invalid SIDs - we could have received some valid
SID ages ago, then lots of speech or NO_DATA, and if we then get
an invalid SID, we would resurrect the last valid SID from ancient
history - a bad design. In our new design, we handle invalid SID
based on the current state, much like BFI.
2) GSM 06.11 spec says clearly that after the second lost SID
(received BFI=1 && TAF=1 in CN state) we need to gradually decrease
the output level, rather than jump directly to emitting silence
frames - we previously failed to implement such logic.
3) Per GSM 06.12 section 5.2, Xmaxc should be the same in all 4 subframes
in a SID frame. What should we do if we receive an otherwise valid
SID frame with different Xmaxc? Our previous approach would
replicate this Xmaxc oddity in every subsequent generated CN frame,
which is rather bad. In our new design, the very first CN frame
(which can be seen as a transformation of the SID frame itself)
retains the original 4 distinct Xmaxc, but all subsequent CN frames
are based on the Xmaxc from the last subframe of the most recent SID.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 09 May 2023 05:16:31 +0000 |
parents | 3aeb33d835ad |
children | a55fcc8b6daf |
line wrap: on
line source
Here is the complete list of all command line utilities included in the present package: amr-cod-parse See AMR-study-utils article. amr-ietf-parse amr-cod2ietf amr-ietf2cod gsm-amr2efr See AMR-EFR-conversion article. gsm-efr2amr gsmefr-cod-parse See EFR-testing article. gsmefr-dec-parse gsmefr-cod2gsmx This program reads an EFR codec frame stream in ETSI *.cod format and converts it to Themyscira gsmx format. gsmefr-decode See Codec-utils article. gsmefr-decode-r gsmefr-encode gsmefr-encode-r gsmefr-dlcap-dec See Calypso-TCH-downlink article. gsmefr-dlcap-gsmx gsmefr-dlcap-parse gsmefr-etsi-dec See EFR-testing article. gsmefr-etsi-enc gsmefr-rec2etsi This program reads an EFR session recording in gsmx format and converts it into ETSI decoder input (.dec) format. It was written early in the project as a sanity check, to verify that the format of TCH uplink from sysmoBTS in EFR mode matches our expectations, before embarking on the labor-intensive project to librify EFR reference code from ETSI. gsmfr-decode See Codec-utils article. gsmfr-decode-r gsmfr-encode gsmfr-encode-r gsmfr-dlcap-gsmx See Calypso-TCH-downlink article. gsmfr-dlcap-parse gsmfr-hand-test This program was written as part of a debug chase: there seemed to be a design flaw in libgsmfrp, but the actual bug turned out to be in the way we patched osmo-bts-sysmo to produce a continuous RTP stream. gsmfr-max-out Another test program written as part of the same debug chase. gsmfr-preproc This program reads a gsmx file in FR codec format, passes it through our Rx DTX preprocessor (libgsmfrp), and writes the preprocessor output to another .gsm file. gsmrec-dump See Binary-file-format article. pcm16-check13 This program reads a 16-bit linear PCM recording file (raw BE by default, or raw LE with -l option) and checks if the 3 least significant bits of every sample are all zeros. All linear PCM samples consumed or generated by GSM codecs are only 13 bits wide, left-justified in 16-bit words, and so is output from G.711 A-law decoding - thus it is useful to be able to check if a given file in 16-bit PCM format is purely 13-bit or not. pcm16-raw2wav See PCM-file-formats article. pcm16-wav2raw pcm16-to-alaw See PCM8-conversions article. pcm16-to-ulaw pcm8-to-pcm16