diff options
author | Måns Rullgård <mans@mansr.com> | 2007-01-28 21:32:08 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2007-01-28 21:32:08 +0000 |
commit | 7d42886b93189dec009b6124cbd2c4e555ae6df6 (patch) | |
tree | 15e2607ffee5a3ae550bc75b632f51f75bd56ce2 /libavcodec/armv4l/dsputil_arm.c | |
parent | 94d122e96e352fd91f1c75fc9ed05b76b673624b (diff) | |
download | ffmpeg-7d42886b93189dec009b6124cbd2c4e555ae6df6.tar.gz |
ARMv6 SIMD IDCT
Originally committed as revision 7752 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/armv4l/dsputil_arm.c')
-rw-r--r-- | libavcodec/armv4l/dsputil_arm.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/armv4l/dsputil_arm.c b/libavcodec/armv4l/dsputil_arm.c index 9f0bfa2af6..61b5fdacc4 100644 --- a/libavcodec/armv4l/dsputil_arm.c +++ b/libavcodec/armv4l/dsputil_arm.c @@ -35,6 +35,12 @@ extern void simple_idct_put_armv5te(uint8_t *dest, int line_size, extern void simple_idct_add_armv5te(uint8_t *dest, int line_size, DCTELEM *data); +extern void ff_simple_idct_armv6(DCTELEM *data); +extern void ff_simple_idct_put_armv6(uint8_t *dest, int line_size, + DCTELEM *data); +extern void ff_simple_idct_add_armv6(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); @@ -206,6 +212,8 @@ void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx) if(idct_algo == FF_IDCT_AUTO){ #if defined(HAVE_IPP) idct_algo = FF_IDCT_IPP; +#elif defined(HAVE_ARMV6) + idct_algo = FF_IDCT_SIMPLEARMV6; #elif defined(HAVE_ARMV5TE) idct_algo = FF_IDCT_SIMPLEARMV5TE; #else @@ -223,6 +231,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_ARMV6 + } else if (idct_algo==FF_IDCT_SIMPLEARMV6){ + c->idct_put= ff_simple_idct_put_armv6; + c->idct_add= ff_simple_idct_add_armv6; + c->idct = ff_simple_idct_armv6; + c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM; +#endif #ifdef HAVE_ARMV5TE } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){ c->idct_put= simple_idct_put_armv5te; |