00001 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 #include <sent/stddefs.h>
00024 #include <sent/speech.h>
00025 
00027 #define IS_INVALID_SAMPLE(A) ((A) == 0 || (A) == -32767)
00028 
00029 #define WINDOWLEN 16
00030 
00039 int
00040 strip_zero(SP16 a[], int len)
00041 {
00042   int src,dst;
00043   int bgn,mode,j;
00044 
00045   dst = 0;
00046   bgn = 0;
00047   mode = 0;
00048 
00049   for (src = 0; src < len; src++) {
00050     if (IS_INVALID_SAMPLE(a[src])) {
00051       if (mode == 0) {          
00052         bgn = src;
00053         mode = 1;
00054       }
00055       
00056     } else {
00057       if (mode == 1) {
00058         mode = 0;
00059         if ((src - bgn) < WINDOWLEN) {
00060           for(j=bgn;j<src;j++) {
00061             a[dst++] = a[j];
00062           }
00063         } else {
00064           
00065           
00066         }
00067       }
00068       a[dst++] = a[src];
00069     }
00070   }
00071   
00072   if (mode == 1) {
00073     mode = 0;
00074     if ((src - bgn) < WINDOWLEN) {
00075       
00076       for(j=bgn;j<src;j++) {
00077         a[dst++] = a[j];
00078       }
00079     } else {
00080       
00081       
00082     }
00083   }
00084   
00085   return(dst);
00086 }