/*
 * LPC subroutine declarations
 */
#define LPC_FILTORDER		10

typedef struct {
	unsigned short period;
	unsigned char gain;
	char k[LPC_FILTORDER];
	char pad;
} lpcparams_t;

/*
 * we can't use 'sizeof(lpcparams_t)' because some compilers
 * add random padding so define size of record that goes over net.
 */
#define LPCRECSIZE 14

typedef struct {
	double Oldper, OldG, Oldk[LPC_FILTORDER + 1], bp[LPC_FILTORDER + 1];
	int pitchctr;
} lpcstate_t;

void lpc_init(lpcstate_t* state);
void lpc_analyze(const unsigned char *buf, lpcparams_t *params);
void lpc_synthesize(unsigned char *buf, lpcparams_t *params, lpcstate_t* state);
