blob: 5850304f8bd4085a8b25e5f7a478ea229fee20fe [file] [log] [blame]
Elliott Hughes28a3c4a2017-06-21 11:13:28 -07001How to get started:
2
3 Edit the Makefile.
4
5 You should configure a few machine-dependencies and what
6 compiler you want to use.
7
8 The code works both with ANSI and K&R-C. Use
9 -DNeedFunctionPrototypes to compile with, or
10 -UNeedFunctionPrototypes to compile without, function
11 prototypes in the header files.
12
13 Make addtst
14
15 The "add" program that will be compiled and run checks whether
16 the basic math functions of the gsm library work with your
17 compiler. If it prints anything to stderr, complain (to us).
18
19 Edit inc/config.h.
20
21 Make
22
23 Local versions of the gsm library and the "compress"-like filters
24 toast, untoast and tcat will be generated.
25
26 If the compilation aborts because of a missing function,
27 declaration, or header file, see if there's something in
28 inc/config.h to work around it. If not, complain.
29
30 Try it
31
32 Grab an audio file from somewhere (raw u-law or Sun .au is fine,
33 linear 16-bit in host byte order will do), copy it, toast it,
34 untoast it, and listen to the result.
35
36 The GSM-encoded and -decoded audio should have the quality
37 of a good phone line. If the resulting audio is noisier than
38 your original, or if you hear compression artifacts, complain;
39 that's a bug in our software, not a bug in the GSM encoding
40 standard itself.
41
42Installation
43
44 You can install the gsm library interface, or the toast binaries,
45 or both.
46
47 Edit the Makefile
48
49 Fill in the directories where you want to install the
50 library, header files, manual pages, and binaries.
51
52 Turn off the installation of one half of the distribution
53 (i.e., gsm library or toast binaries) by not setting the
54 corresponding directory root Makefile macro.
55
56 make install
57
58 will install the programs "toast" with two links named
59 "tcat" and "untoast", and the gsm library "libgsm.a" with
60 a "gsm.h" header file, and their respective manual pages.
61
62
63Optimizing
64
65 This code was developed on a machine without an integer
66 multiplication instruction, where we obtained the fastest result by
67 replacing some of the integer multiplications with floating point
68 multiplications.
69
70 If your machine does multiply integers fast enough,
71 leave USE_FLOAT_MUL undefined. The results should be the
72 same in both cases.
73
74 On machines with fast floating point arithmetic, defining
75 both USE_FLOAT_MUL and FAST makes a run-time library
76 option available that will (in a few crucial places) use
77 ``native'' floating point operations rather than the bit-by-bit
78 defined ones of the GSM standard. If you use this fast
79 option, the outcome will not be bitwise identical to the
80 results prescribed by the standard, but it is compatible with
81 the standard encoding, and a user is unlikely to notice a
82 difference.
83
84
85Bug Reports
86
87 Please direct bug reports, questions, and comments to
88 jutta@cs.tu-berlin.de and cabo@informatik.uni-bremen.de.
89
90
91Good luck,
92
93 Jutta Degener,
94 Carsten Bormann
95
96--
97Copyright 1992, 1993, 1994, by Jutta Degener and Carsten Bormann,
98Technische Universitaet Berlin. See the accompanying file "COPYRIGHT"
99for details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.