diff options
Diffstat (limited to 'libswresample/resample_dsp.c')
-rw-r--r-- | libswresample/resample_dsp.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/libswresample/resample_dsp.c b/libswresample/resample_dsp.c index f12b6b171a..a811b8b6fa 100644 --- a/libswresample/resample_dsp.c +++ b/libswresample/resample_dsp.c @@ -45,21 +45,24 @@ void swri_resample_dsp_init(ResampleContext *c) { -#define FNIDX(fmt) (AV_SAMPLE_FMT_##fmt - AV_SAMPLE_FMT_S16P) - c->dsp.resample_one[FNIDX(S16P)] = (resample_one_fn) resample_one_int16; - c->dsp.resample_one[FNIDX(S32P)] = (resample_one_fn) resample_one_int32; - c->dsp.resample_one[FNIDX(FLTP)] = (resample_one_fn) resample_one_float; - c->dsp.resample_one[FNIDX(DBLP)] = (resample_one_fn) resample_one_double; - - c->dsp.resample_common[FNIDX(S16P)] = (resample_fn) resample_common_int16; - c->dsp.resample_common[FNIDX(S32P)] = (resample_fn) resample_common_int32; - c->dsp.resample_common[FNIDX(FLTP)] = (resample_fn) resample_common_float; - c->dsp.resample_common[FNIDX(DBLP)] = (resample_fn) resample_common_double; - - c->dsp.resample_linear[FNIDX(S16P)] = (resample_fn) resample_linear_int16; - c->dsp.resample_linear[FNIDX(S32P)] = (resample_fn) resample_linear_int32; - c->dsp.resample_linear[FNIDX(FLTP)] = (resample_fn) resample_linear_float; - c->dsp.resample_linear[FNIDX(DBLP)] = (resample_fn) resample_linear_double; + switch(c->format){ + case AV_SAMPLE_FMT_S16P: + c->dsp.resample_one = resample_one_int16; + c->dsp.resample = c->linear ? resample_linear_int16 : resample_common_int16; + break; + case AV_SAMPLE_FMT_S32P: + c->dsp.resample_one = resample_one_int32; + c->dsp.resample = c->linear ? resample_linear_int32 : resample_common_int32; + break; + case AV_SAMPLE_FMT_FLTP: + c->dsp.resample_one = resample_one_float; + c->dsp.resample = c->linear ? resample_linear_float : resample_common_float; + break; + case AV_SAMPLE_FMT_DBLP: + c->dsp.resample_one = resample_one_double; + c->dsp.resample = c->linear ? resample_linear_double : resample_common_double; + break; + } if (ARCH_X86) swri_resample_dsp_x86_init(c); } |