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