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/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 #if HAVE_YASM
00038 int flags = av_get_cpu_flags();
00039
00040 #if ARCH_X86_32
00041 if (flags & AV_CPU_FLAG_MMX)
00042 dsp->add_bytes_l2 = ff_add_bytes_l2_mmx;
00043 #endif
00044 if (flags & AV_CPU_FLAG_MMX2)
00045 dsp->add_paeth_prediction = ff_add_png_paeth_prediction_mmx2;
00046 if (flags & AV_CPU_FLAG_SSE2)
00047 dsp->add_bytes_l2 = ff_add_bytes_l2_sse2;
00048 if (flags & AV_CPU_FLAG_SSSE3)
00049 dsp->add_paeth_prediction = ff_add_png_paeth_prediction_ssse3;
00050 #endif
00051 }