X-Git-Url: http://git.videolan.org/?p=ffmpeg.git;a=blobdiff_plain;f=libswresample%2Fresample_dsp.c;h=a811b8b6fa8eab8c1568a29f633136aed3ece2bb;hp=a3b600f12fc2345ce7bf7f37fafdea339c5b9dc5;hb=857cd1f33bcf86005529af2a77f861f884327be5;hpb=7f4dfbd0809db97f6abafba7b9361278dfa2e994 diff --git a/libswresample/resample_dsp.c b/libswresample/resample_dsp.c index a3b600f12f..a811b8b6fa 100644 --- a/libswresample/resample_dsp.c +++ b/libswresample/resample_dsp.c @@ -27,17 +27,6 @@ #include "resample.h" -int swri_resample_common_int16 (ResampleContext *c, int16_t *dst, const int16_t *src, int n, int update_ctx); -int swri_resample_common_int32 (ResampleContext *c, int32_t *dst, const int32_t *src, int n, int update_ctx); -int swri_resample_common_float (ResampleContext *c, float *dst, const float *src, int n, int update_ctx); -int swri_resample_common_double(ResampleContext *c, double *dst, const double *src, int n, int update_ctx); -int swri_resample_linear_int16 (ResampleContext *c, int16_t *dst, const int16_t *src, int n, int update_ctx); -int swri_resample_linear_int32 (ResampleContext *c, int32_t *dst, const int32_t *src, int n, int update_ctx); -int swri_resample_linear_float (ResampleContext *c, float *dst, const float *src, int n, int update_ctx); -int swri_resample_linear_double(ResampleContext *c, double *dst, const double *src, int n, int update_ctx); - -#define DO_RESAMPLE_ONE 1 - #define TEMPLATE_RESAMPLE_S16 #include "resample_template.c" #undef TEMPLATE_RESAMPLE_S16 @@ -54,25 +43,26 @@ int swri_resample_linear_double(ResampleContext *c, double *dst, const double #include "resample_template.c" #undef TEMPLATE_RESAMPLE_DBL -#undef DO_RESAMPLE_ONE - -void swresample_dsp_init(ResampleContext *c) +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) swri_resample_common_int16; - c->dsp.resample_common[FNIDX(S32P)] = (resample_fn) swri_resample_common_int32; - c->dsp.resample_common[FNIDX(FLTP)] = (resample_fn) swri_resample_common_float; - c->dsp.resample_common[FNIDX(DBLP)] = (resample_fn) swri_resample_common_double; - - c->dsp.resample_linear[FNIDX(S16P)] = (resample_fn) swri_resample_linear_int16; - c->dsp.resample_linear[FNIDX(S32P)] = (resample_fn) swri_resample_linear_int32; - c->dsp.resample_linear[FNIDX(FLTP)] = (resample_fn) swri_resample_linear_float; - c->dsp.resample_linear[FNIDX(DBLP)] = (resample_fn) swri_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) swresample_dsp_x86_init(c); + if (ARCH_X86) swri_resample_dsp_x86_init(c); }