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