#ifndef _RESAMPLER_H_ #define _RESAMPLER_H_ /* Copyright (C) 2004-2008 Shay Green. Copyright (C) 2021-2022 Christopher Snowhill. This module is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this module; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #define RESAMPLER_BITS 32 #define RESAMPLER_DECORATE vgmplay #ifdef RESAMPLER_DECORATE #undef PASTE #undef EVALUATE #define PASTE(a,b) a ## b #define EVALUATE(a,b) PASTE(a,b) #define resampler_create EVALUATE(RESAMPLER_DECORATE,_resampler_create) #define resampler_dup EVALUATE(RESAMPLER_DECORATE,_resampler_dup) #define resampler_destroy EVALUATE(RESAMPLER_DECORATE,_resampler_destroy) #define resampler_clear EVALUATE(RESAMPLER_DECORATE,_resampler_clear) #define resampler_set_rate EVALUATE(RESAMPLER_DECORATE,_resampler_set_rate) #define resampler_get_free EVALUATE(RESAMPLER_DECORATE,_resampler_get_free) #define resampler_get_min_fill EVALUATE(RESAMPLER_DECORATE,_resampler_get_min_fill) #define resampler_write_pair EVALUATE(RESAMPLER_DECORATE,_resampler_write_pair) #define resampler_get_avail EVALUATE(RESAMPLER_DECORATE,_resampler_get_avail) #define resampler_read_pair EVALUATE(RESAMPLER_DECORATE,_resampler_read_pair) #define resampler_peek_pair EVALUATE(RESAMPLER_DECORATE,_resampler_peek_pair) #endif #include #if RESAMPLER_BITS == 16 typedef int16_t sample_t; #elif RESAMPLER_BITS == 32 typedef int32_t sample_t; #else #error Choose a bit depth! #endif #ifdef __cplusplus extern "C" { #endif void * resampler_create(); void * resampler_dup(void *); void resampler_destroy(void *); void resampler_clear(void *); void resampler_set_rate( void *, double new_factor ); int resampler_get_free(void *); int resampler_get_min_fill(void *); void resampler_write_pair(void *, sample_t ls, sample_t rs); int resampler_get_avail(void *); void resampler_read_pair( void *, sample_t *ls, sample_t *rs ); void resampler_peek_pair( void *, sample_t *ls, sample_t *rs ); #ifdef __cplusplus } #endif #endif