| How to get started: |
| |
| Edit the Makefile. |
| |
| You should configure a few machine-dependencies and what |
| compiler you want to use. |
| |
| The code works both with ANSI and K&R-C. Use |
| -DNeedFunctionPrototypes to compile with, or |
| -UNeedFunctionPrototypes to compile without, function |
| prototypes in the header files. |
| |
| Make addtst |
| |
| The "add" program that will be compiled and run checks whether |
| the basic math functions of the gsm library work with your |
| compiler. If it prints anything to stderr, complain (to us). |
| |
| Edit inc/config.h. |
| |
| Make |
| |
| Local versions of the gsm library and the "compress"-like filters |
| toast, untoast and tcat will be generated. |
| |
| If the compilation aborts because of a missing function, |
| declaration, or header file, see if there's something in |
| inc/config.h to work around it. If not, complain. |
| |
| Try it |
| |
| Grab an audio file from somewhere (raw u-law or Sun .au is fine, |
| linear 16-bit in host byte order will do), copy it, toast it, |
| untoast it, and listen to the result. |
| |
| The GSM-encoded and -decoded audio should have the quality |
| of a good phone line. If the resulting audio is noisier than |
| your original, or if you hear compression artifacts, complain; |
| that's a bug in our software, not a bug in the GSM encoding |
| standard itself. |
| |
| Installation |
| |
| You can install the gsm library interface, or the toast binaries, |
| or both. |
| |
| Edit the Makefile |
| |
| Fill in the directories where you want to install the |
| library, header files, manual pages, and binaries. |
| |
| Turn off the installation of one half of the distribution |
| (i.e., gsm library or toast binaries) by not setting the |
| corresponding directory root Makefile macro. |
| |
| make install |
| |
| will install the programs "toast" with two links named |
| "tcat" and "untoast", and the gsm library "libgsm.a" with |
| a "gsm.h" header file, and their respective manual pages. |
| |
| |
| Optimizing |
| |
| This code was developed on a machine without an integer |
| multiplication instruction, where we obtained the fastest result by |
| replacing some of the integer multiplications with floating point |
| multiplications. |
| |
| If your machine does multiply integers fast enough, |
| leave USE_FLOAT_MUL undefined. The results should be the |
| same in both cases. |
| |
| On machines with fast floating point arithmetic, defining |
| both USE_FLOAT_MUL and FAST makes a run-time library |
| option available that will (in a few crucial places) use |
| ``native'' floating point operations rather than the bit-by-bit |
| defined ones of the GSM standard. If you use this fast |
| option, the outcome will not be bitwise identical to the |
| results prescribed by the standard, but it is compatible with |
| the standard encoding, and a user is unlikely to notice a |
| difference. |
| |
| |
| Bug Reports |
| |
| Please direct bug reports, questions, and comments to |
| jutta@cs.tu-berlin.de and cabo@informatik.uni-bremen.de. |
| |
| |
| Good luck, |
| |
| Jutta Degener, |
| Carsten Bormann |
| |
| -- |
| Copyright 1992, 1993, 1994, by Jutta Degener and Carsten Bormann, |
| Technische Universitaet Berlin. See the accompanying file "COPYRIGHT" |
| for details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. |