39 #ifndef SPEEX_RESAMPLER_H 40 #define SPEEX_RESAMPLER_H 51 #error "Please define RANDOM_PREFIX (above) to something specific to your project to prevent symbol name clashes" 54 #define CAT_PREFIX2(a,b) a ## b 55 #define CAT_PREFIX(a,b) CAT_PREFIX2(a, b) 57 #define speex_resampler_init CAT_PREFIX(RANDOM_PREFIX,_resampler_init) 58 #define speex_resampler_init_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_init_frac) 59 #define speex_resampler_destroy CAT_PREFIX(RANDOM_PREFIX,_resampler_destroy) 60 #define speex_resampler_process_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_float) 61 #define speex_resampler_process_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_int) 62 #define speex_resampler_process_interleaved_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_float) 63 #define speex_resampler_process_interleaved_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_int) 64 #define speex_resampler_set_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate) 65 #define speex_resampler_get_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_get_rate) 66 #define speex_resampler_set_rate_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate_frac) 67 #define speex_resampler_get_ratio CAT_PREFIX(RANDOM_PREFIX,_resampler_get_ratio) 68 #define speex_resampler_set_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_set_quality) 69 #define speex_resampler_get_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_get_quality) 70 #define speex_resampler_set_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_input_stride) 71 #define speex_resampler_get_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_stride) 72 #define speex_resampler_set_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_output_stride) 73 #define speex_resampler_get_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_output_stride) 74 #define speex_resampler_get_input_latency CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_latency) 75 #define speex_resampler_get_output_latency CAT_PREFIX(RANDOM_PREFIX,_resampler_get_output_latency) 76 #define speex_resampler_skip_zeros CAT_PREFIX(RANDOM_PREFIX,_resampler_skip_zeros) 77 #define speex_resampler_reset_mem CAT_PREFIX(RANDOM_PREFIX,_resampler_reset_mem) 78 #define speex_resampler_strerror CAT_PREFIX(RANDOM_PREFIX,_resampler_strerror) 80 #define spx_int16_t short 81 #define spx_int32_t int 82 #define spx_uint16_t unsigned short 83 #define spx_uint32_t unsigned int 95 #define SPEEX_RESAMPLER_QUALITY_MAX 10 96 #define SPEEX_RESAMPLER_QUALITY_MIN 0 97 #define SPEEX_RESAMPLER_QUALITY_DEFAULT 4 98 #define SPEEX_RESAMPLER_QUALITY_VOIP 3 99 #define SPEEX_RESAMPLER_QUALITY_DESKTOP 5 102 RESAMPLER_ERR_SUCCESS = 0,
103 RESAMPLER_ERR_ALLOC_FAILED = 1,
104 RESAMPLER_ERR_BAD_STATE = 2,
105 RESAMPLER_ERR_INVALID_ARG = 3,
106 RESAMPLER_ERR_PTR_OVERLAP = 4,
108 RESAMPLER_ERR_MAX_ERROR
111 struct SpeexResamplerState_;
112 typedef struct SpeexResamplerState_ SpeexResamplerState;
123 SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels,
124 spx_uint32_t in_rate,
125 spx_uint32_t out_rate,
142 SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels,
143 spx_uint32_t ratio_num,
144 spx_uint32_t ratio_den,
145 spx_uint32_t in_rate,
146 spx_uint32_t out_rate,
153 void speex_resampler_destroy(SpeexResamplerState *st);
165 int speex_resampler_process_float(SpeexResamplerState *st,
166 spx_uint32_t channel_index,
168 spx_uint32_t *in_len,
170 spx_uint32_t *out_len);
182 int speex_resampler_process_int(SpeexResamplerState *st,
183 spx_uint32_t channel_index,
184 const spx_int16_t *in,
185 spx_uint32_t *in_len,
187 spx_uint32_t *out_len);
198 int speex_resampler_process_interleaved_float(SpeexResamplerState *st,
200 spx_uint32_t *in_len,
202 spx_uint32_t *out_len);
213 int speex_resampler_process_interleaved_int(SpeexResamplerState *st,
214 const spx_int16_t *in,
215 spx_uint32_t *in_len,
217 spx_uint32_t *out_len);
224 int speex_resampler_set_rate(SpeexResamplerState *st,
225 spx_uint32_t in_rate,
226 spx_uint32_t out_rate);
233 void speex_resampler_get_rate(SpeexResamplerState *st,
234 spx_uint32_t *in_rate,
235 spx_uint32_t *out_rate);
245 int speex_resampler_set_rate_frac(SpeexResamplerState *st,
246 spx_uint32_t ratio_num,
247 spx_uint32_t ratio_den,
248 spx_uint32_t in_rate,
249 spx_uint32_t out_rate);
257 void speex_resampler_get_ratio(SpeexResamplerState *st,
258 spx_uint32_t *ratio_num,
259 spx_uint32_t *ratio_den);
266 int speex_resampler_set_quality(SpeexResamplerState *st,
274 void speex_resampler_get_quality(SpeexResamplerState *st,
281 void speex_resampler_set_input_stride(SpeexResamplerState *st,
282 spx_uint32_t stride);
288 void speex_resampler_get_input_stride(SpeexResamplerState *st,
289 spx_uint32_t *stride);
295 void speex_resampler_set_output_stride(SpeexResamplerState *st,
296 spx_uint32_t stride);
302 void speex_resampler_get_output_stride(SpeexResamplerState *st,
303 spx_uint32_t *stride);
308 int speex_resampler_get_input_latency(SpeexResamplerState *st);
313 int speex_resampler_get_output_latency(SpeexResamplerState *st);
323 int speex_resampler_skip_zeros(SpeexResamplerState *st);
328 int speex_resampler_reset_mem(SpeexResamplerState *st);
334 const char *speex_resampler_strerror(
int err);