2 * Copyright (C) 2007-2008 Sebastian Dröge <sebastian.droege@collabora.co.uk>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
20 #ifndef __SPEEX_RESAMPLER_WRAPPER_H__
21 #define __SPEEX_RESAMPLER_WRAPPER_H__
23 #define SPEEX_RESAMPLER_QUALITY_MAX 10
24 #define SPEEX_RESAMPLER_QUALITY_MIN 0
25 #define SPEEX_RESAMPLER_QUALITY_DEFAULT 4
26 #define SPEEX_RESAMPLER_QUALITY_VOIP 3
27 #define SPEEX_RESAMPLER_QUALITY_DESKTOP 5
31 RESAMPLER_ERR_SUCCESS = 0,
32 RESAMPLER_ERR_ALLOC_FAILED = 1,
33 RESAMPLER_ERR_BAD_STATE = 2,
34 RESAMPLER_ERR_INVALID_ARG = 3,
35 RESAMPLER_ERR_PTR_OVERLAP = 4,
37 RESAMPLER_ERR_MAX_ERROR
40 typedef struct SpeexResamplerState_ SpeexResamplerState;
43 SpeexResamplerState *(*init) (guint32 nb_channels,
44 guint32 in_rate, guint32 out_rate, gint quality, gint * err);
45 void (*destroy) (SpeexResamplerState * st);
46 int (*process) (SpeexResamplerState *
47 st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
48 int (*set_rate) (SpeexResamplerState * st,
49 guint32 in_rate, guint32 out_rate);
50 void (*get_rate) (SpeexResamplerState * st,
51 guint32 * in_rate, guint32 * out_rate);
52 void (*get_ratio) (SpeexResamplerState * st,
53 guint32 * ratio_num, guint32 * ratio_den);
54 int (*get_input_latency) (SpeexResamplerState * st);
55 int (*set_quality) (SpeexResamplerState * st, gint quality);
56 int (*reset_mem) (SpeexResamplerState * st);
57 int (*skip_zeros) (SpeexResamplerState * st);
58 const char * (*strerror) (gint err);
62 SpeexResamplerState *resample_float_resampler_init (guint32 nb_channels,
63 guint32 in_rate, guint32 out_rate, gint quality, gint * err);
64 void resample_float_resampler_destroy (SpeexResamplerState * st);
65 int resample_float_resampler_process_interleaved_float (SpeexResamplerState *
66 st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
67 int resample_float_resampler_set_rate (SpeexResamplerState * st,
68 guint32 in_rate, guint32 out_rate);
69 void resample_float_resampler_get_rate (SpeexResamplerState * st,
70 guint32 * in_rate, guint32 * out_rate);
71 void resample_float_resampler_get_ratio (SpeexResamplerState * st,
72 guint32 * ratio_num, guint32 * ratio_den);
73 int resample_float_resampler_get_input_latency (SpeexResamplerState * st);
74 int resample_float_resampler_set_quality (SpeexResamplerState * st, gint quality);
75 int resample_float_resampler_reset_mem (SpeexResamplerState * st);
76 int resample_float_resampler_skip_zeros (SpeexResamplerState * st);
77 const char * resample_float_resampler_strerror (gint err);
79 static const SpeexResampleFuncs float_funcs =
81 resample_float_resampler_init,
82 resample_float_resampler_destroy,
83 resample_float_resampler_process_interleaved_float,
84 resample_float_resampler_set_rate,
85 resample_float_resampler_get_rate,
86 resample_float_resampler_get_ratio,
87 resample_float_resampler_get_input_latency,
88 resample_float_resampler_set_quality,
89 resample_float_resampler_reset_mem,
90 resample_float_resampler_skip_zeros,
91 resample_float_resampler_strerror,
95 SpeexResamplerState *resample_double_resampler_init (guint32 nb_channels,
96 guint32 in_rate, guint32 out_rate, gint quality, gint * err);
97 void resample_double_resampler_destroy (SpeexResamplerState * st);
98 int resample_double_resampler_process_interleaved_float (SpeexResamplerState *
99 st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
100 int resample_double_resampler_set_rate (SpeexResamplerState * st,
101 guint32 in_rate, guint32 out_rate);
102 void resample_double_resampler_get_rate (SpeexResamplerState * st,
103 guint32 * in_rate, guint32 * out_rate);
104 void resample_double_resampler_get_ratio (SpeexResamplerState * st,
105 guint32 * ratio_num, guint32 * ratio_den);
106 int resample_double_resampler_get_input_latency (SpeexResamplerState * st);
107 int resample_double_resampler_set_quality (SpeexResamplerState * st, gint quality);
108 int resample_double_resampler_reset_mem (SpeexResamplerState * st);
109 int resample_double_resampler_skip_zeros (SpeexResamplerState * st);
110 const char * resample_double_resampler_strerror (gint err);
112 static const SpeexResampleFuncs double_funcs =
114 resample_double_resampler_init,
115 resample_double_resampler_destroy,
116 resample_double_resampler_process_interleaved_float,
117 resample_double_resampler_set_rate,
118 resample_double_resampler_get_rate,
119 resample_double_resampler_get_ratio,
120 resample_double_resampler_get_input_latency,
121 resample_double_resampler_set_quality,
122 resample_double_resampler_reset_mem,
123 resample_double_resampler_skip_zeros,
124 resample_double_resampler_strerror,
128 SpeexResamplerState *resample_int_resampler_init (guint32 nb_channels,
129 guint32 in_rate, guint32 out_rate, gint quality, gint * err);
130 void resample_int_resampler_destroy (SpeexResamplerState * st);
131 int resample_int_resampler_process_interleaved_int (SpeexResamplerState *
132 st, const guint8 * in, guint32 * in_len, guint8 * out, guint32 * out_len);
133 int resample_int_resampler_set_rate (SpeexResamplerState * st,
134 guint32 in_rate, guint32 out_rate);
135 void resample_int_resampler_get_rate (SpeexResamplerState * st,
136 guint32 * in_rate, guint32 * out_rate);
137 void resample_int_resampler_get_ratio (SpeexResamplerState * st,
138 guint32 * ratio_num, guint32 * ratio_den);
139 int resample_int_resampler_get_input_latency (SpeexResamplerState * st);
140 int resample_int_resampler_set_quality (SpeexResamplerState * st, gint quality);
141 int resample_int_resampler_reset_mem (SpeexResamplerState * st);
142 int resample_int_resampler_skip_zeros (SpeexResamplerState * st);
143 const char * resample_int_resampler_strerror (gint err);
145 static const SpeexResampleFuncs int_funcs =
147 resample_int_resampler_init,
148 resample_int_resampler_destroy,
149 resample_int_resampler_process_interleaved_int,
150 resample_int_resampler_set_rate,
151 resample_int_resampler_get_rate,
152 resample_int_resampler_get_ratio,
153 resample_int_resampler_get_input_latency,
154 resample_int_resampler_set_quality,
155 resample_int_resampler_reset_mem,
156 resample_int_resampler_skip_zeros,
157 resample_int_resampler_strerror,
161 #endif /* __SPEEX_RESAMPLER_WRAPPER_H__ */