From c868219c9accf267a21792111e186b3dd0b7a0ab Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 3 Sep 2012 22:46:19 +0200 Subject: [PATCH] lavc: put motion test back. While not that usefull, we can as well keep it until it breaks. When it breaks for whatever reason ill likely remove it Sorry for the revert spam, i had not realized this code compiles and works fine. Signed-off-by: Michael Niedermayer --- libavcodec/Makefile | 1 + libavcodec/motion-test.c | 149 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 libavcodec/motion-test.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 50120f84c1..ae2efb6e5e 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -780,6 +780,7 @@ TESTPROGS = cabac \ raw \ snowenc \ +TESTPROGS-$(HAVE_MMX) += motion TESTOBJS = dctref.o HOSTPROGS = aac_tablegen \ diff --git a/libavcodec/motion-test.c b/libavcodec/motion-test.c new file mode 100644 index 0000000000..3504ccfd68 --- /dev/null +++ b/libavcodec/motion-test.c @@ -0,0 +1,149 @@ +/* + * (c) 2001 Fabrice Bellard + * + * 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 + */ + +/** + * @file + * motion test. + */ + +#include +#include +#include + +#include "config.h" +#include "dsputil.h" +#include "libavutil/internal.h" +#include "libavutil/lfg.h" +#include "libavutil/mem.h" +#include "libavutil/time.h" + +#undef printf + +#define WIDTH 64 +#define HEIGHT 64 + +static uint8_t img1[WIDTH * HEIGHT]; +static uint8_t img2[WIDTH * HEIGHT]; + +static void fill_random(uint8_t *tab, int size) +{ + int i; + AVLFG prng; + + av_lfg_init(&prng, 1); + for(i=0;i 1) { + help(); + return 1; + } + + printf("ffmpeg motion test\n"); + + ctx = avcodec_alloc_context3(NULL); + ctx->dsp_mask = AV_CPU_FLAG_FORCE; + ff_dsputil_init(&cctx, ctx); + for (c = 0; c < flags_size; c++) { + int x; + ctx->dsp_mask = AV_CPU_FLAG_FORCE | flags[c]; + ff_dsputil_init(&mmxctx, ctx); + + for (x = 0; x < 2; x++) { + printf("%s for %dx%d pixels\n", c ? "mmx2" : "mmx", + x ? 8 : 16, x ? 8 : 16); + test_motion("mmx", mmxctx.pix_abs[x][0], cctx.pix_abs[x][0]); + test_motion("mmx_x2", mmxctx.pix_abs[x][1], cctx.pix_abs[x][1]); + test_motion("mmx_y2", mmxctx.pix_abs[x][2], cctx.pix_abs[x][2]); + test_motion("mmx_xy2", mmxctx.pix_abs[x][3], cctx.pix_abs[x][3]); + } + } + av_free(ctx); + + return 0; +}