Mercurial > libavcodec.hg
diff armv4l/dsputil_arm.c @ 8335:f19fe0cade86 libavcodec
ARM: NEON optimised simple_idct
author | mru |
---|---|
date | Mon, 15 Dec 2008 22:12:37 +0000 |
parents | 6bdd6dfc3574 |
children |
line wrap: on
line diff
--- a/armv4l/dsputil_arm.c Mon Dec 15 22:12:32 2008 +0000 +++ b/armv4l/dsputil_arm.c Mon Dec 15 22:12:37 2008 +0000 @@ -39,6 +39,10 @@ void ff_simple_idct_put_armv6(uint8_t *dest, int line_size, DCTELEM *data); void ff_simple_idct_add_armv6(uint8_t *dest, int line_size, DCTELEM *data); +void ff_simple_idct_neon(DCTELEM *data); +void ff_simple_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data); +void ff_simple_idct_add_neon(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); @@ -128,6 +132,8 @@ if(idct_algo == FF_IDCT_AUTO){ #if defined(HAVE_IPP) idct_algo = FF_IDCT_IPP; +#elif defined(HAVE_NEON) + idct_algo = FF_IDCT_SIMPLENEON; #elif defined(HAVE_ARMV6) idct_algo = FF_IDCT_SIMPLEARMV6; #elif defined(HAVE_ARMV5TE) @@ -168,6 +174,13 @@ c->idct = simple_idct_ipp; c->idct_permutation_type= FF_NO_IDCT_PERM; #endif +#ifdef HAVE_NEON + } else if (idct_algo==FF_IDCT_SIMPLENEON){ + c->idct_put= ff_simple_idct_put_neon; + c->idct_add= ff_simple_idct_add_neon; + c->idct = ff_simple_idct_neon; + c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; +#endif } }