comparison armv4l/dsputil_arm.c @ 4427:765df9cbb2b3 libavcodec

ARMv6 SIMD IDCT
author mru
date Sun, 28 Jan 2007 21:32:08 +0000
parents c8c591fe26f8
children d5ba514e3f4a
comparison
equal deleted inserted replaced
4426:65ef5fd314ad 4427:765df9cbb2b3
32 extern void simple_idct_armv5te(DCTELEM *data); 32 extern void simple_idct_armv5te(DCTELEM *data);
33 extern void simple_idct_put_armv5te(uint8_t *dest, int line_size, 33 extern void simple_idct_put_armv5te(uint8_t *dest, int line_size,
34 DCTELEM *data); 34 DCTELEM *data);
35 extern void simple_idct_add_armv5te(uint8_t *dest, int line_size, 35 extern void simple_idct_add_armv5te(uint8_t *dest, int line_size,
36 DCTELEM *data); 36 DCTELEM *data);
37
38 extern void ff_simple_idct_armv6(DCTELEM *data);
39 extern void ff_simple_idct_put_armv6(uint8_t *dest, int line_size,
40 DCTELEM *data);
41 extern void ff_simple_idct_add_armv6(uint8_t *dest, int line_size,
42 DCTELEM *data);
37 43
38 /* XXX: local hack */ 44 /* XXX: local hack */
39 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); 45 static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
40 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); 46 static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
41 47
204 ff_add_pixels_clamped = c->add_pixels_clamped; 210 ff_add_pixels_clamped = c->add_pixels_clamped;
205 211
206 if(idct_algo == FF_IDCT_AUTO){ 212 if(idct_algo == FF_IDCT_AUTO){
207 #if defined(HAVE_IPP) 213 #if defined(HAVE_IPP)
208 idct_algo = FF_IDCT_IPP; 214 idct_algo = FF_IDCT_IPP;
215 #elif defined(HAVE_ARMV6)
216 idct_algo = FF_IDCT_SIMPLEARMV6;
209 #elif defined(HAVE_ARMV5TE) 217 #elif defined(HAVE_ARMV5TE)
210 idct_algo = FF_IDCT_SIMPLEARMV5TE; 218 idct_algo = FF_IDCT_SIMPLEARMV5TE;
211 #else 219 #else
212 idct_algo = FF_IDCT_ARM; 220 idct_algo = FF_IDCT_ARM;
213 #endif 221 #endif
221 } else if (idct_algo==FF_IDCT_SIMPLEARM){ 229 } else if (idct_algo==FF_IDCT_SIMPLEARM){
222 c->idct_put= simple_idct_ARM_put; 230 c->idct_put= simple_idct_ARM_put;
223 c->idct_add= simple_idct_ARM_add; 231 c->idct_add= simple_idct_ARM_add;
224 c->idct = simple_idct_ARM; 232 c->idct = simple_idct_ARM;
225 c->idct_permutation_type= FF_NO_IDCT_PERM; 233 c->idct_permutation_type= FF_NO_IDCT_PERM;
234 #ifdef HAVE_ARMV6
235 } else if (idct_algo==FF_IDCT_SIMPLEARMV6){
236 c->idct_put= ff_simple_idct_put_armv6;
237 c->idct_add= ff_simple_idct_add_armv6;
238 c->idct = ff_simple_idct_armv6;
239 c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
240 #endif
226 #ifdef HAVE_ARMV5TE 241 #ifdef HAVE_ARMV5TE
227 } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){ 242 } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){
228 c->idct_put= simple_idct_put_armv5te; 243 c->idct_put= simple_idct_put_armv5te;
229 c->idct_add= simple_idct_add_armv5te; 244 c->idct_add= simple_idct_add_armv5te;
230 c->idct = simple_idct_armv5te; 245 c->idct = simple_idct_armv5te;