diff options
author | Måns Rullgård <mans@mansr.com> | 2009-10-04 13:12:55 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2009-10-04 13:12:55 +0000 |
commit | 84d430f85a10cfbca196c686ee59c72dff558ca1 (patch) | |
tree | a26c1883897b2f2bb08d4f8bf90692828dc81379 /libavcodec/arm/dsputil_neon.c | |
parent | 384f26f428d13f1aef26da453554401236de03c5 (diff) | |
download | ffmpeg-84d430f85a10cfbca196c686ee59c72dff558ca1.tar.gz |
ARM: clean up dsputil initialisation
- Move v5 and v6 initialisation to separate files.
- Move NEON IDCT selection to ff_dsputil_init_neon()
Originally committed as revision 20163 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/arm/dsputil_neon.c')
-rw-r--r-- | libavcodec/arm/dsputil_neon.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libavcodec/arm/dsputil_neon.c b/libavcodec/arm/dsputil_neon.c index 6b8b41e725..61efdf1979 100644 --- a/libavcodec/arm/dsputil_neon.c +++ b/libavcodec/arm/dsputil_neon.c @@ -23,6 +23,15 @@ #include "libavcodec/avcodec.h" #include "libavcodec/dsputil.h" +#include "dsputil_arm.h" + +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); void ff_put_pixels16_neon(uint8_t *, const uint8_t *, int, int); void ff_put_pixels16_x2_neon(uint8_t *, const uint8_t *, int, int); @@ -185,6 +194,23 @@ void ff_vorbis_inverse_coupling_neon(float *mag, float *ang, int blocksize); void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) { + if (!avctx->lowres) { + if (avctx->idct_algo == FF_IDCT_AUTO || + avctx->idct_algo == FF_IDCT_SIMPLENEON) { + c->idct_put= ff_simple_idct_put_neon; + 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) && + avctx->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; + } + } + c->put_pixels_tab[0][0] = ff_put_pixels16_neon; c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon; c->put_pixels_tab[0][2] = ff_put_pixels16_y2_neon; |