Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
isdn
mISDN
dsp_biquad.h
Go to the documentation of this file.
1
/*
2
* SpanDSP - a series of DSP components for telephony
3
*
4
* biquad.h - General telephony bi-quad section routines (currently this just
5
* handles canonic/type 2 form)
6
*
7
* Written by Steve Underwood <
[email protected]
>
8
*
9
* Copyright (C) 2001 Steve Underwood
10
*
11
* All rights reserved.
12
*
13
* This program is free software; you can redistribute it and/or modify
14
* it under the terms of the GNU General Public License as published by
15
* the Free Software Foundation; either version 2 of the License, or
16
* (at your option) any later version.
17
*
18
* This program is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU General Public License for more details.
22
*
23
* You should have received a copy of the GNU General Public License
24
* along with this program; if not, write to the Free Software
25
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26
*
27
*/
28
29
struct
biquad2_state
{
30
int32_t
gain
;
31
int32_t
a1
;
32
int32_t
a2
;
33
int32_t
b1
;
34
int32_t
b2
;
35
36
int32_t
z1
;
37
int32_t
z2
;
38
};
39
40
static
inline
void
biquad2_init(
struct
biquad2_state
*bq,
41
int32_t
gain
,
int32_t
a1
,
int32_t
a2
,
int32_t
b1,
int32_t
b2)
42
{
43
bq->
gain
=
gain
;
44
bq->
a1
=
a1
;
45
bq->
a2
=
a2
;
46
bq->
b1
= b1;
47
bq->
b2
= b2;
48
49
bq->
z1
= 0;
50
bq->
z2
= 0;
51
}
52
53
static
inline
int16_t
biquad2(
struct
biquad2_state
*bq,
int16_t
sample
)
54
{
55
int32_t
y
;
56
int32_t
z0;
57
58
z0 = sample * bq->
gain
+ bq->
z1
* bq->
a1
+ bq->
z2
* bq->
a2
;
59
y = z0 + bq->
z1
* bq->
b1
+ bq->
z2
* bq->
b2
;
60
61
bq->
z2
= bq->
z1
;
62
bq->
z1
= z0 >> 15;
63
y >>= 15;
64
return
y
;
65
}
Generated on Thu Jan 10 2013 13:42:28 for Linux Kernel by
1.8.2