Included in this distribution is the lpc.c module, a header file for the
routines in it called lpc.h, and a small test program which illustrates a
typical set of calls to it called lpctest.c.

To compile lpctest.c, you need to link it with lpc.o and the math library.
It will take sound samples from stdin, compress & decompress them with LPC,
and output the resulting samples to stdout.

The subroutines in lpc.c are as follows:

The lpc_init routine specifies the length of a single frame to be processed by
the other LPC subroutines. This number is expressed in samples, and lpc_init
should be called before anything else. It also resets all other state kept
between frames, and can be called again when there's a break in what it being
encoded or decoded (such as between talk spurts):

int  lpc_init(int framelen);


The lpc_analyze routine is used to convert a group of samples into an LPC
frame. State is kept between calls to smooth out transitions between frames, so
this routine should be called with frames in order:

void lpc_analyze(unsigned char *buf, lpcparams_t *params);


The lpc_synthesize routine is used to convert an LPC frame back into a group of
samples. Also, a speed parameter may be specified to speed up or slow down the
speech (without altering the pitch). The length of the buffer returned depends
on the speed. If speed==1.0, it will be the same as the length passed to the
lpc_init call. If speed==2.0, it will be half that. The call to lpc_synthesize
returns this length. Note that the speed parameter is a float -- passing an
integer will cause unpredictable results:

int  lpc_synthesize(lpcparams_t *params, float speed, unsigned char *buf);
