From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: [FFmpeg-devel] [PATCH 08/10] avfilter/vf_threshold: Move ff_threshold_init into a header
Date: Tue, 3 May 2022 08:37:49 +0200
Message-ID: <AS8PR01MB7944C446404DBE0B292C3AD38FC09@AS8PR01MB7944.eurprd01.prod.exchangelabs.com> (raw)
In-Reply-To: <AS8PR01MB7944F1A5A2DE2EE9898F81A28FC09@AS8PR01MB7944.eurprd01.prod.exchangelabs.com>
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>
---
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
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-05-03 6:39 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-03 6:18 [FFmpeg-devel] [PATCH 01/10] avfilter/af_afir: Only keep DSP stuff in header Andreas Rheinhardt
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 02/10] avfilter/af_afir: Move ff_afir_init() to header Andreas Rheinhardt
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 03/10] avfilter/vf_blend: Move ff_blend_init into a header Andreas Rheinhardt
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 04/10] avfilter/vf_eq: Move ff_nlmeans_init " Andreas Rheinhardt
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 05/10] avfilter/vf_gblur: Move ff_gblur_init " Andreas Rheinhardt
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 06/10] avfilter/vf_hflip: Move ff_hflip_init " Andreas Rheinhardt
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 07/10] avfilter/vf_nlmeans: Move ff_nlmeans_init " Andreas Rheinhardt
2022-05-13 6:28 ` Soft Works
2022-05-13 8:27 ` Andreas Rheinhardt
2022-05-13 9:00 ` Hendrik Leppkes
2022-05-13 9:03 ` Soft Works
2022-05-13 9:01 ` Soft Works
2022-05-13 9:13 ` Hendrik Leppkes
2022-05-13 9:25 ` Andreas Rheinhardt
2022-05-13 9:27 ` Hendrik Leppkes
2022-05-13 9:34 ` Soft Works
2022-05-13 9:32 ` Soft Works
2022-05-03 6:37 ` Andreas Rheinhardt [this message]
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 09/10] avcodec/v210_dec: Move ff_v210dec_init " Andreas Rheinhardt
2022-05-03 6:37 ` [FFmpeg-devel] [PATCH 10/10] avcodec/v210_enc: Move ff_v210enc_init " Andreas Rheinhardt
2022-05-05 1:55 ` [FFmpeg-devel] [PATCH 01/10] avfilter/af_afir: Only keep DSP stuff in header Andreas Rheinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=AS8PR01MB7944C446404DBE0B292C3AD38FC09@AS8PR01MB7944.eurprd01.prod.exchangelabs.com \
--to=andreas.rheinhardt@outlook.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git