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;