Mercurial > libavcodec.hg
diff arm/dsputil_arm.c @ 9916:2c1c28f26a27 libavcodec
ARM: NEON VP3 IDCT
15% faster VP3/Theora, 10% faster VP6
author | conrad |
---|---|
date | Sat, 04 Jul 2009 20:41:11 +0000 |
parents | 04423b2f6e0b |
children | d6d7e8d4a04d |
line wrap: on
line diff
--- a/arm/dsputil_arm.c Sat Jul 04 18:24:43 2009 +0000 +++ b/arm/dsputil_arm.c Sat Jul 04 20:41:11 2009 +0000 @@ -43,6 +43,10 @@ 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); +void ff_vp3_idct_neon(DCTELEM *data); +void ff_vp3_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data); +void ff_vp3_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); @@ -180,6 +184,12 @@ c->idct_add= ff_simple_idct_add_neon; c->idct = ff_simple_idct_neon; c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; + } else if ((CONFIG_VP3_DECODER || CONFIG_VP5_DECODER || CONFIG_VP6_DECODER || CONFIG_THEORA_DECODER) && + idct_algo==FF_IDCT_VP3){ + c->idct_put= ff_vp3_idct_put_neon; + c->idct_add= ff_vp3_idct_add_neon; + c->idct = ff_vp3_idct_neon; + c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM; #endif } }