| OLD | NEW |
| 1 /* | 1 /* |
| 2 * (c) 2001 Fabrice Bellard | 2 * (c) 2001 Fabrice Bellard |
| 3 * 2007 Marc Hoffman <marc.hoffman@analog.com> | 3 * 2007 Marc Hoffman <marc.hoffman@analog.com> |
| 4 * | 4 * |
| 5 * This file is part of FFmpeg. | 5 * This file is part of FFmpeg. |
| 6 * | 6 * |
| 7 * FFmpeg is free software; you can redistribute it and/or | 7 * FFmpeg is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Lesser General Public | 8 * modify it under the terms of the GNU Lesser General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2.1 of the License, or (at your option) any later version. | 10 * version 2.1 of the License, or (at your option) any later version. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include <math.h> | 33 #include <math.h> |
| 34 | 34 |
| 35 #include "libavutil/common.h" | 35 #include "libavutil/common.h" |
| 36 #include "libavutil/lfg.h" | 36 #include "libavutil/lfg.h" |
| 37 | 37 |
| 38 #include "simple_idct.h" | 38 #include "simple_idct.h" |
| 39 #include "aandcttab.h" | 39 #include "aandcttab.h" |
| 40 #include "faandct.h" | 40 #include "faandct.h" |
| 41 #include "faanidct.h" | 41 #include "faanidct.h" |
| 42 #include "x86/idct_xvid.h" | 42 #include "x86/idct_xvid.h" |
| 43 #include "dctref.h" |
| 43 | 44 |
| 44 #undef printf | 45 #undef printf |
| 45 | 46 |
| 46 void *fast_memcpy(void *a, const void *b, size_t c){return memcpy(a,b,c);}; | |
| 47 | |
| 48 /* reference fdct/idct */ | |
| 49 void ff_ref_fdct(DCTELEM *block); | |
| 50 void ff_ref_idct(DCTELEM *block); | |
| 51 void ff_ref_dct_init(void); | |
| 52 | |
| 53 void ff_mmx_idct(DCTELEM *data); | 47 void ff_mmx_idct(DCTELEM *data); |
| 54 void ff_mmxext_idct(DCTELEM *data); | 48 void ff_mmxext_idct(DCTELEM *data); |
| 55 | 49 |
| 56 void odivx_idct_c(short *block); | 50 void odivx_idct_c(short *block); |
| 57 | 51 |
| 58 // BFIN | 52 // BFIN |
| 59 void ff_bfin_idct(DCTELEM *block); | 53 void ff_bfin_idct(DCTELEM *block); |
| 60 void ff_bfin_fdct(DCTELEM *block); | 54 void ff_bfin_fdct(DCTELEM *block); |
| 61 | 55 |
| 62 // ALTIVEC | 56 // ALTIVEC |
| 63 void fdct_altivec(DCTELEM *block); | 57 void fdct_altivec(DCTELEM *block); |
| 64 //void idct_altivec(DCTELEM *block);?? no routine | 58 //void idct_altivec(DCTELEM *block);?? no routine |
| 65 | 59 |
| 66 // ARM | 60 // ARM |
| 67 void j_rev_dct_ARM(DCTELEM *data); | 61 void ff_j_rev_dct_arm(DCTELEM *data); |
| 68 void simple_idct_ARM(DCTELEM *data); | 62 void ff_simple_idct_arm(DCTELEM *data); |
| 69 void simple_idct_armv5te(DCTELEM *data); | 63 void ff_simple_idct_armv5te(DCTELEM *data); |
| 70 void ff_simple_idct_armv6(DCTELEM *data); | 64 void ff_simple_idct_armv6(DCTELEM *data); |
| 71 void ff_simple_idct_neon(DCTELEM *data); | 65 void ff_simple_idct_neon(DCTELEM *data); |
| 72 | 66 |
| 73 void ff_simple_idct_axp(DCTELEM *data); | 67 void ff_simple_idct_axp(DCTELEM *data); |
| 74 | 68 |
| 75 struct algo { | 69 struct algo { |
| 76 const char *name; | 70 const char *name; |
| 77 enum { FDCT, IDCT } is_idct; | 71 enum { FDCT, IDCT } is_idct; |
| 78 void (* func) (DCTELEM *block); | 72 void (* func) (DCTELEM *block); |
| 79 void (* ref) (DCTELEM *block); | 73 void (* ref) (DCTELEM *block); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 #if HAVE_ALTIVEC | 113 #if HAVE_ALTIVEC |
| 120 {"altivecfdct", 0, fdct_altivec, ff_ref_fdct, NO_PERM, FF_MM_ALTIVEC
}, | 114 {"altivecfdct", 0, fdct_altivec, ff_ref_fdct, NO_PERM, FF_MM_ALTIVEC
}, |
| 121 #endif | 115 #endif |
| 122 | 116 |
| 123 #if ARCH_BFIN | 117 #if ARCH_BFIN |
| 124 {"BFINfdct", 0, ff_bfin_fdct, ff_ref_fdct, NO_PERM}, | 118 {"BFINfdct", 0, ff_bfin_fdct, ff_ref_fdct, NO_PERM}, |
| 125 {"BFINidct", 1, ff_bfin_idct, ff_ref_idct, NO_PERM}, | 119 {"BFINidct", 1, ff_bfin_idct, ff_ref_idct, NO_PERM}, |
| 126 #endif | 120 #endif |
| 127 | 121 |
| 128 #if ARCH_ARM | 122 #if ARCH_ARM |
| 129 {"SIMPLE-ARM", 1, simple_idct_ARM, ff_ref_idct, NO_PERM }, | 123 {"SIMPLE-ARM", 1, ff_simple_idct_arm, ff_ref_idct, NO_PERM }, |
| 130 {"INT-ARM", 1, j_rev_dct_ARM, ff_ref_idct, MMX_PERM }, | 124 {"INT-ARM", 1, ff_j_rev_dct_arm, ff_ref_idct, MMX_PERM }, |
| 131 #if HAVE_ARMV5TE | 125 #if HAVE_ARMV5TE |
| 132 {"SIMPLE-ARMV5TE", 1, simple_idct_armv5te, ff_ref_idct, NO_PERM }, | 126 {"SIMPLE-ARMV5TE", 1, ff_simple_idct_armv5te, ff_ref_idct, NO_PERM }, |
| 133 #endif | 127 #endif |
| 134 #if HAVE_ARMV6 | 128 #if HAVE_ARMV6 |
| 135 {"SIMPLE-ARMV6", 1, ff_simple_idct_armv6, ff_ref_idct, MMX_PERM }, | 129 {"SIMPLE-ARMV6", 1, ff_simple_idct_armv6, ff_ref_idct, MMX_PERM }, |
| 136 #endif | 130 #endif |
| 137 #if HAVE_NEON | 131 #if HAVE_NEON |
| 138 {"SIMPLE-NEON", 1, ff_simple_idct_neon, ff_ref_idct, PARTTRANS_PERM }, | 132 {"SIMPLE-NEON", 1, ff_simple_idct_neon, ff_ref_idct, PARTTRANS_PERM }, |
| 139 #endif | 133 #endif |
| 140 #endif /* ARCH_ARM */ | 134 #endif /* ARCH_ARM */ |
| 141 | 135 |
| 142 #if ARCH_ALPHA | 136 #if ARCH_ALPHA |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 596 if (test_248_dct) { | 590 if (test_248_dct) { |
| 597 idct248_error("SIMPLE-C", ff_simple_idct248_put); | 591 idct248_error("SIMPLE-C", ff_simple_idct248_put); |
| 598 } else { | 592 } else { |
| 599 for (i=0;algos[i].name;i++) | 593 for (i=0;algos[i].name;i++) |
| 600 if (algos[i].is_idct == test_idct && !(~cpu_flags & algos[i].mm_support)
) { | 594 if (algos[i].is_idct == test_idct && !(~cpu_flags & algos[i].mm_support)
) { |
| 601 dct_error (algos[i].name, algos[i].is_idct, algos[i].func, algos[i].re
f, algos[i].format, test); | 595 dct_error (algos[i].name, algos[i].is_idct, algos[i].func, algos[i].re
f, algos[i].format, test); |
| 602 } | 596 } |
| 603 } | 597 } |
| 604 return 0; | 598 return 0; |
| 605 } | 599 } |
| OLD | NEW |