[FFmpeg-devel] [PATCH V2 1/3] checkasm/vf_eq: add test for vf_eq

Song, Ruiling ruiling.song at intel.com
Tue Sep 24 08:30:42 EEST 2019


> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
> Ting Fu
> Sent: Wednesday, September 18, 2019 3:06 PM
> To: ffmpeg-devel at ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH V2 1/3] checkasm/vf_eq: add test for vf_eq
> 
> Signed-off-by: Ting Fu <ting.fu at intel.com>

The patchset LGTM. Have also verified on linux64, win64 and linux32.
Will apply the patches if no objection.
There are some indention errors, have fixed them locally. Please take care next time.

Ruiling

> ---
>  libavfilter/vf_eq.c       | 13 ++++---
>  libavfilter/vf_eq.h       |  1 +
>  tests/checkasm/Makefile   |  1 +
>  tests/checkasm/checkasm.c |  3 ++
>  tests/checkasm/checkasm.h |  1 +
>  tests/checkasm/vf_eq.c    | 79
> +++++++++++++++++++++++++++++++++++++++
>  tests/fate/checkasm.mak   |  1 +
>  7 files changed, 94 insertions(+), 5 deletions(-)
>  create mode 100644 tests/checkasm/vf_eq.c
> 
> diff --git a/libavfilter/vf_eq.c b/libavfilter/vf_eq.c
> index 2c4c7e4d54..0f9d129255 100644
> --- a/libavfilter/vf_eq.c
> +++ b/libavfilter/vf_eq.c
> @@ -174,12 +174,18 @@ static int set_expr(AVExpr **pexpr, const char
> *expr, const char *option, void *
>      return 0;
>  }
> 
> +void ff_eq_init(EQContext *eq)
> +{
> +    eq->process = process_c;
> +    if (ARCH_X86)
> +        ff_eq_init_x86(eq);
> +}
> +
>  static int initialize(AVFilterContext *ctx)
>  {
>      EQContext *eq = ctx->priv;
>      int ret;
> -
> -    eq->process = process_c;
> +    ff_eq_init(eq);
> 
>      if ((ret = set_expr(&eq->contrast_pexpr,     eq->contrast_expr,
> "contrast",     ctx)) < 0 ||
>          (ret = set_expr(&eq->brightness_pexpr,   eq->brightness_expr,
> "brightness",   ctx)) < 0 ||
> @@ -191,9 +197,6 @@ static int initialize(AVFilterContext *ctx)
>          (ret = set_expr(&eq->gamma_weight_pexpr, eq->gamma_weight_expr,
> "gamma_weight", ctx)) < 0 )
>          return ret;
> 
> -    if (ARCH_X86)
> -        ff_eq_init_x86(eq);
> -
>      if (eq->eval_mode == EVAL_MODE_INIT) {
>          set_gamma(eq);
>          set_contrast(eq);
> diff --git a/libavfilter/vf_eq.h b/libavfilter/vf_eq.h
> index fa49d46e5c..cd0cd75f08 100644
> --- a/libavfilter/vf_eq.h
> +++ b/libavfilter/vf_eq.h
> @@ -100,6 +100,7 @@ typedef struct EQContext {
>      enum EvalMode { EVAL_MODE_INIT, EVAL_MODE_FRAME,
> EVAL_MODE_NB } eval_mode;
>  } EQContext;
> 
> +void ff_eq_init(EQContext *eq);
>  void ff_eq_init_x86(EQContext *eq);
> 
>  #endif /* AVFILTER_EQ_H */
> diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile
> index 0112ff603e..de850c016e 100644
> --- a/tests/checkasm/Makefile
> +++ b/tests/checkasm/Makefile
> @@ -36,6 +36,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_EQ_FILTER)         += vf_eq.o
>  AVFILTEROBJS-$(CONFIG_GBLUR_FILTER)      += vf_gblur.o
>  AVFILTEROBJS-$(CONFIG_HFLIP_FILTER)      += vf_hflip.o
>  AVFILTEROBJS-$(CONFIG_THRESHOLD_FILTER)  += vf_threshold.o
> diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
> index d9a5c7f401..bcbe775510 100644
> --- a/tests/checkasm/checkasm.c
> +++ b/tests/checkasm/checkasm.c
> @@ -165,6 +165,9 @@ static const struct {
>      #if CONFIG_COLORSPACE_FILTER
>          { "vf_colorspace", checkasm_check_colorspace },
>      #endif
> +    #if CONFIG_EQ_FILTER
> +        { "vf_eq", checkasm_check_vf_eq },
> +    #endif
>      #if CONFIG_GBLUR_FILTER
>          { "vf_gblur", checkasm_check_vf_gblur },
>      #endif
> diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
> index fdf9eeb75d..0a7f9f25c4 100644
> --- a/tests/checkasm/checkasm.h
> +++ b/tests/checkasm/checkasm.h
> @@ -72,6 +72,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_eq(void);
>  void checkasm_check_vf_gblur(void);
>  void checkasm_check_vf_hflip(void);
>  void checkasm_check_vf_threshold(void);
> diff --git a/tests/checkasm/vf_eq.c b/tests/checkasm/vf_eq.c
> new file mode 100644
> index 0000000000..684718f2cd
> --- /dev/null
> +++ b/tests/checkasm/vf_eq.c
> @@ -0,0 +1,79 @@
> +/*
> + * 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 <string.h>
> +#include "checkasm.h"
> +#include "libavfilter/avfilter.h"
> +#include "libavfilter/vf_eq.h"
> +#include "libavutil/intreadwrite.h"
> +
> +#define WIDTH 256
> +#define HEIGHT 256
> +#define SRC_STRIDE 256
> +#define PIXELS (WIDTH * HEIGHT)
> +#define RANDOM_RANGE 80000
> +#define SCALE 10000
> +
> +#define randomize_buffers(buf, size)      \
> +    do {                                  \
> +        int j;                            \
> +        uint8_t *tmp_buf = (uint8_t *)buf;\
> +        for (j = 0; j< size ; j++)        \
> +            tmp_buf[j] = rnd() & 0xFF;    \
> +        } while (0)
> +
> +static void check_eq(void){
> +    LOCAL_ALIGNED_32(uint8_t, src,     [PIXELS]);
> +    LOCAL_ALIGNED_32(uint8_t, dst_ref, [PIXELS]);
> +    LOCAL_ALIGNED_32(uint8_t, dst_new, [PIXELS]);
> +    int w = WIDTH;
> +    int h = HEIGHT;
> +    int src_stride = SRC_STRIDE;
> +    int dst_stride = SRC_STRIDE;
> +    EQParameters pa;
> +    EQContext eq;
> +    double rand_contrast = (int)(rnd() % (RANDOM_RANGE * 2) -
> RANDOM_RANGE)
> +                           / (SCALE * 1.0);
> +    double rand_brightness = (int)(rnd() % (SCALE * 2) - SCALE)
> +                             / (SCALE * 1.0);
> +    pa.contrast = rand_contrast;
> +    pa.brightness = rand_brightness;
> +
> +    declare_func(void, EQParameters *param, uint8_t *dst, int dst_stride,
> +                 const uint8_t *src, int src_stride, int w, int h);
> +
> +    memset(src,     0, PIXELS);
> +    memset(dst_ref, 0, PIXELS);
> +    memset(dst_new, 0, PIXELS);
> +    randomize_buffers(src, PIXELS);
> +    ff_eq_init(&eq);
> +
> +    if (check_func(eq.process, "process")){
> +        call_ref(&pa, dst_ref, dst_stride, src, src_stride, w, h);
> +        call_new(&pa, dst_new, dst_stride, src, src_stride, w, h);
> +        if (memcmp(dst_ref, dst_new, PIXELS))
> +            fail();
> +        bench_new(&pa, dst_new, dst_stride, src, src_stride, w, h);
> +        }
> +}
> +
> +void checkasm_check_vf_eq(void)
> +{
> +    check_eq();
> +    report("eq");
> +}
> diff --git a/tests/fate/checkasm.mak b/tests/fate/checkasm.mak
> index 389324547c..b391717446 100644
> --- a/tests/fate/checkasm.mak
> +++ b/tests/fate/checkasm.mak
> @@ -28,6 +28,7 @@ FATE_CHECKASM = fate-checkasm-aacpsdsp
> \
>                  fate-checkasm-v210enc                                   \
>                  fate-checkasm-vf_blend                                  \
>                  fate-checkasm-vf_colorspace                             \
> +                fate-checkasm-vf_eq                                     \
>                  fate-checkasm-vf_gblur                                  \
>                  fate-checkasm-vf_hflip                                  \
>                  fate-checkasm-vf_threshold                              \
> --
> 2.17.1
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list