source: roaraudio/include/libroardsp/libroardsp.h @ 1105:ab879ecbefc2

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

disable options needing libm

File size: 6.3 KB
RevLine 
[651]1//libroardsp.h:
2
[687]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
[651]25#ifndef _LIBROARDSP_H_
26#define _LIBROARDSP_H_
27
[652]28#include <roaraudio.h>
29
[874]30__BEGIN_DECLS
31
[686]32#include "midi.h"
33
[659]34// defines
35#define ROARDSP_MAX_FILTERS_PER_CHAIN 8
36
[662]37#define ROARDSP_FILTER_NONE           0
38#define ROARDSP_FILTER_AMP            1
39#define ROARDSP_FILTER_LOWP           2
40#define ROARDSP_FILTER_HIGHP          3
[979]41#define ROARDSP_FILTER_MODULATE       4
42#define ROARDSP_FILTER_QUANTIFY       5
43#define ROARDSP_FILTER_CLIP           6
44#define ROARDSP_FILTER_ADD            7
[1004]45#define ROARDSP_FILTER_DOWNMIX        8
[1100]46#define ROARDSP_FILTER_DCBLOCK        9
[662]47
[672]48// filter CTLs:
49
50#define ROARDSP_FCTL_FREQ             1
51#define ROARDSP_FCTL_TIME             2
52#define ROARDSP_FCTL_MUL              3
53#define ROARDSP_FCTL_DIV              4
[979]54#define ROARDSP_FCTL_N                5
55#define ROARDSP_FCTL_LIMIT            6
56#define ROARDSP_FCTL_PHASE            7
[1003]57#define ROARDSP_FCTL_Q                8
58#define ROARDSP_FCTL_MODE             9
[672]59
[1004]60// filter specific constants:
61#define ROARDSP_DOWNMIX_LEFT          1
62#define ROARDSP_DOWNMIX_RIGHT         2
63#define ROARDSP_DOWNMIX_ARITHMETIC    3
64#define ROARDSP_DOWNMIX_RMS           4
65
[1100]66#define ROARDSP_DCBLOCK_NUMBLOCKS     100
67
[659]68// types:
69
70struct roardsp_filter {
71 int    channels;
72 int    bits;
[673]73 int    rate;
[659]74 void * inst;
75 int (*calc  )(struct roardsp_filter * filter, void * data, size_t samples);
76 int (*uninit)(struct roardsp_filter * filter);
[672]77 int (*ctl   )(struct roardsp_filter * filter, int cmd, void * data);
[659]78};
79
80struct roardsp_filterchain {
81 int filters;
82 struct roardsp_filter * filter[ROARDSP_MAX_FILTERS_PER_CHAIN];
83};
84
[1105]85#ifdef ROAR_HAVE_LIBM
[659]86struct roardsp_lowp {
87 uint32_t freq; // in mHz (0Hz..4MHz)
88 uint16_t a, b;
89 int32_t  old[ROAR_MAX_CHANNELS];
90};
91
[685]92struct roardsp_highp {
93 uint32_t freq; // in mHz (0Hz..4MHz)
94 int32_t  a, b, c;
95 int32_t  oldout[ROAR_MAX_CHANNELS];
96 int32_t  oldin[ROAR_MAX_CHANNELS];
97};
[1105]98#endif
[685]99
[882]100struct roardsp_amp {
101 int32_t  mul;
102 int32_t  div;
103};
104
[1100]105struct roardsp_dcblock {
106 int cur;
107 int32_t dc[ROARDSP_DCBLOCK_NUMBLOCKS];
108};
109
[659]110// funcs:
[664]111int    roardsp_filter_str2id(char * str);
112char * roardsp_filter_id2str(int id);
113int    roardsp_filter_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
114int    roardsp_filter_uninit(struct roardsp_filter * filter);
115int    roardsp_filter_calc  (struct roardsp_filter * filter, void * data, size_t len);
[672]116int    roardsp_filter_ctl   (struct roardsp_filter * filter, int cmd, void * data);
[659]117
118int roardsp_fchain_init  (struct roardsp_filterchain * chain);
119int roardsp_fchain_uninit(struct roardsp_filterchain * chain);
120int roardsp_fchain_add   (struct roardsp_filterchain * chain, struct roardsp_filter * filter);
121int roardsp_fchain_calc  (struct roardsp_filterchain * chain, void * data, size_t len);
[679]122int roardsp_fchain_num   (struct roardsp_filterchain * chain);
[659]123
[676]124// filter:
125
[1105]126#ifdef ROAR_HAVE_LIBM
[676]127int roardsp_lowp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
128int roardsp_lowp_uninit(struct roardsp_filter * filter);
129int roardsp_lowp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
130int roardsp_lowp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
131
[685]132int roardsp_highp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
133int roardsp_highp_uninit(struct roardsp_filter * filter);
134int roardsp_highp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
135int roardsp_highp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
[1105]136#endif
[676]137
[882]138int roardsp_amp_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
139int roardsp_amp_uninit(struct roardsp_filter * filter);
140int roardsp_amp_calc16(struct roardsp_filter * filter, void * data, size_t samples);
141int roardsp_amp_calc8 (struct roardsp_filter * filter, void * data, size_t samples);
142int roardsp_amp_ctl   (struct roardsp_filter * filter, int cmd, void * data);
143
[979]144int roardsp_add_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
145int roardsp_add_calc16(struct roardsp_filter * filter, void * data, size_t samples);
146
147int roardsp_quantify_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
148int roardsp_quantify_uninit(struct roardsp_filter * filter);
149int roardsp_quantify_calc16(struct roardsp_filter * filter, void * data, size_t samples);
150int roardsp_quantify_ctl   (struct roardsp_filter * filter, int cmd, void * data);
151
152int roardsp_clip_init  (struct roardsp_filter * filter, struct roar_stream * stream, int id);
153int roardsp_clip_calc16(struct roardsp_filter * filter, void * data, size_t samples);
154int roardsp_clip_ctl   (struct roardsp_filter * filter, int cmd, void * data);
155
[1004]156int roardsp_downmix_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id);
157int roardsp_downmix_calc162(struct roardsp_filter * filter, void * data, size_t samples);
158int roardsp_downmix_ctl    (struct roardsp_filter * filter, int cmd, void * data);
159
[1100]160int roardsp_dcblock_init   (struct roardsp_filter * filter, struct roar_stream * stream, int id);
161int roardsp_dcblock_uninit (struct roardsp_filter * filter);
162int roardsp_dcblock_calc16 (struct roardsp_filter * filter, void * data, size_t samples);
163
[735]164// codecs:
165int roardsp_conv_alaw2pcm16 (int16_t * out, char * in, size_t len);
[816]166int roardsp_conv_pcm162alaw (char * out, int16_t * in, size_t len);
[735]167
[922]168int roardsp_conv_mulaw2pcm16 (int16_t * out, char * in, size_t len);
169int roardsp_conv_pcm162mulaw (char * out, int16_t * in, size_t len);
170
[874]171__END_DECLS
172
[651]173#endif
174
175//ll
Note: See TracBrowser for help on using the repository browser.