Mercurial > libavcodec.hg
diff i386/dsputil_mmx.c @ 2732:473ee06ec3a1 libavcodec
MMX code for (put|avg)_h264_chroma_mc8
author | hzoli |
---|---|
date | Wed, 25 May 2005 08:05:41 +0000 |
parents | 360024d31dab |
children | 42d3e9068e32 |
line wrap: on
line diff
--- a/i386/dsputil_mmx.c Tue May 24 14:21:42 2005 +0000 +++ b/i386/dsputil_mmx.c Wed May 25 08:05:41 2005 +0000 @@ -3078,6 +3078,30 @@ H264_MC(avg_, 8, mmx2) H264_MC(avg_, 16,mmx2) + +/** These are used by *_h264_chroma_mc8_* */ +static const uint64_t thirtytwo __align8 = 0x0020002000200020ULL; +static const uint64_t sixtyfour __align8 = 0x0040004000400040ULL; + +#define H264_CHROMA_OP(S,D) +#define H264_CHROMA_MC8_TMPL put_h264_chroma_mc8_mmx +#include "dsputil_h264_template_mmx.c" +#undef H264_CHROMA_OP +#undef H264_CHROMA_MC8_TMPL + +#define H264_CHROMA_OP(S,D) "pavgb " #S ", " #D " \n\t" +#define H264_CHROMA_MC8_TMPL avg_h264_chroma_mc8_mmx2 +#include "dsputil_h264_template_mmx.c" +#undef H264_CHROMA_OP +#undef H264_CHROMA_MC8_TMPL + +#define H264_CHROMA_OP(S,D) "pavgusb " #S ", " #D " \n\t" +#define H264_CHROMA_MC8_TMPL avg_h264_chroma_mc8_3dnow +#include "dsputil_h264_template_mmx.c" +#undef H264_CHROMA_OP +#undef H264_CHROMA_MC8_TMPL + + #if 0 static void just_return() { return; } #endif @@ -3377,6 +3401,7 @@ c->h263_v_loop_filter= h263_v_loop_filter_mmx; c->h263_h_loop_filter= h263_h_loop_filter_mmx; + c->put_h264_chroma_pixels_tab[0]= put_h264_chroma_mc8_mmx; if (mm_flags & MM_MMXEXT) { c->put_pixels_tab[0][1] = put_pixels16_x2_mmx2; @@ -3473,6 +3498,7 @@ dspfunc(avg_h264_qpel, 2, 4); #undef dspfunc + c->avg_h264_chroma_pixels_tab[0]= avg_h264_chroma_mc8_mmx2; c->h264_v_loop_filter_luma= h264_v_loop_filter_luma_mmx2; c->h264_h_loop_filter_luma= h264_h_loop_filter_luma_mmx2; c->h264_v_loop_filter_chroma= h264_v_loop_filter_chroma_mmx2; @@ -3564,6 +3590,8 @@ dspfunc(avg_h264_qpel, 0, 16); dspfunc(avg_h264_qpel, 1, 8); dspfunc(avg_h264_qpel, 2, 4); + + c->avg_h264_chroma_pixels_tab[0]= avg_h264_chroma_mc8_3dnow; } }