comparison doc/Codec-utils @ 459:b094bc07051a

doc/Codec-utils: document twamr-* addition
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 10 May 2024 19:50:29 +0000
parents a053cf0bac04
children 751f06541fbb
comparison
equal deleted inserted replaced
458:e26b974f7ba3 459:b094bc07051a
63 63
64 * There is a new utility named gsmfr-decode-rb, where rb stands for "raw basic". 64 * There is a new utility named gsmfr-decode-rb, where rb stands for "raw basic".
65 This utility emits "robe" output like gsmfr-decode-r, but it performs only 65 This utility emits "robe" output like gsmfr-decode-r, but it performs only
66 "basic" GSM 06.10 decoding, without the Rx DTX preprocessor step. BFI frame 66 "basic" GSM 06.10 decoding, without the Rx DTX preprocessor step. BFI frame
67 gaps in input are not allowed, and there is no SID detection. 67 gaps in input are not allowed, and there is no SID detection.
68
69 Standalone command line utilities for AMR codec
70 ===============================================
71
72 As described above, gsm[e]fr-encode and gsm[e]fr-decode were modeled after
73 amrnb-enc and amrnb-dec from opencore-amr, a piece of pre-existing FOSS.
74 However, now that we have libtwamr, a Themyscira library for AMR codec that is
75 designed to serve as a replacement for libopencore-amrnb in our workflows
76 involving AMR, we also have our own twamr-encode and twamr-decode utilities
77 that directly replace amrnb-enc and amrnb-dec.
78
79 twamr-encode is a functional replacement for amrnb-enc: it reads 16-bit linear
80 PCM speech input from a WAV file and writes the AMR encoder output in a .amr
81 file (RFC 4867 storage format). However, there is a difference in the command
82 line structure and a small difference in operation. The command line structure
83 of twamr-encode is as follows:
84
85 twamr-encode [-d] [-2] input.wav mode output.amr
86
87 The middle argument specifies the codec mode to be used; there is no default.
88 Ordinarily the mode argument is one of these 8 keywords:
89
90 MR475
91 MR515
92 MR59
93 MR67
94 MR74
95 MR795
96 MR102
97 MR122
98
99 However, this mode argument can also take the form of "file:$modefile", where
100 $modefile is an ASCII text file giving one of the above mode keywords per line.
101 This form is not likely to be useful in casual twamr-encode usage, but it exists
102 for the sake of symmetry with twamr-tseq-enc program used for verification
103 testing with the official test sequences from 3GPP.
104
105 Aside from this difference in the command line structure, the small functional
106 difference between amrnb-enc and twamr-encode is that libopencore-amrnb (the
107 engine underlying amrnb-enc) omits the codec homing feature, whereas libtwamr
108 (the engine underlying twamr-encode) implements the homing feature as a
109 mandatory part of the codec definition per 3GPP specs.
110
111 twamr-encode flag options: -d enables DTX, -2 switches the VAD algorithm from
112 VAD1 default to VAD2 alternative. The two options can be combined as -d2.
113
114 twamr-decode is a more straightforward replacement for amrnb-dec, with this
115 simple command line structure:
116
117 twamr-decode input.amr output.wav
118
119 The functional difference from amrnb-dec is once again in the codec homing
120 feature: present in libtwamr and hence twamr-decode, but absent in
121 libopencore-amrnb and hence amrnb-dec.
122
123 Finally, for the sake of completeness and symmetry with the other supported
124 codecs, the present suite includes twamr-encode-r and twamr-decode-r utilities.
125 They function just like twamr-encode and twamr-decode, with the same command
126 line structure, but the file format for 16-bit linear PCM speech is "robe"
127 instead of WAV.