aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/vf_gblur.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-03 07:19:35 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-06 05:19:49 +0200
commit24936a9fbb220a7ba4b1f3a80ceeca68f4f5f7d4 (patch)
treeb3ed25ccebdcdcc51a69cb290a83637815fc8741 /libavfilter/vf_gblur.c
parent8cd57648d113827da046a5361c2497a3e4413acb (diff)
downloadffmpeg-24936a9fbb220a7ba4b1f3a80ceeca68f4f5f7d4.tar.gz
avfilter/vf_gblur: Move ff_gblur_init into a header
This removes a dependency of checkasm on lavfi/vf_gblur.o and also allows to inline ff_gblur_init() irrespectively of interposing. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavfilter/vf_gblur.c')
-rw-r--r--libavfilter/vf_gblur.c89
1 files changed, 1 insertions, 88 deletions
diff --git a/libavfilter/vf_gblur.c b/libavfilter/vf_gblur.c
index fd664db057..b88a9a6d26 100644
--- a/libavfilter/vf_gblur.c
+++ b/libavfilter/vf_gblur.c
@@ -34,6 +34,7 @@
#include "formats.h"
#include "gblur.h"
#include "internal.h"
+#include "vf_gblur_init.h"
#include "video.h"
#define OFFSET(x) offsetof(GBlurContext, x)
@@ -54,37 +55,6 @@ typedef struct ThreadData {
int width;
} ThreadData;
-static void postscale_c(float *buffer, int length,
- float postscale, float min, float max)
-{
- for (int i = 0; i < length; i++) {
- buffer[i] *= postscale;
- buffer[i] = av_clipf(buffer[i], min, max);
- }
-}
-
-static void horiz_slice_c(float *buffer, int width, int height, int steps,
- float nu, float bscale, float *localbuf)
-{
- int step, x, y;
- float *ptr;
- for (y = 0; y < height; y++) {
- for (step = 0; step < steps; step++) {
- ptr = buffer + width * y;
- ptr[0] *= bscale;
-
- /* Filter rightwards */
- for (x = 1; x < width; x++)
- ptr[x] += nu * ptr[x - 1];
- ptr[x = width - 1] *= bscale;
-
- /* Filter leftwards */
- for (; x > 0; x--)
- ptr[x - 1] += nu * ptr[x];
- }
- }
-}
-
static int filter_horizontally(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
{
GBlurContext *s = ctx->priv;
@@ -108,53 +78,6 @@ static int filter_horizontally(AVFilterContext *ctx, void *arg, int jobnr, int n
return 0;
}
-static void do_vertical_columns(float *buffer, int width, int height,
- int column_begin, int column_end, int steps,
- float nu, float boundaryscale, int column_step)
-{
- const int numpixels = width * height;
- int i, x, k, step;
- float *ptr;
- for (x = column_begin; x < column_end;) {
- for (step = 0; step < steps; step++) {
- ptr = buffer + x;
- for (k = 0; k < column_step; k++) {
- ptr[k] *= boundaryscale;
- }
- /* Filter downwards */
- for (i = width; i < numpixels; i += width) {
- for (k = 0; k < column_step; k++) {
- ptr[i + k] += nu * ptr[i - width + k];
- }
- }
- i = numpixels - width;
-
- for (k = 0; k < column_step; k++)
- ptr[i + k] *= boundaryscale;
-
- /* Filter upwards */
- for (; i > 0; i -= width) {
- for (k = 0; k < column_step; k++)
- ptr[i - width + k] += nu * ptr[i + k];
- }
- }
- x += column_step;
- }
-}
-
-static void verti_slice_c(float *buffer, int width, int height,
- int slice_start, int slice_end, int steps,
- float nu, float boundaryscale)
-{
- int aligned_end = slice_start + (((slice_end - slice_start) >> 3) << 3);
- /* Filter vertically along columns (process 8 columns in each step) */
- do_vertical_columns(buffer, width, height, slice_start, aligned_end,
- steps, nu, boundaryscale, 8);
- /* Filter un-aligned columns one by one */
- do_vertical_columns(buffer, width, height, aligned_end, slice_end,
- steps, nu, boundaryscale, 1);
-}
-
static int filter_vertically(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
{
GBlurContext *s = ctx->priv;
@@ -239,16 +162,6 @@ static const enum AVPixelFormat pix_fmts[] = {
AV_PIX_FMT_NONE
};
-void ff_gblur_init(GBlurContext *s)
-{
- s->localbuf = NULL;
- s->horiz_slice = horiz_slice_c;
- s->verti_slice = verti_slice_c;
- s->postscale_slice = postscale_c;
- if (ARCH_X86)
- ff_gblur_init_x86(s);
-}
-
static av_cold void uninit(AVFilterContext *ctx)
{
GBlurContext *s = ctx->priv;