source: roaraudio/include/libroardsp/libroardsp.h @ 1371:627e04850477

Last change on this file since 1371:627e04850477 was 1371:627e04850477, checked in by phi, 15 years ago

moved convert.h from libroar to libroardsp

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