aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/codecs/lpc10/lpfilt.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/codecs/lpc10/lpfilt.c')
-rw-r--r--trunk/codecs/lpc10/lpfilt.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/trunk/codecs/lpc10/lpfilt.c b/trunk/codecs/lpc10/lpfilt.c
new file mode 100644
index 000000000..375528921
--- /dev/null
+++ b/trunk/codecs/lpc10/lpfilt.c
@@ -0,0 +1,125 @@
+/*
+
+$Log$
+Revision 1.15 2004/06/26 03:50:14 markster
+Merge source cleanups (bug #1911)
+
+Revision 1.14 2003/02/12 13:59:15 matteo
+mer feb 12 14:56:57 CET 2003
+
+Revision 1.1.1.1 2003/02/12 13:59:15 matteo
+mer feb 12 14:56:57 CET 2003
+
+Revision 1.2 2000/01/05 08:20:39 markster
+Some OSS fixes and a few lpc changes to make it actually work
+
+ * Revision 1.1 1996/08/19 22:31:35 jaf
+ * Initial revision
+ *
+
+*/
+
+/* -- translated by f2c (version 19951025).
+ You must link the resulting object file with the libraries:
+ -lf2c -lm (in that order)
+*/
+
+#include "f2c.h"
+
+#ifdef P_R_O_T_O_T_Y_P_E_S
+extern int lpfilt_(real *inbuf, real *lpbuf, integer *len, integer *nsamp);
+#endif
+
+/* *********************************************************************** */
+
+/* LPFILT Version 55 */
+
+/* $Log$
+ * Revision 1.15 2004/06/26 03:50:14 markster
+ * Merge source cleanups (bug #1911)
+ *
+ * Revision 1.14 2003/02/12 13:59:15 matteo
+ * mer feb 12 14:56:57 CET 2003
+ *
+ * Revision 1.1.1.1 2003/02/12 13:59:15 matteo
+ * mer feb 12 14:56:57 CET 2003
+ *
+ * Revision 1.2 2000/01/05 08:20:39 markster
+ * Some OSS fixes and a few lpc changes to make it actually work
+ *
+ * Revision 1.1 1996/08/19 22:31:35 jaf
+ * Initial revision
+ * */
+/* Revision 1.3 1996/03/15 16:53:49 jaf */
+/* Just put comment header in standard form. */
+
+/* Revision 1.2 1996/03/12 23:58:06 jaf */
+/* Comments added explaining that none of the local variables of this */
+/* subroutine need to be saved from one invocation to the next. */
+
+/* Revision 1.1 1996/02/07 14:47:44 jaf */
+/* Initial revision */
+
+
+/* *********************************************************************** */
+
+/* 31 Point Equiripple FIR Low-Pass Filter */
+/* Linear phase, delay = 15 samples */
+
+/* Passband: ripple = 0.25 dB, cutoff = 800 Hz */
+/* Stopband: atten. = 40. dB, cutoff = 1240 Hz */
+
+/* Inputs: */
+/* LEN - Length of speech buffers */
+/* NSAMP - Number of samples to filter */
+/* INBUF - Input speech buffer */
+/* Indices len-nsamp-29 through len are read. */
+/* Output: */
+/* LPBUF - Low passed speech buffer (must be different array than INBUF) */
+/* Indices len+1-nsamp through len are written. */
+
+/* This subroutine has no local state. */
+
+/* Subroutine */ int lpfilt_(real *inbuf, real *lpbuf, integer *len, integer *
+ nsamp)
+{
+ /* System generated locals */
+ integer i__1;
+
+ /* Local variables */
+ integer j;
+ real t;
+
+/* Arguments */
+/* Parameters/constants */
+/* Local variables that need not be saved */
+/* Local state */
+/* None */
+ /* Parameter adjustments */
+ --lpbuf;
+ --inbuf;
+
+ /* Function Body */
+ i__1 = *len;
+ for (j = *len + 1 - *nsamp; j <= i__1; ++j) {
+ t = (inbuf[j] + inbuf[j - 30]) * -.0097201988f;
+ t += (inbuf[j - 1] + inbuf[j - 29]) * -.0105179986f;
+ t += (inbuf[j - 2] + inbuf[j - 28]) * -.0083479648f;
+ t += (inbuf[j - 3] + inbuf[j - 27]) * 5.860774e-4f;
+ t += (inbuf[j - 4] + inbuf[j - 26]) * .0130892089f;
+ t += (inbuf[j - 5] + inbuf[j - 25]) * .0217052232f;
+ t += (inbuf[j - 6] + inbuf[j - 24]) * .0184161253f;
+ t += (inbuf[j - 7] + inbuf[j - 23]) * 3.39723e-4f;
+ t += (inbuf[j - 8] + inbuf[j - 22]) * -.0260797087f;
+ t += (inbuf[j - 9] + inbuf[j - 21]) * -.0455563702f;
+ t += (inbuf[j - 10] + inbuf[j - 20]) * -.040306855f;
+ t += (inbuf[j - 11] + inbuf[j - 19]) * 5.029835e-4f;
+ t += (inbuf[j - 12] + inbuf[j - 18]) * .0729262903f;
+ t += (inbuf[j - 13] + inbuf[j - 17]) * .1572008878f;
+ t += (inbuf[j - 14] + inbuf[j - 16]) * .2247288674f;
+ t += inbuf[j - 15] * .250535965f;
+ lpbuf[j] = t;
+ }
+ return 0;
+} /* lpfilt_ */
+