X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmotion-test.c;h=7ac5cc7d4a581b14aff4696a8680fa3075e86111;hb=94d47382e0558d05e4ba2dd2e3717405d2a703ad;hp=883dd56cc41b9047ad624b330fe44759f275e42b;hpb=bcbd6603dd805e9a56c90493a6a84a96d1066b05;p=ffmpeg diff --git a/libavcodec/motion-test.c b/libavcodec/motion-test.c index 883dd56cc41..7ac5cc7d4a5 100644 --- a/libavcodec/motion-test.c +++ b/libavcodec/motion-test.c @@ -1,25 +1,25 @@ /* * (c) 2001 Fabrice Bellard * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav 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, + * Libav 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 + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /** - * @file motion_test.c + * @file * motion test. */ @@ -29,54 +29,42 @@ #include #include +#include "config.h" #include "dsputil.h" - -#include "i386/mmx.h" +#include "libavutil/lfg.h" #undef exit #undef printf -int pix_abs16x16_mmx(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_mmx1(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_c(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_x2_mmx(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_x2_mmx1(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_x2_c(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_y2_mmx(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_y2_mmx1(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_y2_c(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_xy2_mmx(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_xy2_mmx1(uint8_t *blk1, uint8_t *blk2, int lx); -int pix_abs16x16_xy2_c(uint8_t *blk1, uint8_t *blk2, int lx); - -typedef int motion_func(uint8_t *blk1, uint8_t *blk2, int lx); - #define WIDTH 64 #define HEIGHT 64 uint8_t img1[WIDTH * HEIGHT]; uint8_t img2[WIDTH * HEIGHT]; -void fill_random(uint8_t *tab, int size) +static void fill_random(uint8_t *tab, int size) { int i; + AVLFG prng; + + av_lfg_init(&prng, 1); for(i=0;idsp_mask = AV_CPU_FLAG_FORCE; + dsputil_init(&cctx, ctx); + for (c = 0; c < flags_size; c++) { + int x; + ctx->dsp_mask = AV_CPU_FLAG_FORCE | flags[c]; + 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; }