summaryrefslogtreecommitdiff
path: root/libavfilter/af_afirdsp.h
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-03 07:12:06 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-06 05:19:49 +0200
commitea398201f9db227ee5ff19158b34448aae0a3b5c (patch)
treeff4976bb3930cbc54a061c9a6fbe7b8d01291418 /libavfilter/af_afirdsp.h
parent0df18f29ae218f30b3ecff7c930176b8ebee56aa (diff)
avfilter/af_afir: Move ff_afir_init() to header
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. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavfilter/af_afirdsp.h')
-rw-r--r--libavfilter/af_afirdsp.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/libavfilter/af_afirdsp.h b/libavfilter/af_afirdsp.h
index f72ab7cd02..05182bebb4 100644
--- a/libavfilter/af_afirdsp.h
+++ b/libavfilter/af_afirdsp.h
@@ -23,12 +23,39 @@
#include <stddef.h>
+#include "config.h"
+#include "libavutil/attributes.h"
+
typedef struct AudioFIRDSPContext {
void (*fcmul_add)(float *sum, const float *t, const float *c,
ptrdiff_t len);
} AudioFIRDSPContext;
-void ff_afir_init(AudioFIRDSPContext *s);
void ff_afir_init_x86(AudioFIRDSPContext *s);
+static void fcmul_add_c(float *sum, const float *t, const float *c, ptrdiff_t len)
+{
+ int n;
+
+ for (n = 0; n < len; n++) {
+ const float cre = c[2 * n ];
+ const float cim = c[2 * n + 1];
+ const float tre = t[2 * n ];
+ const float tim = t[2 * n + 1];
+
+ sum[2 * n ] += tre * cre - tim * cim;
+ sum[2 * n + 1] += tre * cim + tim * cre;
+ }
+
+ sum[2 * n] += t[2 * n] * c[2 * n];
+}
+
+static av_unused void ff_afir_init(AudioFIRDSPContext *dsp)
+{
+ dsp->fcmul_add = fcmul_add_c;
+
+ if (ARCH_X86)
+ ff_afir_init_x86(dsp);
+}
+
#endif /* AVFILTER_AFIRDSP_H */