Mercurial > libavcodec.hg
diff armv4l/dsputil_arm.c @ 3769:cf04e15a72ac libavcodec
ARMv5TE optimized IDCT
author | mru |
---|---|
date | Tue, 26 Sep 2006 20:26:22 +0000 |
parents | eae401c5bf30 |
children | c8c591fe26f8 |
line wrap: on
line diff
--- a/armv4l/dsputil_arm.c Tue Sep 26 20:24:13 2006 +0000 +++ b/armv4l/dsputil_arm.c Tue Sep 26 20:26:22 2006 +0000 @@ -27,6 +27,12 @@ extern void j_rev_dct_ARM(DCTELEM *data); extern void simple_idct_ARM(DCTELEM *data); +extern void simple_idct_armv5te(DCTELEM *data); +extern void simple_idct_put_armv5te(uint8_t *dest, int line_size, + DCTELEM *data); +extern void simple_idct_add_armv5te(uint8_t *dest, int line_size, + DCTELEM *data); + /* XXX: local hack */ static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); @@ -196,8 +202,10 @@ ff_add_pixels_clamped = c->add_pixels_clamped; if(idct_algo == FF_IDCT_AUTO){ -#ifdef HAVE_IPP +#if defined(HAVE_IPP) idct_algo = FF_IDCT_IPP; +#elif defined(HAVE_ARMV5TE) + idct_algo = FF_IDCT_SIMPLEARMV5TE; #else idct_algo = FF_IDCT_ARM; #endif @@ -213,6 +221,13 @@ c->idct_add= simple_idct_ARM_add; c->idct = simple_idct_ARM; c->idct_permutation_type= FF_NO_IDCT_PERM; +#ifdef HAVE_ARMV5TE + } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){ + c->idct_put= simple_idct_put_armv5te; + c->idct_add= simple_idct_add_armv5te; + c->idct = simple_idct_armv5te; + c->idct_permutation_type = FF_NO_IDCT_PERM; +#endif #ifdef HAVE_IPP } else if (idct_algo==FF_IDCT_IPP){ c->idct_put= simple_idct_ipp_put;