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 |