source: roaraudio/include/libroardsp/libroardsp.h @ 2315:1907cbac71d4

Last change on this file since 2315:1907cbac71d4 was 2294:9adc96723874, checked in by phi, 15 years ago

started with transcode_speex.h

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