From 8f4963ad25ac6c71c126ac90c240b1f88ebf0312 Mon Sep 17 00:00:00 2001 From: Ruiling Song Date: Tue, 4 Jun 2019 16:34:08 +0800 Subject: [PATCH] checkasm/vf_gblur: add test for horiz_slice simd Signed-off-by: Ruiling Song --- tests/checkasm/Makefile | 1 + tests/checkasm/checkasm.c | 3 ++ tests/checkasm/checkasm.h | 1 + tests/checkasm/vf_gblur.c | 66 +++++++++++++++++++++++++++++++++++++++ tests/fate/checkasm.mak | 1 + 5 files changed, 72 insertions(+) create mode 100644 tests/checkasm/vf_gblur.c diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index 886ae33167..f5780eedb2 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -35,6 +35,7 @@ CHECKASMOBJS-$(CONFIG_AVCODEC) += $(AVCODECOBJS-yes) AVFILTEROBJS-$(CONFIG_AFIR_FILTER) += af_afir.o AVFILTEROBJS-$(CONFIG_BLEND_FILTER) += vf_blend.o AVFILTEROBJS-$(CONFIG_COLORSPACE_FILTER) += vf_colorspace.o +AVFILTEROBJS-$(CONFIG_GBLUR_FILTER) += vf_gblur.o AVFILTEROBJS-$(CONFIG_HFLIP_FILTER) += vf_hflip.o AVFILTEROBJS-$(CONFIG_THRESHOLD_FILTER) += vf_threshold.o AVFILTEROBJS-$(CONFIG_NLMEANS_FILTER) += vf_nlmeans.o diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index bf51e00eab..3e2ec377be 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -162,6 +162,9 @@ static const struct { #if CONFIG_COLORSPACE_FILTER { "vf_colorspace", checkasm_check_colorspace }, #endif + #if CONFIG_GBLUR_FILTER + { "vf_gblur", checkasm_check_vf_gblur }, + #endif #if CONFIG_HFLIP_FILTER { "vf_hflip", checkasm_check_vf_hflip }, #endif diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index 9b8d2f5419..aed15b5fa4 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -71,6 +71,7 @@ void checkasm_check_sw_rgb(void); void checkasm_check_utvideodsp(void); void checkasm_check_v210dec(void); void checkasm_check_v210enc(void); +void checkasm_check_vf_gblur(void); void checkasm_check_vf_hflip(void); void checkasm_check_vf_threshold(void); void checkasm_check_vp8dsp(void); diff --git a/tests/checkasm/vf_gblur.c b/tests/checkasm/vf_gblur.c new file mode 100644 index 0000000000..1d63fc22a0 --- /dev/null +++ b/tests/checkasm/vf_gblur.c @@ -0,0 +1,66 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 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 General Public License for more details. + * + * You should have received a copy of the GNU 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. + */ + +#include +#include "checkasm.h" +#include "libavfilter/gblur.h" + +#define WIDTH 256 +#define HEIGHT 256 +#define PIXELS (WIDTH * HEIGHT) +#define BUF_SIZE (PIXELS * 4) + +#define randomize_buffers(buf, size) \ + do { \ + int j; \ + float *tmp_buf = (float *)buf; \ + for (j = 0; j < size; j++) \ + tmp_buf[j] = (float)(rnd() & 0xFF); \ + } while (0) + +void checkasm_check_vf_gblur(void) +{ + float *dst_ref = av_malloc(BUF_SIZE); + float *dst_new = av_malloc(BUF_SIZE); + int w = WIDTH; + int h = HEIGHT; + int steps = 2; + float nu = 0.101f; + float bscale = 1.112f; + GBlurContext s; + + declare_func(void, float *dst, int w, int h, int steps, float nu, float bscale); + + randomize_buffers(dst_ref, PIXELS); + memcpy(dst_new, dst_ref, BUF_SIZE); + + ff_gblur_init(&s); + + if (check_func(s.horiz_slice, "horiz_slice")) { + call_ref(dst_ref, w, h, steps, nu, bscale); + call_new(dst_new, w, h, steps, nu, bscale); + + if (!float_near_abs_eps_array(dst_ref, dst_new, 0.01f, PIXELS)) { + fail(); + } + bench_new(dst_new, w, h, 1, nu, bscale); + } + report("horiz_slice"); + av_freep(&dst_ref); + av_freep(&dst_new); +} diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak index c453273cd0..618bde509f 100644 --- a/tests/fate/checkasm.mak +++ b/tests/fate/checkasm.mak @@ -27,6 +27,7 @@ FATE_CHECKASM = fate-checkasm-aacpsdsp \ fate-checkasm-v210enc \ fate-checkasm-vf_blend \ fate-checkasm-vf_colorspace \ + fate-checkasm-vf_gblur \ fate-checkasm-vf_hflip \ fate-checkasm-vf_threshold \ fate-checkasm-videodsp \