--- branches/dev-api-4/xvidcore/src/motion/motion_comp.c 2003/08/22 15:20:41 1124 +++ branches/dev-api-4/xvidcore/src/motion/motion_comp.c 2003/08/22 15:52:35 1125 @@ -20,7 +20,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: motion_comp.c,v 1.18.2.7 2003-06-28 15:53:07 chl Exp $ + * $Id: motion_comp.c,v 1.18.2.8 2003-08-22 15:52:35 Isibaar Exp $ * ****************************************************************************/ @@ -29,6 +29,7 @@ #include "../encoder.h" #include "../utils/mbfunctions.h" #include "../image/interpolate8x8.h" +#include "../image/qpel.h" #include "../image/reduced.h" #include "../utils/timer.h" #include "motion.h" @@ -89,9 +90,15 @@ if(quarterpel) { if ((dx&3) | (dy&3)) { +#if defined(ARCH_IS_IA32) /* new_interpolate is only faster on x86 (MMX) machines */ + new_interpolate16x16_quarterpel(tmp - y * stride - x, + (uint8_t *) ref, tmp + 32, + tmp + 64, tmp + 96, x, y, dx, dy, stride, rounding); +#else interpolate16x16_quarterpel(tmp - y * stride - x, (uint8_t *) ref, tmp + 32, tmp + 64, tmp + 96, x, y, dx, dy, stride, rounding); +#endif ptr = tmp; } else ptr = ref + (y + dy/4)*stride + x + dx/4; /* fullpixel position */ @@ -151,9 +158,15 @@ if(quarterpel) { if ((dx&3) | (dy&3)) { +#if defined(ARCH_IS_IA32) /* new_interpolate is only faster on x86 (MMX) machines */ + new_interpolate8x8_quarterpel(tmp - y*stride - x, + (uint8_t *) ref, tmp + 32, + tmp + 64, tmp + 96, x, y, dx, dy, stride, rounding); +#else interpolate8x8_quarterpel(tmp - y*stride - x, (uint8_t *) ref, tmp + 32, tmp + 64, tmp + 96, x, y, dx, dy, stride, rounding); +#endif ptr = tmp; } else ptr = ref + (y + dy/4)*stride + x + dx/4; /* fullpixel position */ } else ptr = get_ref(ref, refh, refv, refhv, x, y, 1, dx, dy, stride);