Mercurial > libavcodec.hg
comparison arm/dsputil_arm.c @ 9916:2c1c28f26a27 libavcodec
ARM: NEON VP3 IDCT
15% faster VP3/Theora, 10% faster VP6
author | conrad |
---|---|
date | Sat, 04 Jul 2009 20:41:11 +0000 |
parents | 04423b2f6e0b |
children | d6d7e8d4a04d |
comparison
equal
deleted
inserted
replaced
9915:f1707434e40b | 9916:2c1c28f26a27 |
---|---|
40 void ff_simple_idct_add_armv6(uint8_t *dest, int line_size, DCTELEM *data); | 40 void ff_simple_idct_add_armv6(uint8_t *dest, int line_size, DCTELEM *data); |
41 | 41 |
42 void ff_simple_idct_neon(DCTELEM *data); | 42 void ff_simple_idct_neon(DCTELEM *data); |
43 void ff_simple_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data); | 43 void ff_simple_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data); |
44 void ff_simple_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data); | 44 void ff_simple_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data); |
45 | |
46 void ff_vp3_idct_neon(DCTELEM *data); | |
47 void ff_vp3_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data); | |
48 void ff_vp3_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data); | |
45 | 49 |
46 /* XXX: local hack */ | 50 /* XXX: local hack */ |
47 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); | 51 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); |
48 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); | 52 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); |
49 | 53 |
178 } else if (idct_algo==FF_IDCT_SIMPLENEON){ | 182 } else if (idct_algo==FF_IDCT_SIMPLENEON){ |
179 c->idct_put= ff_simple_idct_put_neon; | 183 c->idct_put= ff_simple_idct_put_neon; |
180 c->idct_add= ff_simple_idct_add_neon; | 184 c->idct_add= ff_simple_idct_add_neon; |
181 c->idct = ff_simple_idct_neon; | 185 c->idct = ff_simple_idct_neon; |
182 c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; | 186 c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; |
187 } else if ((CONFIG_VP3_DECODER || CONFIG_VP5_DECODER || CONFIG_VP6_DECODER || CONFIG_THEORA_DECODER) && | |
188 idct_algo==FF_IDCT_VP3){ | |
189 c->idct_put= ff_vp3_idct_put_neon; | |
190 c->idct_add= ff_vp3_idct_add_neon; | |
191 c->idct = ff_vp3_idct_neon; | |
192 c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM; | |
183 #endif | 193 #endif |
184 } | 194 } |
185 } | 195 } |
186 | 196 |
187 c->put_pixels_tab[0][0] = put_pixels16_arm; | 197 c->put_pixels_tab[0][0] = put_pixels16_arm; |