diff options
author | David Conrad <lessen42@gmail.com> | 2009-07-04 20:41:11 +0000 |
---|---|---|
committer | David Conrad <lessen42@gmail.com> | 2009-07-04 20:41:11 +0000 |
commit | 2483298ae2248cbac39940f2ae85c2b6ddec9282 (patch) | |
tree | e339925d3f4287dee6af1415b32602b94db64a1f /libavcodec/arm/dsputil_arm.c | |
parent | 82c9182fe363e85d9e84f94eddcc0aa46a3be310 (diff) | |
download | ffmpeg-2483298ae2248cbac39940f2ae85c2b6ddec9282.tar.gz |
ARM: NEON VP3 IDCT
15% faster VP3/Theora, 10% faster VP6
Originally committed as revision 19345 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/arm/dsputil_arm.c')
-rw-r--r-- | libavcodec/arm/dsputil_arm.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libavcodec/arm/dsputil_arm.c b/libavcodec/arm/dsputil_arm.c index c8a277e931..c0ab0c9c7a 100644 --- a/libavcodec/arm/dsputil_arm.c +++ b/libavcodec/arm/dsputil_arm.c @@ -43,6 +43,10 @@ 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); +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 @@ void dsputil_init_arm(DSPContext* c, AVCodecContext *avctx) 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 } } |