Mercurial > libavcodec.hg
comparison arm/dsputil_arm.c @ 10203:0905f8eed0a9 libavcodec
ARM: remove broken IPP support
author | mru |
---|---|
date | Mon, 21 Sep 2009 01:40:08 +0000 |
parents | d6d7e8d4a04d |
children | 48be79afc72d |
comparison
equal
deleted
inserted
replaced
10202:d0456fd306d2 | 10203:0905f8eed0a9 |
---|---|
18 * License along with FFmpeg; if not, write to the Free Software | 18 * License along with FFmpeg; if not, write to the Free Software |
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
20 */ | 20 */ |
21 | 21 |
22 #include "libavcodec/dsputil.h" | 22 #include "libavcodec/dsputil.h" |
23 #if HAVE_IPP | |
24 #include <ipp.h> | |
25 #endif | |
26 | 23 |
27 void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx); | 24 void dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx); |
28 void ff_float_init_arm_vfp(DSPContext* c, AVCodecContext *avctx); | 25 void ff_float_init_arm_vfp(DSPContext* c, AVCodecContext *avctx); |
29 void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx); | 26 void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx); |
30 | 27 |
95 { | 92 { |
96 simple_idct_ARM (block); | 93 simple_idct_ARM (block); |
97 ff_add_pixels_clamped(block, dest, line_size); | 94 ff_add_pixels_clamped(block, dest, line_size); |
98 } | 95 } |
99 | 96 |
100 #if HAVE_IPP | |
101 static void simple_idct_ipp(DCTELEM *block) | |
102 { | |
103 ippiDCT8x8Inv_Video_16s_C1I(block); | |
104 } | |
105 static void simple_idct_ipp_put(uint8_t *dest, int line_size, DCTELEM *block) | |
106 { | |
107 ippiDCT8x8Inv_Video_16s8u_C1R(block, dest, line_size); | |
108 } | |
109 | |
110 void add_pixels_clamped_iwmmxt(const DCTELEM *block, uint8_t *pixels, int line_size); | |
111 | |
112 static void simple_idct_ipp_add(uint8_t *dest, int line_size, DCTELEM *block) | |
113 { | |
114 ippiDCT8x8Inv_Video_16s_C1I(block); | |
115 #if HAVE_IWMMXT | |
116 add_pixels_clamped_iwmmxt(block, dest, line_size); | |
117 #else | |
118 ff_add_pixels_clamped_ARM(block, dest, line_size); | |
119 #endif | |
120 } | |
121 #endif | |
122 | |
123 int mm_support(void) | 97 int mm_support(void) |
124 { | 98 { |
125 return HAVE_IWMMXT * FF_MM_IWMMXT; | 99 return HAVE_IWMMXT * FF_MM_IWMMXT; |
126 } | 100 } |
127 | 101 |
132 ff_put_pixels_clamped = c->put_pixels_clamped; | 106 ff_put_pixels_clamped = c->put_pixels_clamped; |
133 ff_add_pixels_clamped = c->add_pixels_clamped; | 107 ff_add_pixels_clamped = c->add_pixels_clamped; |
134 | 108 |
135 if (avctx->lowres == 0) { | 109 if (avctx->lowres == 0) { |
136 if(idct_algo == FF_IDCT_AUTO){ | 110 if(idct_algo == FF_IDCT_AUTO){ |
137 #if HAVE_IPP | 111 #if HAVE_NEON |
138 idct_algo = FF_IDCT_IPP; | |
139 #elif HAVE_NEON | |
140 idct_algo = FF_IDCT_SIMPLENEON; | 112 idct_algo = FF_IDCT_SIMPLENEON; |
141 #elif HAVE_ARMV6 | 113 #elif HAVE_ARMV6 |
142 idct_algo = FF_IDCT_SIMPLEARMV6; | 114 idct_algo = FF_IDCT_SIMPLEARMV6; |
143 #elif HAVE_ARMV5TE | 115 #elif HAVE_ARMV5TE |
144 idct_algo = FF_IDCT_SIMPLEARMV5TE; | 116 idct_algo = FF_IDCT_SIMPLEARMV5TE; |
168 } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){ | 140 } else if (idct_algo==FF_IDCT_SIMPLEARMV5TE){ |
169 c->idct_put= simple_idct_put_armv5te; | 141 c->idct_put= simple_idct_put_armv5te; |
170 c->idct_add= simple_idct_add_armv5te; | 142 c->idct_add= simple_idct_add_armv5te; |
171 c->idct = simple_idct_armv5te; | 143 c->idct = simple_idct_armv5te; |
172 c->idct_permutation_type = FF_NO_IDCT_PERM; | 144 c->idct_permutation_type = FF_NO_IDCT_PERM; |
173 #endif | |
174 #if HAVE_IPP | |
175 } else if (idct_algo==FF_IDCT_IPP){ | |
176 c->idct_put= simple_idct_ipp_put; | |
177 c->idct_add= simple_idct_ipp_add; | |
178 c->idct = simple_idct_ipp; | |
179 c->idct_permutation_type= FF_NO_IDCT_PERM; | |
180 #endif | 145 #endif |
181 #if HAVE_NEON | 146 #if HAVE_NEON |
182 } else if (idct_algo==FF_IDCT_SIMPLENEON){ | 147 } else if (idct_algo==FF_IDCT_SIMPLENEON){ |
183 c->idct_put= ff_simple_idct_put_neon; | 148 c->idct_put= ff_simple_idct_put_neon; |
184 c->idct_add= ff_simple_idct_add_neon; | 149 c->idct_add= ff_simple_idct_add_neon; |