aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/arm/dsputil_arm.c
diff options
context:
space:
mode:
authorDavid Conrad <lessen42@gmail.com>2009-07-04 20:41:11 +0000
committerDavid Conrad <lessen42@gmail.com>2009-07-04 20:41:11 +0000
commit2483298ae2248cbac39940f2ae85c2b6ddec9282 (patch)
treee339925d3f4287dee6af1415b32602b94db64a1f /libavcodec/arm/dsputil_arm.c
parent82c9182fe363e85d9e84f94eddcc0aa46a3be310 (diff)
downloadffmpeg-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.c10
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
}
}