source: roaraudio/include/libroardsp/libroardsp.h @ 685:b05e3c0058d0

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

added highp inst struct and prototypes

File size: 2.6 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
46struct roardsp_highp {
47 uint32_t freq; // in mHz (0Hz..4MHz)
48 int32_t  a, b, c;
49 int32_t  oldout[ROAR_MAX_CHANNELS];
50 int32_t  oldin[ROAR_MAX_CHANNELS];
51};
52
53// funcs:
54int    roardsp_filter_str2id(char * str);
55char * roardsp_filter_id2str(int id);
56int    roardsp_filter_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
57int    roardsp_filter_uninit(struct roardsp_filter * filter);
58int    roardsp_filter_calc  (struct roardsp_filter * filter, void * data, size_t len);
59int    roardsp_filter_ctl   (struct roardsp_filter * filter, int cmd, void * data);
60
61int roardsp_fchain_init  (struct roardsp_filterchain * chain);
62int roardsp_fchain_uninit(struct roardsp_filterchain * chain);
63int roardsp_fchain_add   (struct roardsp_filterchain * chain, struct roardsp_filter * filter);
64int roardsp_fchain_calc  (struct roardsp_filterchain * chain, void * data, size_t len);
65int roardsp_fchain_num   (struct roardsp_filterchain * chain);
66
67// filter:
68
69int roardsp_lowp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
70int roardsp_lowp_uninit(struct roardsp_filter * filter);
71int roardsp_lowp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
72int roardsp_lowp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
73
74int roardsp_highp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
75int roardsp_highp_uninit(struct roardsp_filter * filter);
76int roardsp_highp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
77int roardsp_highp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
78
79#endif
80
81//ll
Note: See TracBrowser for help on using the repository browser.