summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-03 07:24:38 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-06 05:19:50 +0200
commit11e37539ee0a91ad36973c4292ab95db910b2aac (patch)
treef76f51640ca267965869348da4b908822ab5cb38
parentc499f9bc38506443550716761158fe00bb655224 (diff)
avfilter/vf_threshold: Move ff_threshold_init into a header
This removes a dependency of checkasm on lavfi/vf_threshold.o and also allows to inline ff_threshold_init() irrespectively of interposing. With this patch checkasm no longer pulls all of lavfi and lavf in. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavfilter/threshold.h1
-rw-r--r--libavfilter/vf_threshold.c66
-rw-r--r--libavfilter/vf_threshold_init.h91
-rw-r--r--tests/checkasm/vf_threshold.c2
4 files changed, 93 insertions, 67 deletions
diff --git a/libavfilter/threshold.h b/libavfilter/threshold.h
index 775a9f9cae..8b55ad6ba1 100644
--- a/libavfilter/threshold.h
+++ b/libavfilter/threshold.h
@@ -46,7 +46,6 @@ typedef struct ThresholdContext {
FFFrameSync fs;
} ThresholdContext;
-void ff_threshold_init(ThresholdContext *s);
void ff_threshold_init_x86(ThresholdContext *s);
#endif /* AVFILTER_THRESHOLD_H */
diff --git a/libavfilter/vf_threshold.c b/libavfilter/vf_threshold.c
index 2a0add4a8f..dc73c277d3 100644
--- a/libavfilter/vf_threshold.c
+++ b/libavfilter/vf_threshold.c
@@ -32,6 +32,7 @@
#include "internal.h"
#include "video.h"
#include "threshold.h"
+#include "vf_threshold_init.h"
#define OFFSET(x) offsetof(ThresholdContext, x)
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
@@ -150,57 +151,6 @@ static int process_frame(FFFrameSync *fs)
return ff_filter_frame(outlink, out);
}
-static void threshold8(const uint8_t *in, const uint8_t *threshold,
- const uint8_t *min, const uint8_t *max,
- uint8_t *out,
- ptrdiff_t ilinesize, ptrdiff_t tlinesize,
- ptrdiff_t flinesize, ptrdiff_t slinesize,
- ptrdiff_t olinesize,
- int w, int h)
-{
- int x, y;
-
- for (y = 0; y < h; y++) {
- for (x = 0; x < w; x++) {
- out[x] = in[x] < threshold[x] ? min[x] : max[x];
- }
-
- in += ilinesize;
- threshold += tlinesize;
- min += flinesize;
- max += slinesize;
- out += olinesize;
- }
-}
-
-static void threshold16(const uint8_t *iin, const uint8_t *tthreshold,
- const uint8_t *ffirst, const uint8_t *ssecond,
- uint8_t *oout,
- ptrdiff_t ilinesize, ptrdiff_t tlinesize,
- ptrdiff_t flinesize, ptrdiff_t slinesize,
- ptrdiff_t olinesize,
- int w, int h)
-{
- const uint16_t *in = (const uint16_t *)iin;
- const uint16_t *threshold = (const uint16_t *)tthreshold;
- const uint16_t *min = (const uint16_t *)ffirst;
- const uint16_t *max = (const uint16_t *)ssecond;
- uint16_t *out = (uint16_t *)oout;
- int x, y;
-
- for (y = 0; y < h; y++) {
- for (x = 0; x < w; x++) {
- out[x] = in[x] < threshold[x] ? min[x] : max[x];
- }
-
- in += ilinesize / 2;
- threshold += tlinesize / 2;
- min += flinesize / 2;
- max += slinesize / 2;
- out += olinesize / 2;
- }
-}
-
static int config_input(AVFilterLink *inlink)
{
AVFilterContext *ctx = inlink->dst;
@@ -223,20 +173,6 @@ static int config_input(AVFilterLink *inlink)
return 0;
}
-void ff_threshold_init(ThresholdContext *s)
-{
- if (s->depth == 8) {
- s->threshold = threshold8;
- s->bpc = 1;
- } else {
- s->threshold = threshold16;
- s->bpc = 2;
- }
-
- if (ARCH_X86)
- ff_threshold_init_x86(s);
-}
-
static int config_output(AVFilterLink *outlink)
{
AVFilterContext *ctx = outlink->src;
diff --git a/libavfilter/vf_threshold_init.h b/libavfilter/vf_threshold_init.h
new file mode 100644
index 0000000000..e79d2bb63d
--- /dev/null
+++ b/libavfilter/vf_threshold_init.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2016 Paul B Mahol
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVFILTER_THRESHOLD_INIT_H
+#define AVFILTER_THRESHOLD_INIT_H
+
+#include <stdint.h>
+#include <stddef.h>
+
+#include "config.h"
+#include "libavutil/attributes.h"
+#include "threshold.h"
+
+static void threshold8(const uint8_t *in, const uint8_t *threshold,
+ const uint8_t *min, const uint8_t *max,
+ uint8_t *out,
+ ptrdiff_t ilinesize, ptrdiff_t tlinesize,
+ ptrdiff_t flinesize, ptrdiff_t slinesize,
+ ptrdiff_t olinesize,
+ int w, int h)
+{
+ for (int y = 0; y < h; y++) {
+ for (int x = 0; x < w; x++)
+ out[x] = in[x] < threshold[x] ? min[x] : max[x];
+
+ in += ilinesize;
+ threshold += tlinesize;
+ min += flinesize;
+ max += slinesize;
+ out += olinesize;
+ }
+}
+
+static void threshold16(const uint8_t *iin, const uint8_t *tthreshold,
+ const uint8_t *ffirst, const uint8_t *ssecond,
+ uint8_t *oout,
+ ptrdiff_t ilinesize, ptrdiff_t tlinesize,
+ ptrdiff_t flinesize, ptrdiff_t slinesize,
+ ptrdiff_t olinesize,
+ int w, int h)
+{
+ const uint16_t *in = (const uint16_t *)iin;
+ const uint16_t *threshold = (const uint16_t *)tthreshold;
+ const uint16_t *min = (const uint16_t *)ffirst;
+ const uint16_t *max = (const uint16_t *)ssecond;
+ uint16_t *out = (uint16_t *)oout;
+
+ for (int y = 0; y < h; y++) {
+ for (int x = 0; x < w; x++)
+ out[x] = in[x] < threshold[x] ? min[x] : max[x];
+
+ in += ilinesize / 2;
+ threshold += tlinesize / 2;
+ min += flinesize / 2;
+ max += slinesize / 2;
+ out += olinesize / 2;
+ }
+}
+
+static av_unused void ff_threshold_init(ThresholdContext *s)
+{
+ if (s->depth == 8) {
+ s->threshold = threshold8;
+ s->bpc = 1;
+ } else {
+ s->threshold = threshold16;
+ s->bpc = 2;
+ }
+
+ if (ARCH_X86)
+ ff_threshold_init_x86(s);
+}
+
+#endif /* AVFILTER_THRESHOLD_INIT_H */
diff --git a/tests/checkasm/vf_threshold.c b/tests/checkasm/vf_threshold.c
index 2c5cc807ee..e6a425edfe 100644
--- a/tests/checkasm/vf_threshold.c
+++ b/tests/checkasm/vf_threshold.c
@@ -18,7 +18,7 @@
#include <string.h>
#include "checkasm.h"
-#include "libavfilter/threshold.h"
+#include "libavfilter/vf_threshold_init.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem_internal.h"