X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fx86%2Fdsputilenc_mmx.c;h=8537f7ab582a70c987817720e757219ae5e55453;hb=95d52464542f532061290192518d5fe1c1930e8d;hp=fa126d68fda801e16bcbb9c5564a155f2ada4fc7;hpb=9f00b1cbababa08dd220dbc0c74286a4707be746;p=ffmpeg diff --git a/libavcodec/x86/dsputilenc_mmx.c b/libavcodec/x86/dsputilenc_mmx.c index fa126d68fda..8537f7ab582 100644 --- a/libavcodec/x86/dsputilenc_mmx.c +++ b/libavcodec/x86/dsputilenc_mmx.c @@ -3,6 +3,8 @@ * Copyright (c) 2000, 2001 Fabrice Bellard * Copyright (c) 2002-2004 Michael Niedermayer * + * MMX optimization by Nick Kurshev + * * This file is part of Libav. * * Libav is free software; you can redistribute it and/or @@ -18,21 +20,21 @@ * You should have received a copy of the GNU Lesser General Public * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * MMX optimization by Nick Kurshev */ +#include "libavutil/attributes.h" #include "libavutil/cpu.h" #include "libavutil/x86/asm.h" #include "libavutil/x86/cpu.h" +#include "libavcodec/dct.h" #include "libavcodec/dsputil.h" #include "libavcodec/mpegvideo.h" #include "libavcodec/mathops.h" -#include "dsputil_mmx.h" +#include "dsputil_x86.h" -void ff_get_pixels_mmx(DCTELEM *block, const uint8_t *pixels, int line_size); -void ff_get_pixels_sse2(DCTELEM *block, const uint8_t *pixels, int line_size); -void ff_diff_pixels_mmx(DCTELEM *block, const uint8_t *s1, const uint8_t *s2, int stride); +void ff_get_pixels_mmx(int16_t *block, const uint8_t *pixels, int line_size); +void ff_get_pixels_sse2(int16_t *block, const uint8_t *pixels, int line_size); +void ff_diff_pixels_mmx(int16_t *block, const uint8_t *s1, const uint8_t *s2, int stride); int ff_pix_sum16_mmx(uint8_t * pix, int line_size); int ff_pix_norm1_mmx(uint8_t *pix, int line_size); @@ -797,7 +799,7 @@ static void sub_hfyu_median_prediction_mmxext(uint8_t *dst, const uint8_t *src1, HSUM(%%xmm0, %%xmm1, %0) #define DCT_SAD_FUNC(cpu) \ -static int sum_abs_dctelem_##cpu(DCTELEM *block){\ +static int sum_abs_dctelem_##cpu(int16_t *block){\ int sum;\ __asm__ volatile(\ DCT_SAD\ @@ -941,12 +943,13 @@ hadamard_func(mmxext) hadamard_func(sse2) hadamard_func(ssse3) -void ff_dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx) +av_cold void ff_dsputilenc_init_mmx(DSPContext *c, AVCodecContext *avctx) { int mm_flags = av_get_cpu_flags(); - int bit_depth = avctx->bits_per_raw_sample; #if HAVE_YASM + int bit_depth = avctx->bits_per_raw_sample; + if (EXTERNAL_MMX(mm_flags)) { if (bit_depth <= 8) c->get_pixels = ff_get_pixels_mmx;