00001 #include "c_lpc10.h"
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 VOID ivfilt( FLOAT lpbuf[], FLOAT ivbuf[], FLOAT ivrc[2] )
00016 {
00017 INDEX i, j, k;
00018 FLOAT r[3], pc1, pc2, tmp;
00019
00020
00021 for (i = 0; i <= 2; i++) {
00022 k = i * 4;
00023 r[i] = (FLOAT)0.0;
00024 for (j = i * 4 + (PWLEN - LFRAME + 3); j < PWLEN; j += 2)
00025 r[i] += lpbuf[j] * lpbuf[j - k];
00026 }
00027
00028
00029 pc1 = pc2 = ivrc[0] = ivrc[1] = (FLOAT)0.0;
00030 if (r[0] > (FLOAT)1e-6) {
00031 ivrc[0] = r[1] / r[0];
00032 tmp = ivrc[0] * r[1];
00033 pc2 = ivrc[1] = (r[2] - tmp) / (r[0] - tmp);
00034 pc1 = ivrc[0] - ivrc[0] * ivrc[1];
00035 }
00036
00037
00038 for (i = PWLEN - LFRAME; i < PWLEN; i++)
00039 ivbuf[i] = lpbuf[i] - pc1 * lpbuf[i-4] - pc2 * lpbuf[i-8];
00040 }
00041
00042