Mercurial > libavcodec.hg
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; |