GSM-FR Codec¶
Introduction¶
Full Rate (GSM-FR) is the first digital speech coding standard used in the GSM digital mobile phone system. The bit rate of this codec is 13 kbit/s, or 1.625 bits/audio sample (often padded out to 33 bytes/20 ms or 13.2 kbit/s).
Source code¶
The source code is based on the original GSM-FR code (3GPP TS 06.10) created by Jutta Degener and Carsten Bormann, Technische Universitaet Berlin, and then updated to 18 path level. The Application of this codec is to get RPE-LTP from G722, commit eddb5a231b51, and G711, the same commit, for α-law and µ-law compression. Test sequences are taken from 3GPP TS 06.10 version 8.2.0 Release 99, June 2001, and this codec passes the test cases successfully.
Multi-instance and reentrance¶
Codec hasn’t tested on multi-instance run, for more information about support of
multi-instance run see codec source documentation. Codec supports reentrance
in case if the value of DSP_CTRL
register, AGU address pointer registers (AGU_AUX_APx
),
AGU offset registers (AGU_AUX_OSx
), AGU modifier registers (AGU_AUX_MODx
)
and accumulators registers (ACC0_LO
, ACC0_HI
, ACC0_GLO
and ACC0_GHI
in case of guard mode is on), see [1] in References, will be saved and restored.
Codec-Specific Build Options¶
LTO_BUILD
and REMAPITU_T
options are enabled for this codec by default.
Codec-Specific Run-Time Options¶
To run GSM-FR codec in MetaWare Debugger (See [2] in References) use the following commands:
For GSM-FR codec:
mdb -cl -run -nsim -tcf=<default TCF from /rules/common_hw_config.mk> ARC_FR_CODEC_app.elf <number of frames> [-l|-u|-A] [-enc|-dec] <input_file.inp> <output_file.cod> <BlockSize> <1stBlock> <NoOfBlocks>
The following table lists the parameters for this codec:
Option | Description |
---|---|
<input_file.inp> |
Specifies the input *.inp file |
<output_file.cod> |
Specifies the output *.cod file |
-l |
Input data for encoding and output data for decoding are in linear format (DEFAULT) |
-A |
Input data for encoding and output data for decoding are in α-law (G.711) format |
-u |
Input data for encoding and output data for decoding are in µ-law (G.711) format |
<BlockSize> |
Block size, in number of samples (default = 160) (optional) |
<1stBlock> |
Number of the first block of the input file to be processed (optional) |
<NoOfBlocks> |
Number of blocks to be processed, starting with block <1stBlock> |
<number of frames> |
Number of frames to be processed (optional) |
-enc |
Run only the encoder |
Option | Description |
---|---|
<input_file.cod> |
Specifies the input *.cod file |
<output_file.out> |
Specifies the output *.out file |
-l |
Input data for encoding and output data for decoding are in linear format (DEFAULT) |
-A |
Input data for encoding and output data for decoding are in α-law (G.711) format |
-u |
Input data for encoding and output data for decoding are in µ-law (G.711) format |
<BlockSize> |
Block size, in number of samples (default = 160) (optional) |
<1stBlock> |
Number of the first block of the input file to be processed (optional) |
<NoOfBlocks> |
Number of blocks to be processed, starting with block <1stBlock> |
<number of frames> |
Number of frames to be processed (optional) |
-dec |
Run only the decoder |
Examples
The following command encodes the linear Seq01.inp stream:
mdb -cl -run -nsim -tcf=em9d_voice_audio ARC_FR_CODEC_app.elf -l -enc ../testvectors/ref/Seq01.inp ../testvectors/Seq01.cod
The following command decodes the linear Seq01.cod stream without any additional options:
mdb -cl -run -nsim -tcf=em9d_voice_audio ARC_FR_CODEC_app.elf -l -dec ../testvectors/ref/Seq01.cod ../testvectors/Seq01.out