source: roaraudio/include/libroardsp/libroardsp.h @ 672:acb06011bc09

Last change on this file since 672:acb06011bc09 was 672:acb06011bc09, checked in by phi, 16 years ago

added roardsp_filter_ctl()

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 void * inst;
29 int (*calc  )(struct roardsp_filter * filter, void * data, size_t samples);
30 int (*uninit)(struct roardsp_filter * filter);
31 int (*ctl   )(struct roardsp_filter * filter, int cmd, void * data);
32};
33
34struct roardsp_filterchain {
35 int filters;
36 struct roardsp_filter * filter[ROARDSP_MAX_FILTERS_PER_CHAIN];
37};
38
39struct roardsp_lowp {
40 uint32_t freq; // in mHz (0Hz..4MHz)
41 uint16_t a, b;
42 int32_t  old[ROAR_MAX_CHANNELS];
43};
44
45// funcs:
46int    roardsp_filter_str2id(char * str);
47char * roardsp_filter_id2str(int id);
48int    roardsp_filter_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
49int    roardsp_filter_uninit(struct roardsp_filter * filter);
50int    roardsp_filter_calc  (struct roardsp_filter * filter, void * data, size_t len);
51int    roardsp_filter_ctl   (struct roardsp_filter * filter, int cmd, void * data);
52
53int roardsp_fchain_init  (struct roardsp_filterchain * chain);
54int roardsp_fchain_uninit(struct roardsp_filterchain * chain);
55int roardsp_fchain_add   (struct roardsp_filterchain * chain, struct roardsp_filter * filter);
56int roardsp_fchain_calc  (struct roardsp_filterchain * chain, void * data, size_t len);
57
58#endif
59
60//ll
Note: See TracBrowser for help on using the repository browser.