00001 #include <stdio.h>
00002 #include <stdlib.h>
00003
00004 #include "c_lpc10.h"
00005 #include "lpc10.h"
00006
00007
00008
00009 BOOL g_used = FALSE;
00010
00011 INDEX panalys( VOID );
00012
00013
00014
00015 PTHL10 *pthl10_construct( VOID )
00016 {
00017 if (g_used) {
00018 fprintf(stderr,"Por ahora no soporto mas de una estructura PTHL10!");
00019 exit(1);
00020 }
00021
00022 g_used = TRUE;
00023 pthl10_reset((PTHL10*)1);
00024 return (PTHL10*)1;
00025 }
00026
00027
00028
00029 VOID pthl10_destruct( PTHL10 *p )
00030 {
00031 (void)p;
00032 g_used = FALSE;
00033 }
00034
00035
00036
00037 VOID pthl10_reset( PTHL10 *p )
00038 {
00039 (void)p;
00040 coder_ini();
00041 }
00042
00043
00044
00045 INT pthl10_get_i16( PTHL10 *p, INT16 speech[LPC10_LFRAME] )
00046 {
00047 (void)p;
00048 shift();
00049 framein_i16(speech);
00050 return panalys();
00051 }
00052
00053
00054
00055 INDEX panalys( VOID )
00056 {
00057 static FLOAT amdf[LTAU];
00058 INDEX midx, minptr, maxptr, mintau;
00059 FLOAT ivrc[2];
00060
00061 preemp(g_inbuf+(SBUFH-LFRAME+1), g_pebuf+(SBUFH-LFRAME+1), LFRAME, g_zpre);
00062 onset(g_pebuf, g_osbuf, &g_osptr);
00063 placev(g_osbuf, g_osptr, &g_obound[AF-1], g_vwin);
00064
00065 lpfilt31(g_inbuf+LBUFH-PWLEN-1, g_lpbuf+LBUFH-PWLEN+1);
00066 ivfilt(g_lpbuf+PWINL, g_ivbuf+PWINL, ivrc);
00067 tbdm(g_ivbuf+PWINL, G_tau, amdf, &minptr, &maxptr, &mintau);
00068
00069 voicin(g_vwin, g_inbuf, g_lpbuf, 0, amdf[minptr], amdf[maxptr], mintau, ivrc, g_obound, g_voibuf);
00070 voicin(g_vwin, g_inbuf, g_lpbuf, 1, amdf[minptr], amdf[maxptr], mintau, ivrc, g_obound, g_voibuf);
00071 dyptrk(amdf, minptr, g_voibuf[AF][1], &g_pitch, &midx);
00072
00073 if (CODED_VOICE[0]||CODED_VOICE[1])
00074 return G_tau[CODED_PITCH];
00075 else
00076 return 0;
00077 }
00078
00079