summaryrefslogtreecommitdiff
path: root/gst/filter/iir.h
blob: 241cc1d2d902d4c518fd8055bcdefaceb96f9ce5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/********************************************************************
 *                                                                  *
 * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE.  *
 * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
 * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE.    *
 * PLEASE READ THESE TERMS DISTRIBUTING.                            *
 *                                                                  *
 * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000             *
 * by Monty <monty@xiph.org> and The XIPHOPHORUS Company            *
 * http://www.xiph.org/                                             *
 *                                                                  *
 ********************************************************************

  function: Direct Form I, II IIR filters, plus some specializations
  last mod: $Id$

 ********************************************************************/

#ifndef _V_IIR_H_
#define _V_IIR_H_

typedef struct {
  int stages;
  double *coeff_A;
  double *coeff_B;
  double *z_A;
  double *z_B;
  int ring;
  double gain;
} IIR_state;

void IIR_init(IIR_state *s,int stages,double gain, double *A, double *B);
void IIR_clear(IIR_state *s);
double IIR_filter(IIR_state *s,double in);
double IIR_filter_ChebBand(IIR_state *s,double in);

#endif