[FFmpeg-devel] [PATCH] checkasm: Add vf_blend tests

Paul B Mahol onemda at gmail.com
Sun Feb 14 10:06:16 CET 2016


On 2/14/16, Timothy Gu <timothygu99 at gmail.com> wrote:
> ---
>  tests/checkasm/Makefile   |   1 +
>  tests/checkasm/checkasm.c |   3 ++
>  tests/checkasm/checkasm.h |   1 +
>  tests/checkasm/vf_blend.c | 130
> ++++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 135 insertions(+)
>  create mode 100644 tests/checkasm/vf_blend.c
>
> diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile
> index 07fe5bc..bfd7c11 100644
> --- a/tests/checkasm/Makefile
> +++ b/tests/checkasm/Makefile
> @@ -1,5 +1,6 @@
>  # libavcodec tests
>  AVCODECOBJS-$(CONFIG_ALAC_DECODER) += alacdsp.o
> +AVCODECOBJS-$(CONFIG_BLEND_FILTER) += vf_blend.o
>  AVCODECOBJS-$(CONFIG_BSWAPDSP) += bswapdsp.o
>  AVCODECOBJS-$(CONFIG_DCA_DECODER) += synth_filter.o
>  AVCODECOBJS-$(CONFIG_FLACDSP)  += flacdsp.o
> diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
> index 49fd2af..1e73e34 100644
> --- a/tests/checkasm/checkasm.c
> +++ b/tests/checkasm/checkasm.c
> @@ -68,6 +68,9 @@ static const struct {
>      #if CONFIG_ALAC_DECODER
>          { "alacdsp", checkasm_check_alacdsp },
>      #endif
> +    #if CONFIG_BLEND_FILTER
> +        { "vf_blend", checkasm_check_blend },
> +    #endif
>      #if CONFIG_BSWAPDSP
>          { "bswapdsp", checkasm_check_bswapdsp },
>      #endif
> diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
> index 5c07f89..0c8bc2d 100644
> --- a/tests/checkasm/checkasm.h
> +++ b/tests/checkasm/checkasm.h
> @@ -31,6 +31,7 @@
>  #include "libavutil/timer.h"
>
>  void checkasm_check_alacdsp(void);
> +void checkasm_check_blend(void);
>  void checkasm_check_bswapdsp(void);
>  void checkasm_check_flacdsp(void);
>  void checkasm_check_fmtconvert(void);
> diff --git a/tests/checkasm/vf_blend.c b/tests/checkasm/vf_blend.c
> new file mode 100644
> index 0000000..51e1391
> --- /dev/null
> +++ b/tests/checkasm/vf_blend.c
> @@ -0,0 +1,130 @@
> +/*
> + * Copyright (c) 2016 Tiancheng "Timothy" Gu
> + *
> + * 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/blend.h"
> +#include "libavutil/common.h"
> +#include "libavutil/internal.h"
> +#include "libavutil/intreadwrite.h"
> +
> +#define WIDTH 256
> +#define HEIGHT 256
> +#define BUF_UNITS 9
> +#define SIZE_PER_UNIT (WIDTH * HEIGHT)
> +#define BUF_SIZE (BUF_UNITS * SIZE_PER_UNIT)
> +
> +#define randomize_buffers()                   \
> +    do {                                      \
> +        int i, j;                             \
> +        for (i = 0; i < HEIGHT; i++) {        \
> +            for (j = 0; j < WIDTH; j++) {     \
> +                top1[i * WIDTH + j] =         \
> +                top2[i * WIDTH + j] = i;      \
> +                bot1[i * WIDTH + j] =         \
> +                bot2[i * WIDTH + j] = j;      \

I think you failed to get my point.

For 8bit blend if you blend 256x256 horizontal gradient
with 256x256 vertical gradient you will get blend
function response, which is unique. And covers all
possibilities for 8bit formats.


More information about the ffmpeg-devel mailing list