Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

strip.c

Go to the documentation of this file.
00001 
00016 /*
00017  * Copyright (c) 1991-2006 Kawahara Lab., Kyoto University
00018  * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology
00019  * Copyright (c) 2005-2006 Julius project team, Nagoya Institute of Technology, Nagoya Institute of Technology
00020  * All rights reserved
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) {          /* first time */
00052         bgn = src;
00053         mode = 1;
00054       }
00055       /* skip */
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           /* deleted (leave uncopied) */
00065           /*j_printf("Warning: sample %d-%d is invalid, stripped\n", bgn, src-1);*/
00066         }
00067       }
00068       a[dst++] = a[src];
00069     }
00070   }
00071   /* end process */
00072   if (mode == 1) {
00073     mode = 0;
00074     if ((src - bgn) < WINDOWLEN) {
00075       /* restore */
00076       for(j=bgn;j<src;j++) {
00077         a[dst++] = a[j];
00078       }
00079     } else {
00080       /* deleted (leave uncopied) */
00081       /*j_printf("Warning: sample %d-%d is invalid, stripped\n", bgn, src-1);*/
00082     }
00083   }
00084   
00085   return(dst);
00086 }

Generated on Tue Mar 28 16:01:39 2006 for Julius by  doxygen 1.4.2