source: roaraudio/include/libroardsp/libroardsp.h @ 2143:e3465803e2d3

Last change on this file since 2143:e3465803e2d3 was 2143:e3465803e2d3, checked in by phi, 15 years ago

added simple header for simple signal removal/demixer

File size: 7.6 KB
Line 
1//libroardsp.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - August 2008
5 *
6 *  This file is part of libroardsp 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 *  libroardsp 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
21 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 */
24
25#ifndef _LIBROARDSP_H_
26#define _LIBROARDSP_H_
27
28#include <roaraudio.h>
29
30__BEGIN_DECLS
31
32#include "midi.h"
33#include "poly.h"
34#include "convert.h"
35#include "midside.h"
36#include "point.h"
37#include "remove.h"
38
39// defines
40#define ROARDSP_MAX_FILTERS_PER_CHAIN 8
41
42#define ROARDSP_FILTER_NONE           0
43#define ROARDSP_FILTER_AMP            1
44#define ROARDSP_FILTER_LOWP           2
45#define ROARDSP_FILTER_HIGHP          3
46#define ROARDSP_FILTER_MODULATE       4
47#define ROARDSP_FILTER_QUANTIFY       5
48#define ROARDSP_FILTER_CLIP           6
49#define ROARDSP_FILTER_ADD            7
50#define ROARDSP_FILTER_DOWNMIX        8
51#define ROARDSP_FILTER_DCBLOCK        9
52#define ROARDSP_FILTER_SWAP          10
53
54// filter CTLs:
55
56#define ROARDSP_FCTL_FREQ             1
57#define ROARDSP_FCTL_TIME             2
58#define ROARDSP_FCTL_MUL              3
59#define ROARDSP_FCTL_DIV              4
60#define ROARDSP_FCTL_N                5
61#define ROARDSP_FCTL_LIMIT            6
62#define ROARDSP_FCTL_PHASE            7
63#define ROARDSP_FCTL_Q                8
64#define ROARDSP_FCTL_MODE             9
65
66// consts for filter(chain) reset:
67#define ROARDSP_RESET_NONE            0
68#define ROARDSP_RESET_FULL            1
69#define ROARDSP_RESET_STATE           2
70
71// filter specific constants:
72#define ROARDSP_DOWNMIX_LEFT          1
73#define ROARDSP_DOWNMIX_RIGHT         2
74#define ROARDSP_DOWNMIX_ARITHMETIC    3
75#define ROARDSP_DOWNMIX_RMS           4
76
77#define ROARDSP_DCBLOCK_NUMBLOCKS     100
78
79// types:
80
81struct roardsp_filter {
82 int    channels;
83 int    bits;
84 int    rate;
85 void * inst;
86 int (*calc  )(struct roardsp_filter * filter, void * data, size_t samples);
87 int (*uninit)(struct roardsp_filter * filter);
88 int (*ctl   )(struct roardsp_filter * filter, int cmd, void * data);
89 int (*reset )(struct roardsp_filter * filter, int what);
90};
91
92struct roardsp_filterchain {
93 int filters;
94 struct roardsp_filter * filter[ROARDSP_MAX_FILTERS_PER_CHAIN];
95};
96
97#ifdef ROAR_HAVE_LIBM
98struct roardsp_lowp {
99 uint32_t freq; // in mHz (0Hz..4MHz)
100 uint16_t a, b;
101 int32_t  old[ROAR_MAX_CHANNELS];
102};
103
104struct roardsp_highp {
105 uint32_t freq; // in mHz (0Hz..4MHz)
106 int32_t  a, b, c;
107 int32_t  oldout[ROAR_MAX_CHANNELS];
108 int32_t  oldin[ROAR_MAX_CHANNELS];
109};
110#endif
111
112struct roardsp_amp {
113 int32_t  mul;
114 int32_t  div;
115};
116
117struct roardsp_dcblock {
118 int cur;
119 int32_t dc[ROARDSP_DCBLOCK_NUMBLOCKS];
120};
121
122struct roardsp_swap {
123 int map[ROAR_MAX_CHANNELS];
124};
125
126// funcs:
127int    roardsp_filter_str2id(char * str);
128char * roardsp_filter_id2str(int id);
129int    roardsp_filter_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
130int    roardsp_filter_uninit(struct roardsp_filter * filter);
131int    roardsp_filter_calc  (struct roardsp_filter * filter, void * data, size_t len);
132int    roardsp_filter_ctl   (struct roardsp_filter * filter, int cmd, void * data);
133int    roardsp_filter_reset (struct roardsp_filter * filter, int what);
134
135int roardsp_fchain_init  (struct roardsp_filterchain * chain);
136int roardsp_fchain_uninit(struct roardsp_filterchain * chain);
137int roardsp_fchain_add   (struct roardsp_filterchain * chain, struct roardsp_filter * filter);
138int roardsp_fchain_calc  (struct roardsp_filterchain * chain, void * data, size_t len);
139int roardsp_fchain_reset (struct roardsp_filterchain * chain, int what);
140int roardsp_fchain_num   (struct roardsp_filterchain * chain);
141
142// filter:
143
144#ifdef ROAR_HAVE_LIBM
145int roardsp_lowp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
146int roardsp_lowp_uninit(struct roardsp_filter * filter);
147int roardsp_lowp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
148int roardsp_lowp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
149int roardsp_lowp_reset (struct roardsp_filter * filter, int what);
150
151int roardsp_highp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
152int roardsp_highp_uninit(struct roardsp_filter * filter);
153int roardsp_highp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
154int roardsp_highp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
155int roardsp_highp_reset (struct roardsp_filter * filter, int what);
156#endif
157
158int roardsp_amp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
159int roardsp_amp_uninit(struct roardsp_filter * filter);
160int roardsp_amp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
161int roardsp_amp_calc8 (struct roardsp_filter * filter, void * data, size_t samples);
162int roardsp_amp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
163int roardsp_amp_reset (struct roardsp_filter * filter, int what);
164
165int roardsp_add_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
166int roardsp_add_calc16(struct roardsp_filter * filter, void * data, size_t samples);
167int roardsp_add_reset (struct roardsp_filter * filter, int what);
168
169int roardsp_quantify_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
170int roardsp_quantify_uninit(struct roardsp_filter * filter);
171int roardsp_quantify_calc16(struct roardsp_filter * filter, void * data, size_t samples);
172int roardsp_quantify_ctl   (struct roardsp_filter * filter, int cmd, void * data);
173int roardsp_quantify_reset (struct roardsp_filter * filter, int what);
174
175int roardsp_clip_calc16(struct roardsp_filter * filter, void * data, size_t samples);
176int roardsp_clip_ctl   (struct roardsp_filter * filter, int cmd, void * data);
177int roardsp_clip_reset (struct roardsp_filter * filter, int what);
178
179int roardsp_downmix_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id);
180int roardsp_downmix_calc162(struct roardsp_filter * filter, void * data, size_t samples);
181int roardsp_downmix_ctl    (struct roardsp_filter * filter, int cmd, void * data);
182int roardsp_downmix_reset  (struct roardsp_filter * filter, int what);
183
184int roardsp_dcblock_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id);
185int roardsp_dcblock_uninit (struct roardsp_filter * filter);
186int roardsp_dcblock_calc16 (struct roardsp_filter * filter, void * data, size_t samples);
187int roardsp_dcblock_reset  (struct roardsp_filter * filter, int what);
188
189int roardsp_swap_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id);
190int roardsp_swap_uninit (struct roardsp_filter * filter);
191int roardsp_swap_calc162(struct roardsp_filter * filter, void * data, size_t samples);
192int roardsp_swap_ctl    (struct roardsp_filter * filter, int cmd, void * data);
193int roardsp_swap_reset  (struct roardsp_filter * filter, int what);
194
195// codecs:
196int roardsp_conv_alaw2pcm16 (int16_t * out, char * in, size_t len);
197int roardsp_conv_pcm162alaw (char * out, int16_t * in, size_t len);
198
199int roardsp_conv_mulaw2pcm16 (int16_t * out, char * in, size_t len);
200int roardsp_conv_pcm162mulaw (char * out, int16_t * in, size_t len);
201
202__END_DECLS
203
204#endif
205
206//ll
Note: See TracBrowser for help on using the repository browser.