[FFmpeg-devel] [PATCH 08/10] avfilter/vf_threshold: Move ff_threshold_init into a header

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Tue May 3 09:37:49 EEST 2022


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 at outlook.com>
---
 libavfilter/threshold.h         |  1 -
 libavfilter/vf_threshold.c      | 66 +-----------------------
 libavfilter/vf_threshold_init.h | 91 +++++++++++++++++++++++++++++++++
 tests/checkasm/vf_threshold.c   |  2 +-
 4 files changed, 93 insertions(+), 67 deletions(-)
 create mode 100644 libavfilter/vf_threshold_init.h

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"
 
-- 
2.32.0



More information about the ffmpeg-devel mailing list