mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 05:15:22 +00:00 
			
		
		
		
	Correct typos of the following word families: voiced denumerator codeword upsampling constructed residual subroutine conditional quantizing courtesy number ASTERISK-29714 Change-Id: I471fb8086a5277d8f05047fedee22cfa97a4252d
		
			
				
	
	
		
			257 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			257 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 | 
						|
$Log$
 | 
						|
Revision 1.18  2004/08/31 13:32:11  markster
 | 
						|
Merge NetBSD and Courtesy tone with modifications (bug #2329)
 | 
						|
 | 
						|
Revision 1.17  2003/10/26 18:50:49  markster
 | 
						|
Make it build and run on MacOS X
 | 
						|
 | 
						|
Revision 1.3  2003/10/26 18:50:49  markster
 | 
						|
Make it build and run on MacOS X
 | 
						|
 | 
						|
Revision 1.2  2003/04/23 19:13:35  markster
 | 
						|
More OpenBSD patches
 | 
						|
 | 
						|
Revision 1.1.1.2  2003/03/16 22:37:30  matteo
 | 
						|
dom mar 16 23:37:23 CET 2003
 | 
						|
 | 
						|
Revision 1.2  2003/03/16 16:09:48  markster
 | 
						|
Mere James's cleanups for fewer build warnings
 | 
						|
 | 
						|
Revision 1.1  2000/01/05 00:20:06  markster
 | 
						|
Add broken lpc10 code...  It's not too far from working I don't think...
 | 
						|
 | 
						|
 * Revision 1.1  1996/08/19  22:47:31  jaf
 | 
						|
 * Initial revision
 | 
						|
 *
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef __LPC10_H__
 | 
						|
#define __LPC10_H__
 | 
						|
 | 
						|
#define P_R_O_T_O_T_Y_P_E_S
 | 
						|
 | 
						|
#define LPC10_SAMPLES_PER_FRAME 180
 | 
						|
#define LPC10_BITS_IN_COMPRESSED_FRAME 54
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
 | 
						|
  The "#if defined"'s in this file are by no means intended to be
 | 
						|
  complete.  They are what Nautilus uses, which has been successfully
 | 
						|
  compiled under DOS with the Microsoft C compiler, and under a few
 | 
						|
  versions of Unix with the GNU C compiler.
 | 
						|
 | 
						|
 */
 | 
						|
 | 
						|
#if defined(unix) || defined(__unix__) || defined(__NetBSD__)
 | 
						|
typedef short		INT16;
 | 
						|
typedef int			INT32;
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#if defined(__MSDOS__) || defined(MSDOS)
 | 
						|
typedef int			INT16;
 | 
						|
typedef long		INT32;
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined(__APPLE__)
 | 
						|
typedef short		INT16;
 | 
						|
typedef int			INT32;
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined(WIN32) && defined(_MSC_VER)
 | 
						|
typedef __int16		INT16;
 | 
						|
typedef __int32		INT32;
 | 
						|
#pragma warning(disable: 4005)
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
/* The initial values for every member of this structure is 0, except
 | 
						|
   where noted in comments. */
 | 
						|
 | 
						|
/* These two lines are copied from f2c.h.  There should be a more
 | 
						|
   elegant way of doing this than having the same declarations in two
 | 
						|
   files. */
 | 
						|
 | 
						|
typedef float real;
 | 
						|
typedef INT32 integer;
 | 
						|
typedef INT32 logical;
 | 
						|
typedef INT16 shortint;
 | 
						|
 | 
						|
struct lpc10_encoder_state {
 | 
						|
    /* State used only by function hp100 */
 | 
						|
    real z11;
 | 
						|
    real z21;
 | 
						|
    real z12;
 | 
						|
    real z22;
 | 
						|
 | 
						|
    /* State used by function analys */
 | 
						|
    real inbuf[540], pebuf[540];
 | 
						|
    real lpbuf[696], ivbuf[312];
 | 
						|
    real bias;
 | 
						|
    integer osbuf[10];  /* no initial value necessary */
 | 
						|
    integer osptr;     /* initial value 1 */
 | 
						|
    integer obound[3];
 | 
						|
    integer vwin[6]	/* was [2][3] */;   /* initial value vwin[4] = 307; vwin[5] = 462; */
 | 
						|
    integer awin[6]	/* was [2][3] */;   /* initial value awin[4] = 307; awin[5] = 462; */
 | 
						|
    integer voibuf[8]	/* was [2][4] */;
 | 
						|
    real rmsbuf[3];
 | 
						|
    real rcbuf[30]	/* was [10][3] */;
 | 
						|
    real zpre;
 | 
						|
 | 
						|
 | 
						|
    /* State used by function onset */
 | 
						|
    real n;
 | 
						|
    real d__;   /* initial value 1.f */
 | 
						|
    real fpc;   /* no initial value necessary */
 | 
						|
    real l2buf[16];
 | 
						|
    real l2sum1;
 | 
						|
    integer l2ptr1;   /* initial value 1 */
 | 
						|
    integer l2ptr2;   /* initial value 9 */
 | 
						|
    integer lasti;    /* no initial value necessary */
 | 
						|
    logical hyst;   /* initial value FALSE_ */
 | 
						|
 | 
						|
    /* State used by function voicin */
 | 
						|
    real dither;   /* initial value 20.f */
 | 
						|
    real snr;
 | 
						|
    real maxmin;
 | 
						|
    real voice[6]	/* was [2][3] */;   /* initial value is probably unnecessary */
 | 
						|
    integer lbve, lbue, fbve, fbue;
 | 
						|
    integer ofbue, sfbue;
 | 
						|
    integer olbue, slbue;
 | 
						|
    /* Initial values:
 | 
						|
	lbve = 3000;
 | 
						|
	fbve = 3000;
 | 
						|
	fbue = 187;
 | 
						|
	ofbue = 187;
 | 
						|
	sfbue = 187;
 | 
						|
	lbue = 93;
 | 
						|
	olbue = 93;
 | 
						|
	slbue = 93;
 | 
						|
	snr = (real) (fbve / fbue << 6);
 | 
						|
	*/
 | 
						|
 | 
						|
    /* State used by function dyptrk */
 | 
						|
    real s[60];
 | 
						|
    integer p[120]	/* was [60][2] */;
 | 
						|
    integer ipoint;
 | 
						|
    real alphax;
 | 
						|
 | 
						|
    /* State used by function chanwr */
 | 
						|
    integer isync;
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
struct lpc10_decoder_state {
 | 
						|
 | 
						|
    /* State used by function decode */
 | 
						|
    integer iptold;   /* initial value 60 */
 | 
						|
    logical first;   /* initial value TRUE_ */
 | 
						|
    integer ivp2h;
 | 
						|
    integer iovoic;
 | 
						|
    integer iavgp;   /* initial value 60 */
 | 
						|
    integer erate;
 | 
						|
    integer drc[30]	/* was [3][10] */;
 | 
						|
    integer dpit[3];
 | 
						|
    integer drms[3];
 | 
						|
 | 
						|
    /* State used by function synths */
 | 
						|
    real buf[360];
 | 
						|
    integer buflen;   /* initial value 180 */
 | 
						|
 | 
						|
    /* State used by function pitsyn */
 | 
						|
    integer ivoico;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */
 | 
						|
    integer ipito;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */
 | 
						|
    real rmso;   /* initial value 1.f */
 | 
						|
    real rco[10];   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */
 | 
						|
    integer jsamp;   /* no initial value necessary as long as first_pitsyn is initially TRUE_ */
 | 
						|
    logical first_pitsyn;   /* initial value TRUE_ */
 | 
						|
 | 
						|
    /* State used by function bsynz */
 | 
						|
    integer ipo;
 | 
						|
    real exc[166];
 | 
						|
    real exc2[166];
 | 
						|
    real lpi1;
 | 
						|
    real lpi2;
 | 
						|
    real lpi3;
 | 
						|
    real hpi1;
 | 
						|
    real hpi2;
 | 
						|
    real hpi3;
 | 
						|
    real rmso_bsynz;
 | 
						|
 | 
						|
    /* State used by function random */
 | 
						|
    integer j;   /* initial value 2 */
 | 
						|
    integer k;   /* initial value 5 */
 | 
						|
    shortint y[5];  /* initial value { -21161,-8478,30892,-10216,16950 } */
 | 
						|
 | 
						|
    /* State used by function deemp */
 | 
						|
    real dei1;
 | 
						|
    real dei2;
 | 
						|
    real deo1;
 | 
						|
    real deo2;
 | 
						|
    real deo3;
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
 | 
						|
  Calling sequence:
 | 
						|
 | 
						|
  Call create_lpc10_encoder_state(), which returns a pointer to an
 | 
						|
  already initialized lpc10_encoder_state structure.
 | 
						|
 | 
						|
  lpc10_encode reads indices 0 through (LPC10_SAMPLES_PER_FRAME-1) of
 | 
						|
  array speech[], and writes indices 0 through
 | 
						|
  (LPC10_BITS_IN_COMPRESSED_FRAME-1) of array bits[], and both reads
 | 
						|
  and writes the lpc10_encoder_state structure contents.  The
 | 
						|
  lpc10_encoder_state structure should *not* be initialized for every
 | 
						|
  frame of encoded speech.  Once at the beginning of execution, done
 | 
						|
  automatically for you by create_lpc10_encoder_state(), is enough.
 | 
						|
 | 
						|
  init_lpc10_encoder_state() reinitializes the lpc10_encoder_state
 | 
						|
  structure.  This might be useful if you are finished processing one
 | 
						|
  sound sample, and want to reuse the same lpc10_encoder_state
 | 
						|
  structure to process another sound sample.  There might be other
 | 
						|
  uses as well.
 | 
						|
 | 
						|
  Note that the comments in the lpc10/lpcenc.c file imply that indices
 | 
						|
  1 through 180 of array speech[] are read.  These comments were
 | 
						|
  written for the Fortran version of the code, before it was
 | 
						|
  automatically converted to C by the conversion program f2c.  f2c
 | 
						|
  seems to use the convention that the pointers to arrays passed as
 | 
						|
  function arguments point to the first index used in the Fortran
 | 
						|
  code, whatever index that might be (usually 1), and then it modifies
 | 
						|
  the pointer inside of the function, like so:
 | 
						|
 | 
						|
  if (speech) {
 | 
						|
      --speech;
 | 
						|
  }
 | 
						|
 | 
						|
  So that the code can access the first value at index 1 and the last
 | 
						|
  at index 180.  This makes the translated C code "closer" to the
 | 
						|
  original Fortran code.
 | 
						|
 | 
						|
  The calling sequence for the decoder is similar to the encoder.  The
 | 
						|
  only significant difference is that the array bits[] is read
 | 
						|
  (indices 0 through (LPC10_BITS_IN_COMPRESSED_FRAME-1)), and the
 | 
						|
  array speech[] is written (indices 0 through
 | 
						|
  (LPC10_SAMPLES_PER_FRAME-1)).
 | 
						|
 | 
						|
  */
 | 
						|
 | 
						|
struct lpc10_encoder_state * create_lpc10_encoder_state (void);
 | 
						|
void init_lpc10_encoder_state (struct lpc10_encoder_state *st);
 | 
						|
int lpc10_encode (real *speech, INT32 *bits, struct lpc10_encoder_state *st);
 | 
						|
 | 
						|
struct lpc10_decoder_state * create_lpc10_decoder_state (void);
 | 
						|
void init_lpc10_decoder_state (struct lpc10_decoder_state *st);
 | 
						|
int lpc10_decode (INT32 *bits, real *speech, struct lpc10_decoder_state *st);
 | 
						|
 | 
						|
#endif /* __LPC10_H__ */
 |