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