source: roaraudio/include/libroardsp/filter.h @ 5469:23c09a8dc701

Last change on this file since 5469:23c09a8dc701 was 5469:23c09a8dc701, checked in by phi, 12 years ago

added an filter to do: r = -(l = (l+r)/2.1) (usefull for broken headphones

File size: 5.5 KB
RevLine 
[3318]1//filter.h:
2
3/*
[5381]4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2012
[3318]5 *
6 *  This file is part of libroar a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  libroar is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
[3517]21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
[3318]23 *
24 *  NOTE for everyone want's to change something and send patches:
25 *  read README and HACKING! There a addition information on
26 *  the license of this document you need to read before you send
27 *  any patches.
28 *
29 *  NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
30 *  or libpulse*:
31 *  The libs libroaresd, libroararts and libroarpulse link this lib
32 *  and are therefore GPL. Because of this it may be illigal to use
33 *  them with any software that uses libesd, libartsc or libpulse*.
34 */
35
36#ifndef _LIBROARDSP_FILTER_H_
37#define _LIBROARDSP_FILTER_H_
38
39#include "libroardsp.h"
40
[5269]41                                        /* implemented? */
42#define ROARDSP_FILTER_NONE            0
43#define ROARDSP_FILTER_AMP             1 /* yes */
44#define ROARDSP_FILTER_LOWP            2 /* yes */
45#define ROARDSP_FILTER_HIGHP           3 /* yes */
46#define ROARDSP_FILTER_MODULATE        4
47#define ROARDSP_FILTER_QUANTIFY        5 /* yes */
48#define ROARDSP_FILTER_CLIP            6 /* yes */
49#define ROARDSP_FILTER_ADD             7 /* yes */
50#define ROARDSP_FILTER_DOWNMIX         8 /* yes */
51#define ROARDSP_FILTER_DCBLOCK         9
52#define ROARDSP_FILTER_SWAP           10 /* yes */
53#define ROARDSP_FILTER_SPEEX_PREP     11 /* yes */
54#define ROARDSP_FILTER_AGC            12
55#define ROARDSP_FILTER_NOISEGATE      13
56#define ROARDSP_FILTER_RESPONSE_CURVE 14
[3319]57
58// filter CTLs:
59
[3321]60#define ROARDSP_FCTL_FREQ             1 /* float   */
[3319]61#define ROARDSP_FCTL_TIME             2
62#define ROARDSP_FCTL_MUL              3 /* int32_t */
63#define ROARDSP_FCTL_DIV              4 /* int32_t */
64#define ROARDSP_FCTL_N                5 /* int32_t */
65#define ROARDSP_FCTL_LIMIT            6 /* int32_t */
66#define ROARDSP_FCTL_PHASE            7
67#define ROARDSP_FCTL_Q                8 /* int32_t */
68#define ROARDSP_FCTL_MODE             9 /* int32_t */
[3321]69#define ROARDSP_FCTL_PACKET_SIZE     10 /* size_t  */
[3319]70
71// consts for filter flags:
72#define ROARDSP_FFLAG_NONE            0x0000
73#define ROARDSP_FFLAG_FREE            0x0001
74
75// consts for filter(chain) reset:
76#define ROARDSP_RESET_NONE            0
77#define ROARDSP_RESET_FULL            1
78#define ROARDSP_RESET_STATE           2
79
80// filter specific constants:
81#define ROARDSP_DOWNMIX_LEFT          1
82#define ROARDSP_DOWNMIX_RIGHT         2
83#define ROARDSP_DOWNMIX_ARITHMETIC    3
84#define ROARDSP_DOWNMIX_RMS           4
[5469]85#define ROARDSP_DOWNMIX_ARITHMETIC_INVERSE    5
[3319]86
87#define ROARDSP_DCBLOCK_NUMBLOCKS     100
88
89
90#define ROARDSP_SPEEX_PREP_ON          0x0001
91#define ROARDSP_SPEEX_PREP_OFF         0x0002
92#define ROARDSP_SPEEX_PREP_MASK        (ROARDSP_SPEEX_PREP_ON|ROARDSP_SPEEX_PREP_OFF)
93
94// Config Bit Vector
95#define ROARDSP_SPEEX_PREP_CBV(opt,sw) ((sw)<<((opt)*2))
96#define ROARDSP_SPEEX_PREP_CTB(opt,val) (((val) & ROARDSP_SPEEX_PREP_CBV((opt),ROARDSP_SPEEX_PREP_MASK)) >> ((opt)*2))
97
98#define ROARDSP_SPEEX_PREP_DENOISE     0
99#define ROARDSP_SPEEX_PREP_AGC         1
100#define ROARDSP_SPEEX_PREP_VAD         2
101
102#define ROARDSP_SPEEX_PREP_DENOISE_ON  ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_ON)
103#define ROARDSP_SPEEX_PREP_DENOISE_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_OFF)
104#define ROARDSP_SPEEX_PREP_AGC_ON      ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_ON)
105#define ROARDSP_SPEEX_PREP_AGC_OFF     ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_OFF)
106#define ROARDSP_SPEEX_PREP_VAD_ON      ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_ON)
107#define ROARDSP_SPEEX_PREP_VAD_OFF     ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_OFF)
108
109
110// types:
111
112struct roardsp_filter {
113 int    channels;
114 int    bits;
115 int    rate;
116 void * inst;
117 uint_least16_t flags;
118 int (*calc  )(struct roardsp_filter * filter, void * data, size_t samples);
119 int (*uninit)(struct roardsp_filter * filter);
120 int (*ctl   )(struct roardsp_filter * filter, int cmd, void * data);
121 int (*reset )(struct roardsp_filter * filter, int what);
122};
123
124
125// funcs:
[5269]126int          roardsp_filter_str2id(const char * str);
127const char * roardsp_filter_id2str(const int id);
[3319]128int    roardsp_filter_new   (struct roardsp_filter ** filter, struct roar_stream * stream, int id);
129#define roardsp_filter_free(x) roardsp_filter_uninit((x))
130int    roardsp_filter_init  (struct roardsp_filter *  filter, struct roar_stream * stream, int id);
131int    roardsp_filter_uninit(struct roardsp_filter *  filter);
132int    roardsp_filter_calc  (struct roardsp_filter *  filter, void * data, size_t len);
133int    roardsp_filter_ctl   (struct roardsp_filter *  filter, int cmd, void * data);
134int    roardsp_filter_reset (struct roardsp_filter *  filter, int what);
135
136
[3318]137#endif
138
139//ll
Note: See TracBrowser for help on using the repository browser.