This allows to inline it in af_afir.c (regardless of interposing); moreover it removes a dependency of the checkasm test on lavfi/af_afir.o.
Unified · Split
| @@ -110,23 +110,6 @@ typedef struct AudioFIRContext { · 109 unmodified lines | |||
| 110 | AVFloatDSPContext *fdsp; | 110 | AVFloatDSPContext *fdsp; |
| 111 | } AudioFIRContext; | 111 | } AudioFIRContext; |
| 112 | 112 | ||
| 113 | static void fcmul_add_c(float *sum, const float *t, const float *c, ptrdiff_t len) | ||
| 114 | { | ||
| 115 | int n; | ||
| 116 | |||
| 117 | for (n = 0; n < len; n++) { | ||
| 118 | const float cre = c[2 * n ]; | ||
| 119 | const float cim = c[2 * n + 1]; | ||
| 120 | const float tre = t[2 * n ]; | ||
| 121 | const float tim = t[2 * n + 1]; | ||
| 122 | |||
| 123 | sum[2 * n ] += tre * cre - tim * cim; | ||
| 124 | sum[2 * n + 1] += tre * cim + tim * cre; | ||
| 125 | } | ||
| 126 | |||
| 127 | sum[2 * n] += t[2 * n] * c[2 * n]; | ||
| 128 | } | ||
| 129 | |||
| 130 | static void direct(const float *in, const AVComplexFloat *ir, int len, float *out) | 113 | static void direct(const float *in, const AVComplexFloat *ir, int len, float *out) |
| 131 | { | 114 | { |
| 132 | for (int n = 0; n < len; n++) | 115 | for (int n = 0; n < len; n++) |
| @@ -884,14 +867,6 @@ static int config_video(AVFilterLink *outlink) · 751 unmodified lines | |||
| 884 | return 0; | 867 | return 0; |
| 885 | } | 868 | } |
| 886 | 869 | ||
| 887 | void ff_afir_init(AudioFIRDSPContext *dsp) | ||
| 888 | { | ||
| 889 | dsp->fcmul_add = fcmul_add_c; | ||
| 890 | |||
| 891 | if (ARCH_X86) | ||
| 892 | ff_afir_init_x86(dsp); | ||
| 893 | } | ||
| 894 | |||
| 895 | static av_cold int init(AVFilterContext *ctx) | 870 | static av_cold int init(AVFilterContext *ctx) |
| 896 | { | 871 | { |
| 897 | AudioFIRContext *s = ctx->priv; | 872 | AudioFIRContext *s = ctx->priv; |
| @@ -23,12 +23,39 @@ · 22 unmodified lines | |||
| 23 | 23 | ||
| 24 | #include <stddef.h> | 24 | #include <stddef.h> |
| 25 | 25 | ||
| 26 | #include "config.h" | ||
| 27 | #include "libavutil/attributes.h" | ||
| 28 | |||
| 26 | typedef struct AudioFIRDSPContext { | 29 | typedef struct AudioFIRDSPContext { |
| 27 | void (*fcmul_add)(float *sum, const float *t, const float *c, | 30 | void (*fcmul_add)(float *sum, const float *t, const float *c, |
| 28 | ptrdiff_t len); | 31 | ptrdiff_t len); |
| 29 | } AudioFIRDSPContext; | 32 | } AudioFIRDSPContext; |
| 30 | 33 | ||
| 31 | void ff_afir_init(AudioFIRDSPContext *s); | ||
| 32 | void ff_afir_init_x86(AudioFIRDSPContext *s); | 34 | void ff_afir_init_x86(AudioFIRDSPContext *s); |
| 33 | 35 | ||
| 36 | static void fcmul_add_c(float *sum, const float *t, const float *c, ptrdiff_t len) | ||
| 37 | { | ||
| 38 | int n; | ||
| 39 | |||
| 40 | for (n = 0; n < len; n++) { | ||
| 41 | const float cre = c[2 * n ]; | ||
| 42 | const float cim = c[2 * n + 1]; | ||
| 43 | const float tre = t[2 * n ]; | ||
| 44 | const float tim = t[2 * n + 1]; | ||
| 45 | |||
| 46 | sum[2 * n ] += tre * cre - tim * cim; | ||
| 47 | sum[2 * n + 1] += tre * cim + tim * cre; | ||
| 48 | } | ||
| 49 | |||
| 50 | sum[2 * n] += t[2 * n] * c[2 * n]; | ||
| 51 | } | ||
| 52 | |||
| 53 | static av_unused void ff_afir_init(AudioFIRDSPContext *dsp) | ||
| 54 | { | ||
| 55 | dsp->fcmul_add = fcmul_add_c; | ||
| 56 | |||
| 57 | if (ARCH_X86) | ||
| 58 | ff_afir_init_x86(dsp); | ||
| 59 | } | ||
| 60 | |||
| 34 | #endif /* AVFILTER_AFIRDSP_H */ | 61 | #endif /* AVFILTER_AFIRDSP_H */ |