diff options
author | Måns Rullgård <mans@mansr.com> | 2006-09-26 20:26:22 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2006-09-26 20:26:22 +0000 |
commit | a0403006f88517b58a1a14848bc731b407f02392 (patch) | |
tree | 0633d113f255b34ae35c6e99c39fff006fc065c8 /libavcodec/armv4l/dsputil_arm.c | |
parent | e2887363e188c5da1df2206f5aa3557ce8b5598a (diff) | |
download | ffmpeg-a0403006f88517b58a1a14848bc731b407f02392.tar.gz |
ARMv5TE optimized IDCT
Originally committed as revision 6347 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/armv4l/dsputil_arm.c')
-rw-r--r-- | libavcodec/armv4l/dsputil_arm.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/libavcodec/armv4l/dsputil_arm.c b/libavcodec/armv4l/dsputil_arm.c index 6adc0cb6c7..5bc8a40c80 100644 --- a/libavcodec/armv4l/dsputil_arm.c +++ b/libavcodec/armv4l/dsputil_arm.c @@ -27,6 +27,12 @@ extern void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx); 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 @@ void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx) 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 @@ void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx) 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; |