]> git.sesse.net Git - ffmpeg/blobdiff - libswresample/resample_dsp.c
Merge commit '5adcef9c1bf701ba2dd43363ae983ba6d74bdb9a'
[ffmpeg] / libswresample / resample_dsp.c
index f12b6b171a77f81eb36106392dc2e2fc96cdc882..a811b8b6fa8eab8c1568a29f633136aed3ece2bb 100644 (file)
 
 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);
 }