/* Copyright 2012 Dietrich Epp */ #include "defs.h" #include "filter.h" #include "resample.h" #include "resample_func.h" namespace { template void helper(lfr_fixed_t* pos, lfr_fixed_t inv_ratio, unsigned* dither, void* out, int outlen, const void* in, int inlen, const lfr_filter* filter) { return func(*pos, inv_ratio, *dither, out, outlen, in, inlen, *filter); } } lfr_resample_func_t lfr_resample_s16func(int nchan, const struct lfr_filter *filter) { const auto ftype = filter->type; switch (nchan) { case 1: switch (ftype) { case LFR_FTYPE_S16: return helper>; case LFR_FTYPE_F32: return helper>; default: break; } break; case 2: switch (ftype) { case LFR_FTYPE_S16: return helper>; case LFR_FTYPE_F32: return helper>; default: break; } break; default: break; } return NULL; }