00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "libavutil/common.h"
00023 #include "libavutil/x86/cpu.h"
00024 #include "libavcodec/pngdsp.h"
00025
00026 void ff_add_png_paeth_prediction_mmx2 (uint8_t *dst, uint8_t *src,
00027 uint8_t *top, int w, int bpp);
00028 void ff_add_png_paeth_prediction_ssse3(uint8_t *dst, uint8_t *src,
00029 uint8_t *top, int w, int bpp);
00030 void ff_add_bytes_l2_mmx (uint8_t *dst, uint8_t *src1,
00031 uint8_t *src2, int w);
00032 void ff_add_bytes_l2_sse2(uint8_t *dst, uint8_t *src1,
00033 uint8_t *src2, int w);
00034
00035 void ff_pngdsp_init_x86(PNGDSPContext *dsp)
00036 {
00037 int flags = av_get_cpu_flags();
00038
00039 #if ARCH_X86_32
00040 if (EXTERNAL_MMX(flags))
00041 dsp->add_bytes_l2 = ff_add_bytes_l2_mmx;
00042 #endif
00043 if (EXTERNAL_MMXEXT(flags))
00044 dsp->add_paeth_prediction = ff_add_png_paeth_prediction_mmx2;
00045 if (EXTERNAL_SSE2(flags))
00046 dsp->add_bytes_l2 = ff_add_bytes_l2_sse2;
00047 if (EXTERNAL_SSSE3(flags))
00048 dsp->add_paeth_prediction = ff_add_png_paeth_prediction_ssse3;
00049 }