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;