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)
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 }