/** * @file rem_auresamp.h Audio Resampling * * Copyright (C) 2010 Creytiv.com */ /** * Defines the audio resampler handler * * @param outv Output samples * @param inv Input samples * @param inc Number of input samples * @param ratio Resample ratio */ typedef void (auresamp_h)(int16_t *outv, const int16_t *inv, size_t inc, unsigned ratio); /** Defines the resampler state */ struct auresamp { struct fir fir; /**< FIR filter state */ auresamp_h *resample; /**< Resample handler */ const int16_t *tapv; /**< FIR filter taps */ size_t tapc; /**< FIR filter tap count */ uint32_t orate, irate; /**< Input/output sample rate */ unsigned och, ich; /**< Input/output channel count */ unsigned ratio; /**< Resample ratio */ bool up; /**< Up/down sample flag */ }; void auresamp_init(struct auresamp *rs); int auresamp_setup(struct auresamp *rs, uint32_t irate, unsigned ich, uint32_t orate, unsigned och); int auresamp(struct auresamp *rs, int16_t *outv, size_t *outc, const int16_t *inv, size_t inc);