source: roaraudio/include/libroardsp/libroardsp.h @ 673:69300e477dca

Last change on this file since 673:69300e477dca was 673:69300e477dca, checked in by phi, 16 years ago

done lowp filter, added rate to filter struct

File size: 1.7 KB
Line 
1//libroardsp.h:
2
3#ifndef _LIBROARDSP_H_
4#define _LIBROARDSP_H_
5
6#include <roaraudio.h>
7
8// defines
9#define ROARDSP_MAX_FILTERS_PER_CHAIN 8
10
11#define ROARDSP_FILTER_NONE           0
12#define ROARDSP_FILTER_AMP            1
13#define ROARDSP_FILTER_LOWP           2
14#define ROARDSP_FILTER_HIGHP          3
15
16// filter CTLs:
17
18#define ROARDSP_FCTL_FREQ             1
19#define ROARDSP_FCTL_TIME             2
20#define ROARDSP_FCTL_MUL              3
21#define ROARDSP_FCTL_DIV              4
22
23// types:
24
25struct roardsp_filter {
26 int    channels;
27 int    bits;
28 int    rate;
29 void * inst;
30 int (*calc  )(struct roardsp_filter * filter, void * data, size_t samples);
31 int (*uninit)(struct roardsp_filter * filter);
32 int (*ctl   )(struct roardsp_filter * filter, int cmd, void * data);
33};
34
35struct roardsp_filterchain {
36 int filters;
37 struct roardsp_filter * filter[ROARDSP_MAX_FILTERS_PER_CHAIN];
38};
39
40struct roardsp_lowp {
41 uint32_t freq; // in mHz (0Hz..4MHz)
42 uint16_t a, b;
43 int32_t  old[ROAR_MAX_CHANNELS];
44};
45
46// funcs:
47int    roardsp_filter_str2id(char * str);
48char * roardsp_filter_id2str(int id);
49int    roardsp_filter_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
50int    roardsp_filter_uninit(struct roardsp_filter * filter);
51int    roardsp_filter_calc  (struct roardsp_filter * filter, void * data, size_t len);
52int    roardsp_filter_ctl   (struct roardsp_filter * filter, int cmd, void * data);
53
54int roardsp_fchain_init  (struct roardsp_filterchain * chain);
55int roardsp_fchain_uninit(struct roardsp_filterchain * chain);
56int roardsp_fchain_add   (struct roardsp_filterchain * chain, struct roardsp_filter * filter);
57int roardsp_fchain_calc  (struct roardsp_filterchain * chain, void * data, size_t len);
58
59#endif
60
61//ll
Note: See TracBrowser for help on using the repository browser.