Asterisk - The Open Source Telephony Project  18.5.0
anaFilter.c
Go to the documentation of this file.
1 
2  /******************************************************************
3 
4  iLBC Speech Coder ANSI-C Source Code
5 
6  anaFilter.c
7 
8  Copyright (C) The Internet Society (2004).
9  All Rights Reserved.
10 
11  ******************************************************************/
12 
13  #include <string.h>
14  #include "iLBC_define.h"
15 
16  /*----------------------------------------------------------------*
17  * LP analysis filter.
18  *---------------------------------------------------------------*/
19 
20  void anaFilter(
21  float *In, /* (i) Signal to be filtered */
22  float *a, /* (i) LP parameters */
23  int len,/* (i) Length of signal */
24  float *Out, /* (o) Filtered signal */
25  float *mem /* (i/o) Filter state */
26  ){
27  int i, j;
28  float *po, *pi, *pm, *pa;
29 
30  po = Out;
31 
32  /* Filter first part using memory from past */
33 
34  for (i=0; i<LPC_FILTERORDER; i++) {
35  pi = &In[i];
36  pm = &mem[LPC_FILTERORDER-1];
37  pa = a;
38  *po=0.0;
39 
40 
41 
42 
43 
44  for (j=0; j<=i; j++) {
45  *po+=(*pa++)*(*pi--);
46  }
47  for (j=i+1; j<LPC_FILTERORDER+1; j++) {
48 
49  *po+=(*pa++)*(*pm--);
50  }
51  po++;
52  }
53 
54  /* Filter last part where the state is entirely
55  in the input vector */
56 
57  for (i=LPC_FILTERORDER; i<len; i++) {
58  pi = &In[i];
59  pa = a;
60  *po=0.0;
61  for (j=0; j<LPC_FILTERORDER+1; j++) {
62  *po+=(*pa++)*(*pi--);
63  }
64  po++;
65  }
66 
67  /* Update state vector */
68 
69  memcpy(mem, &In[len-LPC_FILTERORDER],
70  LPC_FILTERORDER*sizeof(float));
71  }
#define LPC_FILTERORDER
Definition: iLBC_define.h:40
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
void anaFilter(float *In, float *a, int len, float *Out, float *mem)
Definition: anaFilter.c:20
static struct test_val a