summaryrefslogtreecommitdiff
path: root/libswresample/resample_dsp.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2014-07-02 22:16:48 -0300
committerMichael Niedermayer <michaelni@gmx.at>2014-07-04 01:37:41 +0200
commit857cd1f33bcf86005529af2a77f861f884327be5 (patch)
tree519ce6e41cfa927c419131481d509c85b6f20eec /libswresample/resample_dsp.c
parent5c65aed7fdfba6d5488bae4b50b9df8829587818 (diff)
downloadffmpeg-857cd1f33bcf86005529af2a77f861f884327be5.tar.gz
swr: initialize only the necessary resample dsp functions
Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswresample/resample_dsp.c')
-rw-r--r--libswresample/resample_dsp.c33
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);
}