00001 #ifndef __C_LPC10_H
00002 #define __C_LPC10_H
00003
00004
00005
00006 #include "x_lpc10.h"
00007
00008
00009
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013
00014
00015
00016 #define MINWIN 90
00017 #define MAXWIN 156
00018 #define LTAU 60
00019
00020 #define NF 4
00021 #define AF 3
00022
00023 #define SBUFL ((AF-2)*LFRAME+1)
00024 #define SBUFH (NF*LFRAME)
00025 #define LBUFL ((AF-2)*LFRAME-MAXPIT+1)
00026 #define LBUFH (NF*LFRAME)
00027 #define PWLEN (MAXPIT+MAXWIN)
00028 #define PWINH (AF*LFRAME)
00029 #define PWINL (PWINH-PWLEN+1)
00030
00031
00032 #define DVWINL (PWINH-PWLEN/2 - MAXWIN/2 +1)
00033 #define DVWINH (DVWINL+MAXWIN-1)
00034
00035
00036 #define REF 3000
00037
00038
00039 #define OSLEN 10
00040
00041 #define L2WID 16
00042
00043
00044
00045
00046 extern INDEX G_tau[LTAU];
00047
00048
00049 extern FLOAT *g_inbuf, *g_pebuf, *g_lpbuf, *g_ivbuf;
00050 extern FLOAT g_lparray[LBUFH-LBUFL+1], g_ivarray[PWINH-PWINL+1];
00051 extern FLOAT g_pearray[SBUFH-SBUFL+1], g_inarray[SBUFH-SBUFL+1];
00052 extern INDEX g_vwin[AF][2];
00053 extern INDEX g_awin[AF][2];
00054 extern BOOL g_voibuf[AF+1][2];
00055 extern FLOAT g_rmsbuf[AF], g_rcbuf[AF][ORDER];
00056 extern FLOAT g_bias;
00057 extern INDEX g_obound[AF];
00058 extern INDEX g_pitch;
00059
00060 extern INDEX g_osbuf[OSLEN];
00061 extern INDEX g_osptr;
00062 extern FLOAT g_n, g_d, g_fpc;
00063 extern FLOAT g_l2buf[L2WID], g_l2sum1;
00064 extern INDEX g_l2ptr1, g_l2ptr2, g_lasti;
00065 extern BOOL g_hyst;
00066
00067
00068 extern FLOAT g_zpre[2];
00069
00070
00071 extern INDEX g_lbve, g_lbue, g_fbue, g_fbve, g_ofbue, g_olbue;
00072 extern LINDEX g_sfbue, g_slbue;
00073 extern FLOAT g_maxmin, g_snr, g_dither;
00074 extern FLOAT g_voice[AF][2];
00075
00076
00077 extern FLOAT g_s[LTAU];
00078 extern INDEX g_p[LTAU][2];
00079 extern INDEX g_ipoint;
00080 extern FLOAT g_alphax;
00081
00082
00083 extern FLOAT g_hpa1, g_hpa2, g_hpb1, g_hpb2;
00084
00085
00086
00087
00088 #define CODED_VOICE g_voibuf[AF-2]
00089 #define CODED_PITCH g_pitch
00090 #define CODED_RMS g_rmsbuf[AF-3]
00091 #define CODED_RC g_rcbuf[AF-3]
00092
00093
00094
00095 VOID analys( VOID );
00096 VOID dcbias( INDEX len, FLOAT speech[], FLOAT sigout[] );
00097 VOID difmag( FLOAT speech[], INDEX tau[], INDEX ltau, INDEX maxlag,
00098 FLOAT amdf[], INDEX* minptr, INDEX* maxptr );
00099 VOID dyptrk( FLOAT amdf[LTAU], INDEX minptr, BOOL voice,
00100 INDEX* pitch, INDEX* midx );
00101 FLOAT energy_sqrt( INDEX len, FLOAT speech[] );
00102 VOID hp100( FLOAT speech[], FLOAT dest[] );
00103 VOID hp100_i16( INT16 speech[], FLOAT dest[] );
00104 VOID invert( FLOAT phi[ORDER][ORDER], FLOAT psi[ORDER], FLOAT rc[ORDER] );
00105 VOID ivfilt( FLOAT lpbuf[], FLOAT ivbuf[], FLOAT ivrc[2] );
00106 VOID coder_ini( VOID );
00107 VOID lpfilt31( FLOAT inbuf[], FLOAT lpbuf[] );
00108 VOID mload( INDEX awinf, FLOAT speech[],
00109 FLOAT phi[ORDER][ORDER], FLOAT psi[ORDER] );
00110 VOID onset( FLOAT pebuf[], INDEX osbuf[OSLEN], INDEX* osptr );
00111 VOID placea( INDEX ipitch, BOOL voibuf[AF+1][2], INDEX obound,
00112 INDEX vwin[AF][2], INDEX awin[AF][2], INDEX ewin[2] );
00113 VOID placev( INDEX osbuf[OSLEN], INDEX osptr,
00114 INDEX* obound, INDEX vwin[AF][2] );
00115 VOID preemp( FLOAT inbuf[], FLOAT pebuf[], INDEX len, FLOAT z[2] );
00116 VOID rcchk( FLOAT rc1f[ORDER], FLOAT rc2f[ORDER] );
00117 VOID tbdm( FLOAT speech[], INDEX tau[LTAU], FLOAT amdf[LTAU],
00118 INDEX* minptr, INDEX* maxptr, INDEX* mintau );
00119 VOID voicin( INDEX vwin[AF][2], FLOAT inbuf[], FLOAT lpbuf[], INDEX half,
00120 FLOAT minamd, FLOAT maxamd, INDEX mintau, FLOAT ivrc[2],
00121 INDEX* obound, BOOL voibuf[AF+1][2] );
00122 VOID vparms( INDEX vwin[AF][2], FLOAT inbuf[], FLOAT lpbuf[],
00123 INDEX half, FLOAT *dither, INDEX mintau, INDEX *zc,
00124 INDEX *lbe, INDEX *fbe, FLOAT *qs, FLOAT *rc1,
00125 FLOAT *ar_b, FLOAT *ar_f );
00126 VOID shift( VOID );
00127 VOID framein( FLOAT speech[] );
00128 VOID framein_i16( INT16 speech[] );
00129
00130
00131 VOID c_lpc10_ini( VOID );
00132 VOID c_lpc10_code( FLOAT speech[] );
00133 VOID c_lpc10_code_i16( INT16 speech[] );
00134 VOID c_lpc10_peek( BOOL voice[2], INT *pitch,
00135 FLOAT *rms, FLOAT rc[ORDER] );
00136
00137
00138
00139 #ifdef __cplusplus
00140 }
00141 #endif
00142
00143
00144
00145 #endif